一种机器人调度方法、装置、电子设备和存储介质与流程

文档序号:28627281发布日期:2022-01-26 13:45阅读:51来源:国知局
一种机器人调度方法、装置、电子设备和存储介质与流程

1.本技术涉及机器人技术,尤其涉及一种机器人调度方法、装置、电子设备和存储介质。


背景技术:

2.随着人工智能的快速发展,机器人已经逐渐走入人们的生活,为人们提供便利。例如,在同一家门店(如餐厅或酒店等)下,用户可以通过某种呼叫设备(如手机或手表等),获取门店下随机一台机器人或者指定某台机器人,让机器人执行某一特定任务。于是,就出现了如何对机器人进行调度的问题。
3.现有技术中,通常采用时间公平原则进行调度,即按照任务产生的时间依次将各个任务下发至随机或指定的机器人。这种方式虽然能够保证绝对的公平,然而,当参与调度的机器人有多个,在先任务为随机任务,并且为其随机分配了机器人a,而在后任务为指定机器人a的任务时,该在后任务就需要等待在先任务完成后才能进行,从而导致整体调度效率较低,无法确保机器人的利用率。


技术实现要素:

4.本技术提供一种机器人调度方法、装置、电子设备和存储介质,以解决现有技术中调度效率较低,且无法确保机器人利用率的问题。
5.第一方面,本技术提供了一种机器人调度方法,该方法包括:
6.获取各个原始任务队列中位于队首的任务,作为待下发任务;其中,所述原始任务队列包括按任务生成的先后顺序从队首到队尾排序的随机机器人任务队列和至少两个与各机器人对应的指定机器人任务队列,所述待下发任务的类型包括随机型机器人任务和指定型机器人任务;
7.根据所述待下发任务的类型、各机器人的任务数和状态,从所述各机器人中,按照任务生成的先后顺序为所述待下发任务确定待调度机器人,并将所述待下发任务发送至所述待调度机器人;
8.针对所述各个原始任务队列中剩余的任务,重复执行上述操作。
9.第二方面,本技术还提供了一种机器人调度装置,该装置包括:
10.待下发任务获取模块,用于获取各个原始任务队列中位于队首的任务,作为待下发任务,其中,所述原始任务队列包括按任务生成的先后顺序从队首到队尾排序的随机机器人任务队列和至少两个与各机器人对应的指定机器人任务队列,每个原始任务队列中的任务按照任务生成的先后顺序从队首到队尾排序,所述待下发任务的类型包括随机型机器人任务和指定型机器人任务;
11.机器人调度模块,用于根据所述待下发任务的类型、各机器人的任务数和状态,从所述各机器人中,按照任务生成的先后顺序依次为所述待下发任务确定待调度机器人,并将所述待下发任务发送至所述待调度机器人;
12.循环执行模块,用于针对所述各个原始任务队列中剩余的任务,重复执行上述操作。
13.第三方面,本技术还提供了一种电子设备,包括:
14.一个或多个处理器;
15.存储装置,用于存储一个或多个程序,
16.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的机器人调度方法。
17.第四方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的机器人调度方法。
18.本技术的技术方案中,为每个机器人设置相应的指定机器人任务队列,同时还设置了随机机器人任务队列,指定机器人任务队列和随机机器人任务队列中分别放置相应的指定型机器人任务和随机型机器人任务。执行调度策略时,是从各个任务队列中获取位于队首的待下发任务,然后针对这些待下发任务,按照其任务产生的先后顺序进行调度,根据任务类型、各机器人的任务数和状态确定与各待下发任务对应的待调度机器人。如此,由于每次执行调度策略都是针对一个随机任务和各机器人的指定任务来进行调度,避免了现有技术中将所有任务放在一起并按照时间公平原则进行调度的过程中,因在先任务与在后任务在指派机器人的问题上发生冲突时,而导致后面所有的任务被堵塞等待的问题,继而提高机器人的调度效率和利用率。
附图说明
19.图1为本技术实施例一中的机器人调度方法的流程图;
20.图2是本技术实施例二的机器人调度方法中关于如何确定待调度机器人的方法流程图;
21.图3是本技术实施例三中当待下发任务为随机型机器人任务时的机器人调度方法的流程图;
22.图4是本技术实施例四中当待下发任务为指定型机器人任务时的机器人调度方法的流程图;
23.图5是本技术实施例五的机器人调度方法的流程图;
24.图6是本技术实施例六中的机器人调度装置的结构示意图;
25.图7是本技术实施例七中的电子设备的结构示意图。
具体实施方式
26.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。
27.实施例一
28.图1为本技术实施例一提供的机器人调度方法的流程图,本实施例可适用于在同一门店下为用户产生的任务指派负责处理的机器人的情况,该方法可以由机器人调度装置来执行,该装置可以采用软件和/或硬件的方式实现,优选是配置于电子设备中,例如计算
机设备或服务器等。如图1所示,该方法具体包括:
29.s101、获取各个原始任务队列中位于队首的任务,作为待下发任务;其中,所述原始任务队列包括按任务生成的先后顺序从队首到队尾排序的随机机器人任务队列和至少两个与各机器人对应的指定机器人任务队列,所述待下发任务的类型包括随机型机器人任务和指定型机器人任务。
30.具体的,如果门店下有n个机器人,则设置n个指定机器人任务队列和1个随机机器人任务队列,根据用户触发的任务的类型,按照任务产生的时间先后顺序从相应队列的队首排到队尾,也即,队首的任务的产生时间更早。例如,未指定机器人的随机任务甲会放在随机机器人任务队列,而分别指定机器人a、机器人b的指定任务乙和指定任务丙,则分别放在与机器人a和机器人b各自对应的指定机器人任务队列中,如果又产生一个随机任务丁,则会放在随机机器人任务队列中且位于随机任务甲之后。
31.任务产生后都会放置于相应的任务队列中等待下发。调度策略可以按照一定的时间间隔来执行,每次执行调度策略时,则先获取各个原始任务队列中位于队首的任务,并将其作为待下发任务。
32.s102、根据待下发任务的类型、各机器人的任务数和状态,从各机器人中,按照任务生成的先后顺序为待下发任务确定待调度机器人,并将待下发任务发送至待调度机器人。
33.执行调度策略的过程中,按照各个待下发任务生成的先后顺序,依次为各个待下发任务确定待调度机器人。例如,比较所有待下发任务的生成时间,将生成时间最早的任务作为当前待下发任务,并为其确定待调度机器人,将当前待下发任务发送至已确定的待调度机器人。然后再将剩余未处理的待下发任务中生成时间最早的任务作为新的当前待下发任务继续进行调度,以此类推,直到全部待下发任务处理完毕。
34.在确定待调度机器人时,可以根据任务的类型、各机器人的任务数和状态来进行。例如,如果当前待下发任务为随机型机器人任务,则从各机器人中选择任务数最少的机器人作为当前的待调度机器人,这样,可以提高任务处理的效率,以及各个机器人的利用率。如果当前待下发任务为指定型机器人任务,则将该任务指定的机器人作为当前的待调度机器人。
35.当然,还可以结合机器人的状态来进行调度,例如,先从各个机器人中选择当前状态为可呼叫的机器人,然后再从当前可呼叫的机器人中为各个任务确定待调度机器人,从而提高任务下发的成功率。其中,机器人的状态可以根据机器人上报的状态信息来确定。例如,虽然机器人当前的网络状态在线,但是机器人因充电而无法执行任务,这时,该机器人的状态则为不可呼叫。需要说明的是,机器人所处的状态可以根据实际工作场景来确定,本技术实施例对此不作任何限定。
36.s103、针对各个原始任务队列中剩余的任务,重复执行上述操作。
37.具体的,将待下发任务发送到待调度机器人后,则继续针对各个原始任务队列中剩余的任务,按照上述操作重复执行。
38.在一种实施方式中,待调度机器人可以反馈一个接受任务的消息,表明该任务已成功派发,但由于网络延迟等原因,即使待调度机器人能够接受该任务,其反馈消息也可能存在时延。此外,待调度机器人也可能因其他原因无法接受该任务,则不会反馈接受该任务
的消息。因此,本技术实施例中,为了确保任务派发的成功率,可以在接收到待调度机器人接受任务的反馈消息时,才确认待下发任务已成功派发,并将该待下发任务从其所属的原始任务队列中删除,否则仍会保留在其所属的原始任务队列中,并且保留其原本在队列中的位置,以便下次执行调度策略时及时进行派发。当然,除从队列中删除的方式外,对于已成功派发的任务,也可以通过其他方式来标记其已经派发,以达到避免重复派发的目的。
39.按照上述s101-s103的步骤循环执行调度策略,当各个原始任务队列中没有待下发任务,或者没有可调度机器人时,则可以停止执行,并在产生新任务后继续执行。例如,可以按照一定的时间间隔执行上述调度策略,直到满足上述停止条件为止。
40.在一种实施方式中,假如在一家门店下有a、b、c三台机器人,由不同的用户先后发起了甲、乙、丙、丁四个任务。其中,甲未指定机器人,为随机型机器人任务,乙和丙均指定b机器人,丁指定c机器人,乙、丙和丁均为指定型机器人任务。于是,甲在随机机器人队列中,乙和丙在机器人b的指定机器人队列中,乙位于队首,丁在机器人c的指定机器人队列中。此时,机器人a的任务数为0,机器人b的任务数为2,机器人c的任务数为1。执行调度策略时,先从各原始任务队列中获取位于队首的任务,即待下发任务包括甲、乙、丁。其中,按照顺序先为甲进行派发,由于甲为随机型机器人任务,且当前机器人a的任务数最少,因此将机器人a作为甲的待调度机器人,并将任务甲发送至机器人a。接着为任务乙进行派发,任务乙指定机器人b,因此,若机器人b当前处于可呼叫的状态,则将任务乙发送至机器人b。最后为任务丁进行派发,若机器人c当前处于可呼叫的状态,则将任务丁发送至机器人c。此时,当前的全部待下发任务均已派发,若机器人a、b、c均反馈接受任务的消息,则任务甲、乙和丁都会从其所属的原始队列中删除。那么在下一次执行调度策略时,由于删除后的原始队列中只有机器人b的队列中还有一个任务丙,于是为任务丙进行派发。由于任务丙指定机器人b,如果机器人b已经执行完上一个任务乙,并上报状态为可呼叫,那么则可以将任务丙下发至机器人b,并在机器人b反馈已接受的消息后将任务丙从机器人b的指定机器人队列中删除,反之则表明任务丙当前无法派发,因此不会从机器人b的指定机器人队列中删除,以便在下次执行调度策略时继续进行派发。当然,在上述调度过程中,如果有任意机器人在下发了任务后未反馈已接受任务的消息,则相应的任务均不会从其所属的原始任务队列中删除,并保留其在队列中的原始位置,以便在下次执行调度策略时进行派发。
41.需要说明的是,在上述示例中,如果按照现有技术的时间公平原则进行调度,当为任务甲确定待调度机器人时,由于是随机选择,有可能会选择机器人b或机器人c。如果选择机器人b执行任务甲,那么当派发任务乙时,由于任务乙指定机器人b,而此时机器人b正在执行任务甲,需要时间,因此,任务乙只能等待,同样指定机器人b的任务丙自然也需要等待,同时,虽然任务丁指定的机器人是c,但由于任务乙和丙还未下发,因此任务丁也被堵塞等待。如果选择机器人c执行任务甲,将任务乙派发给机器人b后,任务丙和丁仍然需要等待。这样就会导致任务的执行效率大大降低。而按照本技术实施例的技术方案,不仅为随机任务进行派发时考虑了各个机器人当前的任务数,同时,由于指定同一个机器人的任务都放在了同一个队列中,而每次执行调度策略时都是从各个队列中选择一个位于队首的任务作为待下发任务进行调度,因此,不会出现现有技术中因机器人调度相冲突而导致任务无故被堵塞等待的问题。在上面的例子中,当下发任务乙给机器人b后,不会处理任务丙,而是下发任务丁给机器人c,因此,不会造成任务丁的堵塞等待,从而提高了任务的执行效率。
42.本技术实施例的技术方案中,为每个机器人设置相应的指定机器人任务队列,同时还设置了随机机器人任务队列。执行调度策略时,是从各个任务队列中获取位于队首的待下发任务,然后针对这些待下发任务,按照其任务产生的先后顺序进行调度,根据任务类型、各机器人的任务数和状态确定与各待下发任务对应的待调度机器人。接下来,待调度机器人接受的待下发任务即可从其所属的原始任务队列中删除,然后针对删除后的各个原始任务队列,重复执行上述调度策略,直到没有待下发任务或者没有可调度机器人为止。如此,由于每次执行调度策略都是针对一个随机任务和各机器人的指定任务来进行调度,避免了现有技术中按照时间公平原则进行调度的过程中,因在先任务与在后任务在指派机器人的问题上发生冲突时,而导致后面所有的任务被堵塞等待的问题,继而提高机器人的调度效率和利用率。
43.此外,在一种实施方式中,在确定待调度机器人之前,还可以对当前待下发任务的状态进行检验,判断当前待下发任务的状态是否已被取消,如果已被取消,则可以不必再继续为其确定执行的机器人,直接将其从原始任务队列中删除,然后也从待下发任务队列中删除即可。另外,每次下发任务之后,只有接收到机器人反馈的已接受任务的消息,才表明任务派发成功,此时该任务的状态为已接受,可以将其从原始任务队列中和待下发队列中删除,否则仍将该任务保留在原始任务队列中。通过对当前待下发任务状态的检验,可以避免对派发成功的任务进行重复派发,还能避免因将用户已经取消的任务进行派发而浪费机器人资源,从而进一步提高任务派发的准确性,提高机器人调度的效率。
44.在另一种实施方式中,本技术实施例的方法还可以包括:在确定待调度机器人的过程中,为每个待下发任务进行调度计时,得到调度时间。其中,调度时间用于:在确定待调度机器人之前,如果当前待下发任务的调度时间超出预设阈值,则将当前待下发任务从其所属的原始任务队列中删除,再从待下发任务队列中删除。也就是说,调度策略在针对每个待下发任务进行执行的过程中都会计时,那么如果该待下发任务由于尚未收到机器人反馈已接受的消息等原因,还没有从原始任务队列中删除,那么当该任务再次成为当前的待下发任务时,会对其调度时间进行判断。如果其调度时间超时,那么就认为任务失败,可以从其所属的原始任务队列中删除;如果未超时,则可以继续对其进行派发。同时还需要说明的是,从开始计时开始,如果任务尚未从原始任务队列中删除,那么计时就一直进行,直到调度时间超出预设阈值,或者任务完成并从原始任务队列中删除为止。由此,通过对调度时间是否超时的监控,可以防止尚未完成的任务无限制的处于调度策略的循环中,不仅影响任务的顺利完成,而且降低机器人的利用率。
45.实施例二
46.图2为本技术实施例二提供的机器人调度方法中关于如何确定待调度机器人的方法流程图,本实施例在上述实施例的基础上对确定待调度机器人的方法流程,即上述实施例中的s102,进行进一步地优化。如图2所示,所述方法包括:
47.s201、按照任务生成的先后顺序对待下发任务进行排序,根据排序后的待下发任务组成待下发任务队列。
48.s202、从待下发任务队列中获取位于队首的任务作为当前待下发任务。
49.s203、根据当前待下发任务的类型、各机器人的任务数和状态,从各机器人中为当前待下发任务确定待调度机器人,并将当前待下发任务下发至待调度机器人。
50.s204、针对待下发任务队列中剩余的待下发任务,判断当前待下发任务队列是否为空,如果为否,则返回执行s202,如果为是,则表明当前待下发任务队列中的任务已全部处理完毕。
51.执行一次调度策略,就是对当前待下发任务队列中的各个任务进行派发,为各个任务确定待调度的机器人。该过程也是一个循环的过程,即按照待下发任务队列中各任务生成的先后顺序进行派发,直到待下发任务队列为空为止。
52.这里需要说明的是,将当前待下发任务下发至待调度机器人后,还可以将该当前待下发任务从待下发任务队列中删除,但是该当前待下发任务仍然会在其所属的原始任务队列中,直到执行该待下发任务的机器人返回已接受该任务的消息,才会从原始任务队列中删除该待下发任务。
53.本技术实施例的技术方案,将待下发任务组成待下发任务队列,并按照任务生成的先后顺序对待下发任务队列中的任务确定待调度机器人并进行派发,确保了待下发任务队列中各个任务的时间公平性。同时,对于尚未确定机器人已接受的任务,只会从当前的待下发任务队列中删除,而不会从其所属的原始队列中删除,因此,直到该任务被机器人接受之前,还会再次出现在新的待下发任务中,确保了每一个任务都会下发到机器人并且被机器人执行,提高了任务执行的成功率。
54.实施例三
55.图3是本技术实施例三中当待下发任务为随机型机器人任务时的机器人调度方法的流程图。本实施例在上述实施例的基础上进行进一步地优化。如图3所示,所述方法包括:
56.s301、按照任务生成的先后顺序对待下发任务进行排序,根据排序后的待下发任务组成待下发任务队列。
57.s302、从待下发任务队列中获取位于队首的任务作为当前待下发任务。
58.s303、判断当前待下发任务的类型,如果当前待下发任务为随机型机器人任务,则执行s304。
59.s304、根据各机器人的当前状态,获取当前可调度机器人及其对应的指定机器人任务队列中的任务数。
60.示例性的,可以先从当前网络在线的机器人中,去除禁止呼叫状态的机器人,然后再去除历史呼叫过且拒绝接受任务的机器人。此时,如果去除之后已经没有剩余机器人,则判定任务失败,可以通知调用方派发任务失败,并将当前待下发任务从其所属的原始队列中删除。如果去除之后仍然存在剩余机器人,那么可以再从中去除掉暂时不可呼叫的机器人,如果取出后已经没有剩余机器人,那么表明当前待下发任务暂时无法下发,可以等待下次调度,将当前待下发任务从当前待下发任务队列中删除,但仍保留在其所属的原始任务队列中。而如果经过上述去除操作之后仍然存在剩余机器人,那么该剩余的机器人则为所述当前可调度机器人。经过上述去除操作,针对当前可调度机器人进行任务派发,则可以进一步提高任务下发的成功率,提高机器人调度效率。
61.s305、判断当前待下发任务是否曾下发至当前可调度机器人中的任意目标机器人,如果判断为是,则执行s306后执行s308,如果判断为否,则执行s307后执行s308。
62.s306、再次将目标机器人作为当前待下发任务的待调度机器人。
63.s307、选择任务数最少的当前可调度机器人作为当前待下发任务的待调度机器
人。
64.s308、将当前待下发任务发送至待调度机器人。
65.具体的,由于任务下发后需要收到机器人已接受的消息才会从其所属的原始任务队列中删除,而该消息并不一定立刻收到。因此,每次执行调度策略时,有可能存在当前待下发任务已经下发过的情况。因此,如果确认当前待下发任务曾下发至当前可调度机器人中的任意目标机器人,那么有可能是任务没有下发成功,或者该目标机器人尚未接受。因此,需要再次将当前待下发任务下发至该目标机器人。这样,可以避免将同一个任务下发至不同机器人而导致任务被重复处理的情况发生,有利于提高机器人的调度效率。
66.但是还需要说明的是,如果当前待下发任务曾经下发过,但是下发的机器人并不在当前可调度机器人的范围内,则表明当时下发的机器人由于某种原因不仅未接受该任务,而且现在不可调度,那么则不必再次下发至该机器人,而是与当前待下发任务没有下发过的情况一样,执行s307,为其确定待调度机器人。具体而言,可以是选择任务数最少的当前可调度机器人作为当前待下发任务的待调度机器人。而针对随机型机器人任务,选择当前待处理任务数最少的机器人来执行,则可以从最大程度上降低后续任务堵塞等待的可能性,提高任务处理的效率和机器人的利用率。
67.进一步的,在一种实施方式中,所述再次将目标机器人作为当前待下发任务的待调度机器人,包括:
68.判断对目标机器人能否成功获取机器人锁;
69.如果判断为是,则为目标机器人加锁,并再次将目标机器人作为当前待下发任务的待调度机器人;
70.如果判断为否,则表示当前待下发任务已下发。
71.具体的,为避免同时将多个不同的任务下发到同一个机器人,同时也为了避免在调度机器人时该机器人还受到其他远程请求等的影响,可以每次在给机器人发送任务之前为机器人加锁,并可以设定加锁的时间,例如6s。那么在该时间之内,该机器人都不会再接受其他的任务或指令。而如果某机器人尚未被锁,那么就可以成功获取该机器人锁。因此,在上述操作中,如果能够成功获取目标机器人的锁,则表明目标机器人尚未被调度,于是可以为目标机器人加锁,并再次将目标机器人作为当前待下发任务的待调度机器人,将当前待下发任务发送至目标机器人。反之,如果无法成功获取锁,表明在加锁时间范围内,已经向目标机器人下发过一次当前待下发任务。于是,后续可将当前待下发任务从当前的待下发任务队列中移除并等待下次调度即可。
72.相应的,所述选择任务数最少的当前可调度机器人作为所述当前待下发任务的待调度机器人,可以包括:
73.按照任务数从小到大的顺序,对当前可调度机器人进行排序;
74.按照排序后的顺序,依次获取当前可调度机器人的机器人锁;
75.对首次成功获取机器人锁的当前可调度机器人加机器人锁,并将其作为当前待下发任务的待调度机器人。
76.其中,由于任务数最少的机器人未必能成功获取锁,因此,可以对排序的当前可调度机器人依次尝试获取机器人锁,哪一个机器人先能获取,就将该机器人作为待调度机器人。
77.s309、为当前待下发任务设置调度成功标记。
78.s310、从随机机器人任务队列中获取当前待下发任务的下一个任务,并将其放入当前的待下发任务队列。
79.s311、对当前的待下发任务队列重新进行排序。
80.s312、判断重新排序的待下发任务队列中剩余的待下发任务是否为空,如果判断为否,则返回执行s302。
81.具体的,在针对随机型机器人任务执行调度策略的过程中,在将当前待下发任务发送至待调度机器人之后,执行s309-s311。其中,如果任意待下发任务被标记调度成功,还可以将该任务从当前待调度任务队列中删除,然后从随机机器人任务队列中获取其下一个任务,并和当前其他的待下发任务一起组成新的待下发任务队列,对新的待下发任务队列中的各个任务重新进行排序,针对该新的待下发任务列表返回执行s302,再次进行机器人调度,直到队列中的任务为空,则表示完成当前周期的调度策略。而这样做的目的,则是由于对随机型机器人任务而言,当前任务被下发之后,可能在随机机器人任务队列中的下一个随机型机器人任务还存在可以随机分配的机器人,如果不将该下一个随机型机器人任务放到待下发任务队列中,则会影响该任务的执行。因此,为了提高任务执行的效率,则继续将随机机器人任务队列中的下一个任务也放到当前的待下发任务队列中重新进行排序和调度。
82.本技术实施例的技术方案中,针对随机型机器人任务,为其选择当前可呼叫且任务数最少的机器人进行调度,确保了任务下发的成功率,同时也降低了后续任务被阻塞等待的可能性,继而提高机器人的利用率。
83.实施例四
84.图4是本技术实施例四中当待下发任务为指定型机器人任务时的机器人调度方法的流程图。本实施例在上述实施例的基础上进行进一步地优化。如图4所示,所述方法包括:
85.s401、按照任务生成的先后顺序对待下发任务进行排序,根据排序后的待下发任务组成待下发任务队列。
86.s402、从待下发任务队列中获取位于队首的任务作为当前待下发任务。
87.s403、判断当前待下发任务的类型,如果是指定型机器人任务,则执行s404。
88.s404、判断指定机器人是否当前可调度,如果判断为是,则执行s405,如果判断为否,则执行s406。
89.例如,如果当前待下发任务中指定的机器人上报状态为可呼叫,那么可以认为当前是可调度的。
90.s405、判断对指定机器人能否成功获取机器人锁,如果判断为是,则执行s407,如果判断为否,则执行s410。
91.s407、为指定机器人加锁,并将指定机器人作为当前待下发任务的待调度机器人。
92.s408、将当前待下发任务发送至待调度器人。
93.s410、将当前待下发任务从当前待下发任务队列中删除。
94.关于为机器人加锁的目的,与上述实施例相同,此处不再赘述。
95.s411、判断当前待下发任务队列是否为空,如果判断为否,则表示仍有任务未下发,于是返回执行s402继续执行本轮调度策略,反之,则结束本轮调度策略。
96.在上述s404中,判断指定机器人是否可调度,如果判断为不可调度,则继续执行s406。
97.s406、判断指定机器人是否为暂时不可调度,如果判断为是,则执行s410,如果判断为否,则执行s409后再执行s410。
98.s409、将当前待下发任务从其所属的原始任务队列中删除。
99.其中,有一些不可调度机器人可能是因临时问题而暂时不可调度,稍后还会恢复到可调度的状态,那么下一次再派发任务时就有可能会成功。因此,当指定机器人只是暂时不可调度时,则只将当前待下发任务从当前待下发任务队列中删除,等待下次继续为其指派该指定机器人。而当指定机器人并不是暂时不可调度时,则表明该指定机器人确实无法进行调度,则将当前待下发任务直接从其所属的原始任务队列中删除即可,该任务派发失败,可以通知任务调用方。
100.本技术实施例的技术方案中,在确定指定的机器人当前可调度后才会将指定型机器人任务下发至该指定机器人,保证了任务下发的成功率。
101.实施例五
102.图5是本技术实施例五的机器人调度方法的流程图。
103.如图所示,通过任务调度定时器,每三秒启动一次调度策略(s1),并根据门店中可用机器人,为每个机器人设置对应的指定机器人任务队列ssr,以及一个随机机器人任务队列sss(s2)。实时产生的任务会根据类型分别放入相应的队列中。然后,从ssr和sss队列中分别获取队首的任务,并按照任务产生的时间进行排序,排序后组成待下发任务队列ss(s3)。还要获取门店下当前机器人列表rl(s4)。
104.每次执行调度策略,都是针对待下发任务队列进行调度的循环过程。首先从ss中获取队首的任务作为当前待下发任务(s5)。然后先对该任务的状态进行判断(s6),如果该任务已被取消或者已接受,那么则将其从ssr或sss队列中移除(s7),此时,经过是否已到达队尾的判断(s37),如果待下发任务队列中尚未到达队尾,仍有未下发的任务,那么将当前待下发任务弹出ss后(s51),返回执行获取ss中队首任务的步骤。如果当前待下发任务没有被取消或者已接受,则继续判断其调度时间是否超时(s8),如果超时,则判定任务失败(s9),将其从原始队列中删除后(s10),执行是否到达队尾的判断步骤(s37),如果未超时,则继续对该任务进行派发,判断该任务是否为随机任务(s11)。
105.如果当前待下发任务为随机型机器人任务,则先从rl列表中去除禁止呼叫状态机器人(s12),再去除历史呼叫且拒绝机器人(s13),此时如果rl列表为空(s14),则判定为任务派发失败(s15),将任务移除原始sss队列(s16);如果rl列表不为空,则标记调度开始,进行计时(s17),之后去除暂不可呼叫机器人(s18),若此时rl列表为空(s19),则等待下次再对当前待下发任务进行调度(s21),如果不为空,则为该任务确定执行的机器人。具体的,先判断当前待下发任务是否曾下发过某机器人且该机器人仍然在当前的rl列表中(s20),如果是,则继续判断是否成功获取机器人锁(s22),如果成功,则为机器人加锁6s后(s24),将任务再次下发至该机器人(s27),同时标记调度成功(s29);如果不能成功获取锁,则表明当前机器人6s内已下发过一次任务,等待下次进行调度即可(s25);如果任务未曾下发至某机器人,或者虽然下发过但是该机器人未在当前rl列表中,则在剩余机器人中按照对应ssr队列长度从小到大排序(s23),也即按照机器人的任务数进行排序,对排序后各机器人依次获
取机器人锁(s26);判断获取机器人锁是否成功(s28),并对首次成功获取锁的机器人确定为当前待调度机器人,给该机器人加锁(s30),将任务下发至该机器人(s32)。且在任务下发该机器人后,则标记调度成功(s33)。还需要说明的是,在对随机任务进行派发的过程中,还需要判断随机调度是否标记成功(s34),如果成功,则从sss中获取下一个任务(s35)并将其放入ss中重新进行排序(s36),之后针对排序后的新的ss队列,再次执行本轮调度策略。
106.如果当前待下发任务为指定型机器人任务,则首先判断指定机器人当前是否标记有任务(s38),如果是,则等待下次调度(s39),如果否,则标记调度开始并及时(s40)。之后,先判断指定机器人的状态是否可呼叫(s41),如果不可呼叫则继续判断是否暂时不可呼叫(s43)。如果判断指定机器人的状态为可呼叫,则将该指定机器人作为待调度机器人(执行s42、s49、s50和s46),如果指定机器人暂时不可呼叫,则等待下次调度(s44),如果不是暂时不可呼叫,则表明机器人状态为禁止呼叫(s45),此时标记任务失败,并通知调用方(s47),然后将该任务从原始ssr队列中移除(s48)。之后,如果待调度队列ss中尚未到达队尾,则将当前待调度任务弹出ss队列中,继续执行从ss中获取队首任务的步骤,继续进行本轮调度策略。
107.当ss队列为空,则本轮调度策略执行完毕,等待下一个执行周期启动下一轮调度策略即可。
108.本技术实施例的技术方案中,为每个机器人设置相应的指定机器人任务队列,同时还设置了随机机器人任务队列。执行调度策略时,是从各个任务队列中获取位于队首的待下发任务,然后针对这些待下发任务,按照其任务产生的先后顺序依次进行调度,根据任务类型、各机器人的任务数和状态确定与各待下发任务对应的待调度机器人。接下来,待调度机器人接受的待下发任务即可从其所属的原始任务队列中删除,然后针对删除后的各个原始任务队列,重复执行上述调度策略,直到没有待下发任务或者没有可调度机器人为止。如此,由于每次执行调度策略都是针对一个随机任务和各机器人的指定任务来进行调度,避免了现有技术中按照时间公平原则进行调度的过程中,因在先任务与在后任务在指派机器人的问题上发生冲突时,而导致后面所有的任务被堵塞等待的问题,继而提高机器人的调度效率和利用率。
109.实施例六
110.图6是本技术实施例六中的机器人调度装置的结构示意图。本实施例可适用于在同一门店下为用户产生的任务指派负责处理的机器人的情况。该装置可实现本技术任意实施例所述的机器人调度方法。如图6所示,该装置具体包括:
111.待下发任务获取模块,用于获取各个原始任务队列中位于队首的任务,作为待下发任务,其中,所述原始任务队列包括按任务生成的先后顺序从队首到队尾排序的随机机器人任务队列和至少两个与各机器人对应的指定机器人任务队列,每个原始任务队列中的任务按照任务生成的先后顺序从队首到队尾排序,所述待下发任务的类型包括随机型机器人任务和指定型机器人任务;
112.机器人调度模块,用于根据所述待下发任务的类型、各机器人的任务数和状态,从所述各机器人中,按照任务生成的先后顺序依次为所述待下发任务确定待调度机器人,并将所述待下发任务发送至所述待调度机器人;
113.循环执行模块,用于针对所述各个原始任务队列中剩余的任务,重复执行上述操
作。
114.可选的,所述机器人调度模块602包括:
115.待下发任务队列组成单元,用于按照任务生成的先后顺序对所述待下发任务进行排序,根据排序后的待下发任务组成待下发任务队列;
116.队首任务获取单元,用于从所述待下发任务队列中获取位于队首的任务作为当前待下发任务;
117.待调度机器人确定单元,用于根据所述当前待下发任务的类型、各机器人的任务数和状态,从所述各机器人中为所述当前待下发任务确定待调度机器人,并将所述当前待下发任务下发至所述待调度机器人;
118.循环执行单元,用于针对待下发任务队列中剩余的待下发任务,返回执行所述从待下发任务队列中获取位于队首的任务作为当前待下发任务的操作,直到待下发任务队列为空为止。
119.可选的,所述待调度机器人确定单元包括:
120.可调度机器人获取子单元,用于根据所述各机器人的当前状态,获取当前可调度机器人及其对应的指定机器人任务队列中的任务数;
121.待调度机器人确定子单元,用于选择任务数最少的当前可调度机器人作为所述当前待下发任务的待调度机器人。
122.可选的,所述待调度机器人确定子单元具体用于:
123.按照所述任务数从小到大的顺序,对所述当前可调度机器人进行排序;
124.按照所述排序后的顺序,依次获取所述当前可调度机器人的机器人锁;
125.对首次成功获取机器人锁的当前可调度机器人加机器人锁,并将其作为所述当前待下发任务的待调度机器人。
126.可选的,所述待调度机器人确定单元还包括判断处理子单元,具体用于:
127.判断所述当前待下发任务是否曾下发至所述当前可调度机器人中的任意目标机器人;
128.如果判断为是,则再次将所述目标机器人作为所述当前待下发任务的待调度机器人;
129.如果判断为否,则执行所述选择任务数最少的当前可调度机器人作为所述当前待下发任务的待调度机器人的操作。
130.可选的,所述判断处理单元在执行再次将所述目标机器人作为所述当前待下发任务的待调度机器人的操作时,具体用于:
131.判断对所述目标机器人能否成功获取机器人锁;
132.如果判断为是,则为所述目标机器人加锁,并再次将所述目标机器人作为所述当前待下发任务的待调度机器人;
133.如果判断为否,则表示所述当前待下发任务已下发。
134.可选的,所述待调度机器人确定单元还包括调度标记处理子单元,在所述待下发任务的类型为随机型机器人任务,并且所述当前待下发任务已下发至所述待调度机器人时,所述调度标记处理子单元具体用于:
135.为所述当前待下发任务设置调度成功标记;
136.从所述随机机器人任务队列中获取所述当前待下发任务的下一个任务,并将其放入当前的待下发任务队列;
137.对所述当前的待下发任务队列重新进行排序,并针对所述重新排序的待下发任务队列中剩余的待下发任务,执行所述从所述待下发任务队列中获取位于队首的任务作为当前待下发任务的操作。
138.可选的,所述待调度机器人确定单元还包括指定型机器人任务第一处理子单元,具体用于:
139.响应于所述指定型机器人任务对应的指定机器人当前可调度,判断对所述指定机器人能否成功获取机器人锁;
140.如果判断为是,则为所述指定机器人加锁,并将所述指定机器人作为所述当前待下发任务的待调度机器人;
141.如果判断为否,则直接执行所述将所述当前待下发任务从所述待下发任务队列中删除的操作。
142.可选的,所述待调度机器人确定单元还包括指定型机器人任务第二处理子单元,具体用于:
143.响应于所述指定型机器人任务对应的指定机器人当前不可调度,则判断所述指定机器人是否为暂时不可调度;
144.如果判断为是,则直接执行所述将所述当前待下发任务从所述待下发任务队列中删除的操作;
145.如果判断为否,则将所述当前待下发任务从其所属的原始任务队列中删除后,再执行所述将所述当前待下发任务从所述待下发任务队列中删除的操作。
146.可选的,所述机器人调度模块602还包括状态检验单元,具体用于:
147.在所述确定待调度机器人之前,如果所述当前待下发任务的状态为已接受或已取消,则将所述当前待下发任务从其所属的原始任务队列中删除,并转为执行所述将所述当前待下发任务从所述待下发任务队列中删除的操作。
148.可选的,所述机器人调度模块602还包括调度计时单元,用于:
149.在所述确定待调度机器人的过程中,为每个所述待下发任务进行调度计时,得到调度时间;
150.其中,所述调度时间用于:在所述确定待调度机器人之前,如果所述当前待下发任务的调度时间超出预设阈值,则将所述当前待下发任务从其所属的原始任务队列中删除,再从所述待下发任务队列中删除。
151.本技术实施例所提供的机器人调度装置可执行本技术任意实施例所提供的机器人调度方法,具备执行方法相应的功能模块和有益效果。
152.实施例七
153.图7为本技术实施例七提供的一种计算机设备的结构示意图。图7示出了适于用来实现本技术实施方式的示例性计算机设备712的框图。图7显示的计算机设备712仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
154.如图7所示,计算机设备712以通用计算设备的形式表现。计算机设备712的组件可以包括但不限于:一个或者多个处理器或者处理单元716,系统存储器728,连接不同系统组
件(包括系统存储器728和处理单元716)的总线718。
155.总线718表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
156.计算机设备712典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备712访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
157.系统存储器728可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)730和/或高速缓存存储器732。计算机设备712可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统734可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线718相连。存储器728可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本技术各实施例的功能。
158.具有一组(至少一个)程序模块742的程序/实用工具740,可以存储在例如存储器728中,这样的程序模块742包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块742通常执行本技术所描述的实施例中的功能和/或方法。
159.计算机设备712也可以与一个或多个外部设备714(例如键盘、指向设备、显示器724等)通信,还可与一个或者多个使得用户能与该计算机设备712交互的设备通信,和/或与使得该计算机设备712能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口722进行。并且,计算机设备712还可以通过网络适配器720与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器720通过总线718与计算机设备712的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备712使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
160.处理单元716通过运行存储在系统存储器728中的程序,从而执行各种功能应用以及数据处理,例如实现本技术实施例所提供的机器人调度方法。
161.实施例八
162.本技术实施例八还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本技术实施例所提供的机器人调度方法。
163.本技术实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具
有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
164.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
165.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
166.可以以一种或多种程序设计语言或其组合来编写用于执行本技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
167.注意,上述仅为本技术的较佳实施例及所运用技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术构思的情况下,还可以包括更多其他等效实施例,而本技术的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1