1.本说明书涉及仓储物流技术领域,特别涉及一种容器搬运任务的分配方法。本说明书同时涉及一种容器搬运任务的分配装置,一种计算设备,以及一种计算机可读存储介质。
背景技术:2.近年来,随着电子商务的快速发展,用户订单数量呈几何倍数增长,一个仓库需要存储海量的商品,如何对这些商品进行自动拣选,成为提高仓储效率的关键。目前,仓库多由机器人实现商品的自动拣选,机器人可以将装有商品的目标容器从待拣选货架上搬运至指定的工作站进行拣选,也即智能仓储系统中多机器人协调作业,保证了仓储系统高效地运行,而容器搬运任务分配的好坏直接影响整个仓储系统的工作效率,并直接关系到仓储系统中各个机器人能否最大的发挥其自身能力。
3.现有技术中,匈牙利算法是求解任务分配最常用的算法,匈牙利算法的核心是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法,以曼哈顿距离为代价函数,求解容器搬运任务的任务分配。然而,上述任务分配算法中,仅考虑了容器与机器人之间的距离,导致任务分配不合理,从而导致仓储系统中各个机器人不能最大的发挥其自身能力,容器搬运任务的执行效率较低,进而需要更合理更准确的方法进行容器搬运任务的分配操作或者处理。
技术实现要素:4.有鉴于此,本说明书实施例提供了一种容器搬运任务的分配方法。本说明书同时涉及一种容器搬运任务的分配装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
5.根据本说明书实施例的第一方面,提供了一种容器搬运任务的分配方法,包括:
6.确定当前待分配的至少一个容器搬运任务和至少一个候选机器人;
7.确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,其中,执行机器人为已分配任务对应的机器人,已分配任务与第一容器搬运任务为同一巷道的容器搬运任务;
8.根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价;
9.根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果。
10.根据本说明书实施例的第二方面,提供了一种容器搬运任务的分配装置,包括:
11.第一确定模块,被配置为确定当前待分配的至少一个容器搬运任务和至少一个候选机器人;
12.第二确定模块,被配置为确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,其中,执行机器人为已分配任务对应的机器人,已分配任务与第一容器搬运任务为同一巷道的容器搬运任务;
13.第三确定模块,被配置为根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价;
14.第四确定模块,被配置为根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果。
15.根据本说明书实施例的第三方面,提供了一种计算设备,包括:
16.存储器和处理器;
17.存储器用于存储计算机可执行指令,处理器用于执行计算机可执行指令,以实现上述的容器搬运任务的分配方法的步骤。
18.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述的容器搬运任务的分配方法的步骤。
19.本说明书提供的容器搬运任务的分配方法,确定当前待分配的至少一个容器搬运任务和至少一个候选机器人;确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,其中,执行机器人为已分配任务对应的机器人,已分配任务与第一容器搬运任务为同一巷道的容器搬运任务;根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价;根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果。
20.这种情况下,确定出当前待分配的至少一个容器搬运任务和至少一个候选机器人后,可以确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,后续结合该路径长度和该搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,各个容器搬运任务均可以作为第一容器搬运任务,各个候选机器人均可以作为第一候选机器人,也即针对任一容器搬运任务,可以确定出其与各个候选机器人之间的匹配代价,根据各个容器搬运任务与各个候选机器人之间的匹配代价,可以确定各个容器搬运任务的分配结果,从而确定出容器搬运任务与候选机器人之间的最优匹配,将容器搬运任务分配给最合适的候选机器人。
21.如此,在确定容器搬运任务和候选机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
附图说明
22.图1是本说明书实施例提供的一种仓储系统的容器搬运示例图;
23.图2是本说明书一实施例提供的一种容器搬运任务的分配方法的流程图;
24.图3是本说明书一实施例提供的一种容器搬运任务的执行过程示意图;
25.图4a是本说明书一实施例提供的第一种匹配代价矩阵的示意图;
26.图4b是本说明书一实施例提供的第二种匹配代价矩阵的示意图;
27.图4c是本说明书一实施例提供的第三种匹配代价矩阵的示意图;
28.图5是本说明书一实施例提供的一种容器搬运任务的分配方法的处理过程示意图;
29.图6是本说明书一实施例提供的一种容器搬运任务的分配装置的结构示意图;
30.图7是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
31.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
32.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
33.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
34.在智能仓储系统中,多机器人协调作业,保证仓储系统高效地运行,多机器人任务分配是多机器人系统应用的基础,能够充分体现系统决策层的组织形式和运行机制,任务分配的好坏直接影响整个仓储系统的工作效率,并直接关系到仓储系统中各个机器人能否最大的发挥其自身能力。随着系统中机器人数目和容器搬运任务难度的增加,任务分配问题就显得越来越重要。
35.在robot shuttle(rs)系列机器人运作的容器到人(即搬运容器至拣选工作站)出库场景中,rs系列机器人有多个存储位,可同时执行多个容器搬运任务。图1是本说明书实施例提供的一种仓储系统的容器搬运示例图,如图1所示,仓储系统中包括货架区和拣选工作站,每个货架区上可以存放容器,当某容器需要从货架区搬运至拣选工作站时,即触发对象的容器搬运任务,一个容器搬运任务起点为货架区的存储位,终点为拣选工作站,机器人依次执行取容器任务和送容器任务,取容器任务是指将货架区的容器拿取出来放置在机器人自身的存储位上,送容器任务是指机器人将自身存储位上的容器运送至拣选工作站,完成出库操作。在此场景下,要解决的核心问题是哪些容器搬运任务分配给哪些机器人,一个机器人执行多个容器搬运任务的执行顺序,rs系列机器人的任务分配是典型的组合优化问题。
36.现有技术中,匈牙利算法是求解任务分配最常用的算法,匈牙利算法是基于hall(霍尔)定理中充分性证明的思想,该算法的核心就是寻找增广路径,它是一种用增广路径
求二分图最大匹配的算法。以曼哈顿距离(曼哈顿距离也叫做计程车几何,也就是欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和)为代价函数使用匈牙利算法求解容器到人场景下的任务分配算法有很多缺陷:1)当任务存在不同优先级时,严格按照优先级分配导致优化空间很小;2)有巷道的仓储布局中,曼哈顿距离存在较大的误差,例如,位在同一水平线上的相邻两个巷道的两个货位,若使用曼哈顿距离,无法包含换巷道需要付出的距离代价;3)对于rs系列机器人,任务分配时若只考虑距离,不考虑巷道内取容器点位的占用情况和巷道内已存在的机器人数,会导致巷道内机器人扎堆,造成严重的等待与拥堵。
37.为了解决上述问题,本说明书实施例中设计了考虑拥堵的rs系列机器人任务分配与编排算法,该方法采用两步式,先对rs系列机器人进行任务分配,然后,对机器人要执行的任务进行编排。如此,在确定容器搬运任务和机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
38.在本说明书中,提供了一种容器搬运任务的分配方法,本说明书同时涉及一种容器搬运任务的分配装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
39.图2是本说明书一实施例提供的一种容器搬运任务的分配方法的流程图,具体包括以下步骤:
40.步骤202:确定当前待分配的至少一个容器搬运任务和至少一个候选机器人。
41.需要说明的是,仓储系统包括仓库储存区和工作站区,仓库储存区包括多个呈矩阵排列的货架,货架上可以存放容器,该容器是指用于储存对象的结构,该对象可以为需要进行拣选的物品,此时容器可以为储存物品的货箱;工作站区包括至少一个工作站,工作站被配置为用于对容器进行拣选处理。
42.具体的,容器搬运任务是指将容器从货架上搬运至工作站,容器搬运任务分为取容器任务和运容器任务,其中是指将货架区的容器拿取出来放置在机器人自身的存储位上,送箱任务是指机器人将自身存储位上的容器运送至拣选工作站,完成出库操作。
43.实际应用中,仓储系统可以先获取容器搬运任务列表和机器人列表,容器搬运任务列表中包括有各个待执行的容器搬运任务,机器人列表中包括有各个可选的机器人,每个机器人上设置有至少一个存储位。初始时各个待执行的容器搬运任务均未分配,此时当前待分配的至少一个容器搬运任务为容器搬运任务列表中的各个任务,且此时各个可选的机器人的存储位均为空,各个机器人均可以作为候选机器人。若经过至少一轮匹配后,确定了某容器搬运任务分配给某候选机器人,此时该容器搬运任务为已分配任务,容器搬运列表中包括的各个容器搬运任务除去该已分配任务剩余的任务为当前待分配的容器搬运任务,各个机器人中当前还有剩余存储位的机器人可以作为候选机器人,存储位全部占用的机器人不参与后续任务的分配。
44.其中,容器搬运任务和机器人之间的分配关系可以基于任务分配表记录,初始时任务分配表中为空,经过至少一轮匹配后,任务分配表中可以记载当前确定出的容器搬运任务对应的机器人,如容器搬运任务i分配给机器人j。
45.本技术实施例中,可以基于容器搬运任务列表,以及当前确定分配关系的已分配任务,确定当前待分配的至少一个容器搬运任务,基于机器人列表中各个可选的机器人的存储位占用情况,确定至少一个候选机器人,从而便于后续继续确定当前待分配的至少一个容器搬运任务与至少一个候选机器人之间的分配关系,完成各个容器搬运任务的分配。
46.本实施例一个可选的实施方式中,在获取到各个当前待分配的容器搬运任务后,可以基于优先级对各个容器搬运任务进行梯队划分,也即确定当前待分配的至少一个容器搬运任务和至少一个候选机器人之后,还包括:
47.确定至少一个容器搬运任务的优先级;
48.确定至少一个候选机器人的总剩余存储位;
49.根据优先级和总剩余存储位,对至少一个容器搬运任务进行划分,获得至少一个梯队的搬运任务集合。
50.需要说明的是,每个容器搬运任务均设置有对应的优先级,不同容器搬运任务的优先级可以相同,也可以不同,容器搬运任务的优先级可以表示容器搬运任务的重要程度,即优先执行的程度。其中,容器搬运任务的优先级可以使用数字代表,数字越大表示优先级越高,或者数字越小表示优先级越高均可,可以自定义优先级的表示方式。
51.实际应用中,仓储系统可以从容器搬运任务列表中读取各个容器搬运任务的优先级,然后从中确定出当前待分配的各个容器搬运任务的优先级。另外,可以基于机器人列表查找确定各个候选机器人的总存储位,并基于任务分配表确定当前已分配的存储位数目,从而确定出各个候选机器人的总剩余存储位。之后,根据优先级和总剩余存储位,对至少一个容器搬运任务进行划分,获得至少一个梯队的搬运任务集合。
52.具体实现时,根据候选机器人的总剩余存储位和各个容器搬运任务的优先级,对容器搬运任务划分任务梯队时,第一梯队的搬运任务集合为加入后未超出各个候选机器人的总剩余存储位的所有容器搬运任务的集合,即不存在竞争关系,均能被候选机器人执行的任务集合;第二梯队的搬运任务集合为加入第一梯队会导致第一梯队任务数超出各个候选机器人的总剩余存储位的任务集合,即存在竞争关系,需要竞争第一梯队剩余的存储位的任务集合;第三梯队的搬运任务集合为剩余优先级下的任务集合,即优先级较低,不存在竞争力,此轮不会被候选机器人执行的任务集合。
53.示例的,有20个容器搬运任务,1-5号优先级为0,6-10号优先级为1,11-15号优先级为2,16-20号优先级为3,优先级值越小表示优先级越高,假设有2个候选机器人,每个候选机器人有6个存储位,即各个候选机器人的总剩余存储位为12个;根据任务梯队划分规则,1-10号容器搬运任务为该两个候选机器人肯定可以满足的任务,不存在任何竞争关系,属于第一梯队的搬运任务集合;11-15号容器搬运任务加入第一梯队后会超出各个候选机器人的总剩余存储位,因而11-15号容器搬运任务需要竞争剩余的2个存储位,属于第二梯队的搬运任务集合;16-20号容器搬运任务为剩余优先级的任务,此轮不会被该2个机器人执行,没有竞争力,属于第三梯队的搬运任务集合。
54.本技术实施例中,可以基于各个容器搬运任务的优先级,以及各个候选机器人的总剩余存储位,对至少一个容器搬运任务进行划分,获得至少一个梯队的搬运任务集合,后续按照任务梯队,可以依次给各梯队的任务集合中的各个容器搬运任务分配机器人资源。如此,对不同优先级的容器搬运任务划分梯队,提高了任务分配的优化空间。
55.步骤204:确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值。
56.其中,执行机器人为已分配任务对应的机器人,已分配任务与第一容器搬运任务为同一巷道的容器搬运任务。
57.具体的,已分配任务是指已经确定了分配关系的容器搬运任务,即已经确定了由哪个机器人执行该已分配任务。由于对于不在一个巷道的容器,搬运过程中机器人不存在冲突,因而只有已分配任务与第一容器搬运任务为同一巷道的容器搬运任务时,两个机器人才可能会发生冲突,需要计算惩罚值,即搬运位置冲突值,从而便于后续基于计算获得的搬运位置冲突值,选取搬运位置冲突值值最小的匹配。
58.需要说明的是,容器都存放在货架上,当第一容器搬运任务指示搬运的容器与其他已经确定分配关系的已分配任务指示搬运的容器相距较近,那么两个机器人无法同时在该位置执行取容器操作,此时即会存在搬运位置冲突,导致某个机器人需要等待其他机器人执行完取容器操作离开后,才能开始执行取容器操作。因而,在向第一容器搬运任务分配机器人时,可以考虑与执行机器人执行已分配任务之间的搬运位置冲突值。
59.本说明书实施例中,初始时各个容器搬运任务均是待分配的容器搬运任务,此时不存在搬运位置冲突值和搬运巷道冲突值,某容器搬运任务对应某候选机器人的匹配代价即为该候选机器人执行该容器搬运任务的路径长度,后续基于匹配代价,确定出最优匹配,即确定某组任务分配关系后,可能会存在搬运位置冲突值和搬运巷道冲突值,再结合搬运位置冲突值和搬运巷道冲突值,确定新的任务分配。
60.实际应用中,可以采用a*算法(是一种静态路网中求解最短路最有效的直接搜索方法),确定第一候选机器人执行第一容器搬运任务的路径长度,即第一候选机器人的位置至第一容器搬运任务指示搬运的容器的存储位置。具体的,采用a*算法求解路径长度时,可以将仓储系统中的地图划分为平面栅格图,栅格地图中的每个单元格可以为一个节点,从而求解第一候选机器人执行第一容器搬运任务的路径长度,a*算法可以通过如下公式(1)来计算每个节点的优先级。
61.f(n)=g(n)+h(n)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
62.其中,f(n)是节点n的综合优先级。当我们选择下一个要遍历的节点时,我们总会选取综合优先级最高(值最小)的节点;g(n)是节点n距离起点的代价;h(n)是节点n距离终点的预计代价,这也就是a*算法的启发函数。
63.需要说明的是,a*算法在运算过程中,每次从优先队列中选取f(n)值最小(优先级最高)的节点作为下一个待遍历的节点。另外,a*算法使用两个集合来表示待遍历的节点,与已经遍历过的节点,这通常称之为open_set和close_set。完整的a*算法描述如下:初始化open_set和close_set;将起点加入open_set中,并设置优先级为0(优先级最高);如果open_set不为空,则从open_set中选取优先级最高的节点n,如果节点n为终点,则从终点开始逐步追踪parent节点,一直达到起点,返回找到的结果路径,算法结束;如果节点n不是终点,则将节点n从open_set中删除,并加入close_set中,遍历节点n所有的邻近节点,如果邻近节点m在close_set中,则跳过,选取下一个邻近节点,如果邻近节点m也不在open_set中,则设置节点m的parent为节点n,计算节点m的优先级,将节点m加入open_set中。
64.本实施例一个可选的实施方式中,可以基于已分配任务的取容器结束时间和第一
容器搬运任务的取容器开始时间,确定其之间的搬运位置冲突值,也即确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,具体实现过程可以如下:
65.在当前存在已分配任务的情况下,确定已分配任务对应的执行机器人;
66.根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间;
67.根据第一候选机器人执行第一容器搬运任务的路径长度和第一候选机器人的运动速度,确定第一候选机器人执行第一容器搬运任务的取容器开始时间;
68.根据已分配任务的取容器结束时间和第一容器搬运任务的取容器开始时间,确定搬运位置冲突值。
69.需要说明的是,初始时不存在已分配任务,那么任意候选机器人执行第一容器搬运任务时,均不会存在与其他机器人冲突的情况,此时无需计算搬运位置冲突值,即搬运位置冲突值可以直接设置为0。在当前存在已分配任务的情况下,第一候选机器人执行第一容器搬运任务时,可能与已经确定的分配关系相冲突,此时可以确定执行机器人执行已分配任务的取容器结束时间,并确定第一候选机器人执行第一容器搬运任务的取容器开始时间。
70.实际应用中,若确定第一候选机器人执行第一容器搬运任务的取容器开始时间晚于执行机器人执行已分配任务的取容器结束时间,则说明执行机器人取完容器,第一候选机器人才达到相应位置开始拿取容器,此时不会存在冲突,可以将搬运位置冲突值确定为0。若确定第一候选机器人执行第一容器搬运任务的取容器开始时间早于执行机器人执行已分配任务的取容器结束时间,则说明执行机器人还没有取完容器,第一候选机器人已经达到相应位置,此时无法开始拿取容器,需要排队等候,因而此时可以将搬运位置冲突值设置的较高。
71.本实施例一个可选的实施方式中,根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间,具体实现过程可以如下:
72.获取已分配任务的开始执行时间和拿取容器执行时长;
73.根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人移动至已分配任务指示的容器位置处所需的移动时间;
74.根据开始执行时间和移动时间,确定执行机器人执行已分配任务的取容器开始时间;
75.根据拿取容器执行时长和已分配任务的取容器开始时间,确定已分配任务的取容器结束时间。
76.需要说明的是,仓储系统可以从容器任务搬运列表中获取已分配任务的开始执行时间和拿取容器执行时长,其中,开始执行时间即是执行机器人开始向已分配任务指示搬运的容器的位置移动的时间,拿取容器执行时长是指执行机器人到达已分配任务指示搬运的容器的位置处,拿取容器放入自身存储位所需的时长。
77.实际应用中,根据已分配任务的执行路径长度和执行机器人的运动速度,可以确定出执行机器人移动至已分配任务指示的容器位置处所需的移动时间,然后根据开始执行时间和移动时间,可以确定出执行机器人执行已分配任务的取容器开始时间,即执行机器
人达到已分配任务指示的容器位置处的时间。之后,根据拿取容器执行时长和已分配任务的取容器开始时间,即可确定出已分配任务的取容器结束时间,即拿取完容器的时间。
78.另外,与上述过程类似,仓储系统可以从容器任务搬运列表中获取第一容器搬运任务的开始执行时间,然后根据第一候选机器人执行第一容器搬运任务的路径长度和第一候选机器人的运动速度,可以确定出第一候选机器人从当前位置移动至第一容器搬运任务指示搬运的容器的存储位置处所需的移动时间,在该开始执行时间加上该移动时间,可以获得第一候选机器人达到第一容器搬运任务指示搬运的容器的存储位置处的时间,即第一候选机器人执行第一容器搬运任务的取容器开始时间。
79.具体实现时,根据已分配任务的取容器结束时间和第一容器搬运任务的取容器开始时间,确定搬运位置冲突值,可以将已分配任务的取容器结束时间减去第一容器搬运任务的取容器开始时间,获得时间差值,然后取该时间差值和0之间的较大者作为该搬运位置冲突值。
80.需要说明的是,若时间差值为正数,则时间差值大于0,此时搬运位置冲突值可以为该时间差值,说明已分配任务的取容器结束时间大于第一容器搬运任务的取容器开始时间,即说明第一容器搬运任务的取容器开始时间早于已分配任务的取容器结束时间,此时可能会发生时空冲突,搬运位置冲突值为正数,时间差值越大,说明第一容器搬运任务的取容器开始时间与已分配任务的取容器结束时间重叠时间越多,此时搬运位置冲突值也相对越大。
81.若时间差值为负数,则时间差值小于0,此时搬运位置冲突值为0,说明已分配任务的取容器结束时间小于第一容器搬运任务的取容器开始时间,即说明第一容器搬运任务的取容器开始时间晚于已分配任务的取容器结束时间,此时不会发生时空冲突,搬运位置冲突值为0。
82.作为一种示例,图3是本说明书一实施例提供的一种容器搬运任务的执行过程示意图,如图3所示,货架区内存放有容器b1-容器b7,假设容器b1(已分配任务指示搬运的容器)和容器b2(第一容器搬运任务指示搬运的容器,即待分配的容器)的开始执行时间均为时刻t0,假设容器b1已分配给机器人r1(执行机器人),机器人r1当前位置到容器b1的路径长度为p1,机器人r1和r2的平均速度均为v0,取容器动作的执行时间(即拿取容器执行时长)为t
p
,则机器人r1执行容器b1的取容器开始时间为t
s1
=t0+p1/v0,取容器结束时间为t
e1
=t
s1
+t
p
。机器人r2(第一候选机器人)到容器b2的路径长度为p2,如果机器人r2执行容器b2,取容器开始时间为t
s2
=t0+p2/v0。若t
s2
《t
e1
,机器人r2执行容器b2与机器人r1执行容器b1存在时间冲突,机器人本体的体积在取容器b1和容器b2操作点位存在包络冲突,因此,若容器b2分配给机器人r2,会与机器人r1执行容器b1存在位置冲突,搬运位置冲突值punishmentcost=max{t
e1-t
s2
,0}。
83.本技术实施例中,为了减少机器人等待,提高运行效率,在任务分配时考虑位置冲突,在取容器的位置点有包络冲突的情况下,机器人执行取容器动作的时间段有交叉,即产生位置冲突,此时可以计算搬运位置冲突值,后续在确定容器搬运任务对应的候选机器人时,可以考虑搬运位置冲突值,从而避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
84.本实施例一个可选的实施方式中,确定已分配任务对应的执行机器人之后,还可以包括:
85.确定第一容器搬运任务指示搬运的容器在仓储系统中的第一存放位置,并确定已分配任务指示搬运的容器在仓储系统中的第二存放位置;
86.根据第一存放位置和第二存放位置,确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务,是否存在搬运位置冲突;
87.若存在,则执行根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间的操作步骤。
88.实际应用中,可以预先设定距离阈值,在第一存放位置和第二存放位置的距离小于该距离阈值时,说明第一存放位置和第二存放位置相距较近,机器人本体的体积在取容器时存在包络冲突,即确定存在搬运位置冲突。
89.需要说明的是,可以先确定第一容器搬运任务指示搬运的容器在仓储系统中的第一存放位置,并确定已分配任务指示搬运的容器在仓储系统中的第二存放位置,若第一存放位置和第二存放位置相距较近,则说明机器人本体的体积在取容器时,存在包络冲突,即第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务存在搬运位置冲突,不能同时搬运,因而此时可以执行根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间的操作步骤,后续可以基于该取容器结束时间,进一步确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值。
90.本说明书实施例中,可以先基于第一容器搬运任务指示搬运的容器在仓储系统中的第一存放位置,以及已分配任务指示搬运的容器在仓储系统中的第二存放位置,确定第一存放位置和第二存放位置是否存在包络冲突(即位置冲突),在不存在位置冲突的情况下,可以无需计算第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,节省处理资源,只有在存在位置冲突的情况下,再计算第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,即执行根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间的操作步骤。
91.本实施例一个可选的实施方式中,在进行任务分配时,除了考虑位置冲突外,还可以考虑巷道拥堵,也即确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值之后,还可以包括:
92.确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运巷道冲突值。
93.需要说明的是,除了在取容器的位置点处,机器人可能存在位置冲突外,机器人在巷道中移动时,也可能发生拥堵,因而还可以确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运巷道冲突值,在后续确定任务分配关系时,也可以进一步结合该搬运巷道冲突值。
94.本技术实施例中,在确定容器搬运任务和机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,以及机器人在巷道中移动可能发生的拥堵情况,避免了机器人到达搬运位置后的等待耗时,也避免了机器人在巷道中拥堵等待耗时,避
免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
95.本实施例一个可选的实施方式中,确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运巷道冲突值,具体实现过程可以如下:
96.获取执行机器人执行已分配任务时的第一进入巷道时间和第一离开巷道时间,并根据第一进入巷道时间和第一离开巷道时间,确定已分配任务在目标巷道的第一停留时间段;
97.预估第一候选机器人执行第一容器搬运任务时的第二进入巷道时间和第二离开巷道时间,并根据第二进入巷道时间和第二离开巷道时间,确定第一候选机器人在目标巷道的第二停留时间段;
98.在第二停留时间段与第一停留时间段存在交叉时间段的情况下,确定交叉时间段内目标巷道的机器人数目是否超过数目阈值,若是,则确定搬运巷道冲突值为第一设定值;若否,则确定搬运巷道冲突值为第二设定值,其中,第一设定值大于第二设定值。
99.具体的,目标巷道是指第一容器搬运任务和已分配任务指示搬运的容器所处的巷道。数目阈值是预先设定的、一个巷道中同时存在的机器人数目上限,如巷道一般有2个出入口,因而数目阈值可以设置为2。
100.另外,第一设定值和第二设定值是预先设置的数值,第一设定值是针对存在搬运巷道冲突的情况下,设置的惩罚值,因而第一设定值设置的较高;第二设定值是针对不存在搬运巷道冲突的情况下,设置的惩罚值,因而第二设定值设置的较低,可以为0。也即,第一设定值可以设置的远远大于第二设定值。
101.具体的,若交叉时间段内目标巷道的机器人数目超过数目阈值,也即在该交叉时间段内,若该第一候选机器人再进入目标巷道执行第一容器搬运任务,则会导致该目标巷道拥堵,产生搬运巷道冲突,因而该目标巷道内的第一容器搬运任务不可再分配给不在该目标巷道内的机器人(避免该目标巷道新增机器人造成拥堵),此时可以将该搬运巷道冲突值设定为一个显著大于路径长度和搬运位置冲突值的取值范围的数值,也即此时第一设定值可以设置为大于路径长度和搬运位置冲突值的取值范围的数值。
102.需要说明的是,第一停留时间段是已经确定了分配关系的执行机器人在执行对应的已分配任务时,需要在对应的巷道中停留的时间段;第二停留时间段是第一候选机器人执行第一容器搬运任务时,需要在该巷道中停留的时间段。如果第二停留时间段与第一停留时间段存在交叉时间段,则说明第一候选机器人和执行机器人在该交叉时间段内,同时在该巷道中,此时可以确定该交叉时间段内目标巷道的机器人数目是否超过数目阈值,即该交叉时间段内是否还存在其他执行机器人也在目标巷道中,若是,则说明目标巷道在该交叉时间段内可能会发生拥堵,应该尽量不将第一容器搬运任务分配给不在该目标巷道内的机器人,此时可以确定搬运巷道冲突值为第一设定值,即搬运巷道冲突值设置的较大;若否,则说明目标巷道在该交叉时间段内发生拥堵的概率较小,因而可以确定搬运巷道冲突值为第二设定值,即搬运巷道冲突值设置的较小。
103.作为一种示例,为了缓解机器人在巷道里扎堆导致机器人执行任务效率降低,任务分配时考虑巷道内机器人数量上限,即同一时刻一个巷道内最多存在k个机器人(巷道为双出入口,一般设置k为2)。在搬运巷道冲突值时,预计第一候选机器人进入巷道时间和离
开巷道时间,若在该时间段与已分配给其他机器人任务的巷道停留时间有交叉,且机器人数量为k个,则设置搬运巷道冲突值为最大值(即为最差匹配),假设路径长度和搬运位置冲突值的匹配代价的范围为[0,1000],此时可设置搬运巷道冲突值为10000,后续确定最优匹配时,若匹配代价大于等于10000,则该匹配存在搬运巷道冲突,该匹配不可取。
[0104]
本技术实施例中,若已分配任务在目标巷道的第一停留时间段,与第一候选机器人在目标巷道的第二停留时间段存在交叉,则说明此时目标巷道可能会发生拥堵,此时可以确定目标巷道的机器人数目是否超过数目阈值,从而限制巷道内机器人数量上限,即同一时刻一个巷道内最多存在k个机器人。如此,避免了机器人在巷道中拥堵等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0105]
步骤206:根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价。
[0106]
需要说明的是,根据上述步骤计算获得路径长度和搬运位置冲突值后,可以对路径长度和搬运位置冲突值进行求和,确定第一容器搬运任务对应第一候选机器人的匹配代价。如此,在确定第一容器搬运任务对应第一候选机器人的匹配代价时,综合考虑了第一候选机器人执行第一容器搬运任务的路径长度,以及与其他已经确定分配关系的执行机器人可能存在的位置冲突,提高了匹配代价的准确率,便于后续基于该匹配代价,确定最优的任务分配。
[0107]
本实施例一个可选的实施方式中,除了确定路径长度和搬运位置冲突值之外,还可以确定搬运巷道冲突值,因而在计算第一容器搬运任务对应第一候选机器人的匹配代价时,还可以结合该搬运巷道冲突值,也即根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,具体实现过程可以如下:
[0108]
根据路径长度、搬运位置冲突值和搬运巷道冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价。
[0109]
需要说明的是,可以结合路径长度、搬运位置冲突值和搬运巷道冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,便于后续基于该匹配代价,确定最优的任务分配,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0110]
本实施例一个可选的实施方式中,根据路径长度、搬运位置冲突值和搬运巷道冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,具体实现过程可以包括如下步骤:
[0111]
将路径长度、搬运位置冲突值和搬运巷道冲突值统一至同一维度;
[0112]
对统一后的路径长度、搬运位置冲突值和搬运巷道冲突值求和,获得第一容器搬运任务对应第一候选机器人的匹配代价。
[0113]
需要说明的是,上述计算出的路径长度、搬运位置冲突值和搬运巷道冲突值是不同维度的数值,无法直接进行处理,因而还可以将路径长度、搬运位置冲突值和搬运巷道冲突值统一至同一维度,然后对统一后的路径长度、搬运位置冲突值和搬运巷道冲突值求和,获得第一容器搬运任务对应第一候选机器人的匹配代价。
[0114]
实际应用中,将路径长度、搬运位置冲突值和搬运巷道冲突值统一至同一维度时,
可以预设需要统一的维度,如都统一到时间维度,或者都统一到距离维度。具体实现时,搬运巷道冲突值为预先设定的值,在设定搬运巷道冲突值时,可以参考路径长度和搬运位置冲突值的取值范围,因而可以将搬运巷道冲突值设置为最终需要统一的维度,如在距离维度上设置搬运巷道冲突值,将搬运位置冲突值也转换为距离维度;或者在时间维度上设置搬运巷道冲突值,此时搬运位置冲突值可以为时间维度,并将路径长度也转换为时间维度。另外,在设置搬运巷道冲突值时也可以不考虑维度,后续再对路径长度、搬运位置冲突值和搬运巷道冲突值的维度进行统一。
[0115]
沿用上例,搬运位置冲突值punishmentcost=max{t
e1-t
s2
,0},即此时搬运位置冲突值为时间维度,由于路径长度为距离维度,假设要把时间维度统一至距离维度,则可以将搬运位置冲突值乘以机器人的运动速度,将搬运位置冲突值转换至距离维度,即统一维度后的搬运位置冲突值punishmentcost=max{t
e1-t
s2
,0}
×
v0。
[0116]
本说明书实施例中,可以将路径长度、搬运位置冲突值和搬运巷道冲突值统一至同一维度,便于结合路径长度、搬运位置冲突值和搬运巷道冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价。
[0117]
步骤208:根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果。
[0118]
需要说明的是,各个候选机器人均可以作为第一候选机器人,确定与第一容器搬运任务之间的匹配代价,也即可以确定出第一容器搬运任务对应各个候选机器人的匹配代价。另外,各个待分配的容器搬运任务均可以作为第一容器搬运任务,确定出对应各个候选机器人的匹配代价,因而可以根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定出至少一个容器搬运任务的分配结果。
[0119]
需要说明的是,该分配结果是指至少一个容器搬运任务对应各个候选机器人中最优的匹配,即某容器搬运任务对应某候选机器人是最优匹配。每一轮任务分配,可以选择一个最优匹配作为分配结果,其他未匹配的容器搬运任务继续作为待分配的容器搬运任务,继续参与下一轮分配。
[0120]
本实施例一个可选的实施方式中,根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果,包括:
[0121]
根据至少一个容器搬运任务对应各个候选机器人的匹配代价,构造匹配代价矩阵;
[0122]
从匹配代价矩阵中选择匹配代价最小的目标匹配作为分配结果,其中,目标匹配包括容器搬运任务和对应的候选机器人;
[0123]
根据分配结果,更新当前已分配任务和对应的执行机器人,并返回执行确定当前待分配的至少一个容器搬运任务和至少一个候选机器人的操作步骤。
[0124]
需要说明的是,可以根据至少一个容器搬运任务对应各个候选机器人的匹配代价,构造匹配代价矩阵,也即将至少一个容器搬运任务作为行(或列),将各个候选机器人作为列(或行),某行某列的元素即为相应的容器搬运任务与候选机器人之间的匹配代价,从而构造获得匹配代价矩阵,从匹配代价矩阵中选择匹配代价最小的目标匹配作为分配结果,一个分配结果包括容器搬运任务和对应的候选机器人,此时即确定该容器搬运任务分配给该候选机器人,该容器搬运任务变为已分配任务,该候选机器人的存储位减1,其他未
匹配的容器搬运任务依旧作为待分配的容器搬运任务,参与下一轮任务分配直至各个容器搬运任务全部分配完毕,或者候选机器人的存储资源耗尽。
[0125]
示例的,图4a是本说明书一实施例提供的第一种匹配代价矩阵的示意图,如图4a所示,有6个待分配的容器搬运任务(容器搬运任务1-6)和5个候选机器人(候选机器人1-5),以容器搬运任务作为行,以候选机器人作为列,基于容器搬运任务和候选机器人之间的匹配代价,构建如图4a所示的匹配代价矩阵。如图4a所示,容器搬运任务3对应候选机器人2的匹配代价最小,因而此时分配结果为容器搬运任务3和候选机器人2,即将容器搬运任务3分配给候选机器人2。
[0126]
实际应用中,可以从匹配代价矩阵中选择匹配代价最小的匹配为最优匹配,确定分配结果,更新任务分配表、已分配任务被执行的开始时间和结束时间、已分配任务被执行时进入巷道时间和离开巷道时间等信息,以供后续任务分配过程使用,然后循环执行上述步骤202-步骤206,继续对待分配的容器搬运任务进行分配,直至用完所有机器人资源或所有容器搬运任务都被分配到机器人。
[0127]
本说明书实施例中,每轮任务分配可以确定出一组最优分配,然后继续循环确定搬运位置冲突值和搬运巷道冲突值,从而确定最优分配,在进行任务分配时,考虑了路径长度、搬运位置冲突值和搬运巷道冲突值,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0128]
本实施例一个可选的实施方式中,若之前基于容器搬运任务的优先级,将至少一个容器搬运任务划分为不同梯队的搬运任务集合,那么可以依次按序为各个梯队的容器搬运任务确定最优分配,从而依次确定各个梯队的容器搬运任务的分配结果,也即确定第一候选机器人执行第一容器搬运任务的路径长度之前,还包括
[0129]
将当前梯队作为目标梯队,在目标梯队的搬运任务集合中选择第一容器搬运任务;
[0130]
相应地,根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果,包括:
[0131]
根据目标梯队的搬运任务集合中各个目标容器搬运任务对应各个候选机器人的匹配代价,确定各个目标容器搬运任务的分配结果;
[0132]
将目标梯队的下一梯队作为目标梯队,返回执行在目标梯队的搬运任务集合中选择第一容器搬运任务的步骤。
[0133]
其中,目标容器搬运任务是指目标梯队的搬运任务集合中当前还未被分配的容器搬运任务。
[0134]
需要说明的是,当前梯队是指当前需要进行任务分配的容器搬运任务所处的梯队,初始时当前梯队可以是指至少一个梯队中优先级最高的梯队。在进行任务分配时,可以从优先级最高的梯队开始,确定该梯队的搬运任务集合中各个目标容器搬运任务的分配结果,然后再将目标梯队的下一梯队作为目标梯队,继续对下一梯队中的任务进行分配,直至用完所有机器人资源或所有容器搬运任务都被分配到机器人。
[0135]
实际应用中,根据目标梯队的搬运任务集合中各个目标容器搬运任务对应各个候选机器人的匹配代价,确定各个目标容器搬运任务的分配结果,具体实现过程可以如下:
[0136]
根据各个目标容器搬运任务对应各个候选机器人的匹配代价,构造目标梯队对应的目标匹配代价矩阵;
[0137]
从目标匹配代价矩阵中选择匹配代价最小的目标匹配作为分配结果,其中,目标匹配包括容器搬运任务和对应的候选机器人;
[0138]
根据分配结果,更新当前已分配任务和对应的执行机器人,返回执行根据各个目标容器搬运任务对应各个候选机器人的匹配代价,构造目标梯队对应的目标匹配代价矩阵的步骤。
[0139]
需要说明的是,目标梯队的搬运任务集合中各个目标容器搬运任务均可以作为第一容器搬运任务,确定出与各个候选机器人之间的匹配代价,然后基于目标梯队的搬运任务集合中各个目标容器搬运任务与各个候选机器人,构建目标梯队对应的目标匹配代价矩阵,从该目标匹配代价矩阵中选择最优匹配作为此轮的分配结果,继续基于目标梯队的中剩余未分配的目标容器搬运任务,构建目标匹配代价矩阵,以继续分配目标梯队中的其他未分配的目标容器搬运任务。在目标梯队的搬运任务集合中各个容器搬运任务均确定出分配结果后,说明目标梯队的各个容器搬运任务已经分配完毕,此时可以将目标梯队的下一梯队作为目标梯队,继续对下一梯队中的目标容器搬运任务进行分配,直至候选机器人资源耗尽。
[0140]
沿用上例,假设有2个候选机器人,每个候选机器人有6个存储位;共有20个容器搬运任务,被划分为3个任务梯队,优先级最高的任务梯队为第一梯队,包括1-10号容器搬运任务,优先级次高的任务梯队为第二梯队,包括11-15号容器搬运任务,优先级最低的任务梯队为第三梯队,包括15-20号容器搬运任务。将第一梯队作为目标梯队,以第一梯队中的1-10号容器搬运任务为行,2个候选机器人为列,基于1-10号容器搬运任务和候选机器人之间的匹配代价,构建如图4b所示的第一梯队的目标匹配代价矩阵,图4b是本说明书一实施例提供的第二种匹配代价矩阵的示意图。如图4b所示,4号容器搬运任务对应候选机器人1的匹配代价最小,因而此轮分配结果为4号容器搬运任务和候选机器人1,即将4号容器搬运任务分配给候选机器人1,然后将4号容器搬运任务作为已分配任务,继续对第一梯队中的其他容器搬运任务进行分配,直至第一梯队中的各个容器搬运任务均分配完毕。
[0141]
之后,将第二梯队作为目标梯队,以第二梯队中的11-15号容器搬运任务为行,2个候选机器人为列,基于11-15号容器搬运任务和候选机器人之间的匹配代价,构建如图4c所示的第二梯队的目标匹配代价矩阵,图4c是本说明书一实施例提供的第三种匹配代价矩阵的示意图。如图4c所示,13号容器搬运任务对应候选机器人2的匹配代价最小,因而此轮分配结果为13号容器搬运任务和候选机器人2,即将13号容器搬运任务分配给候选机器人2,然后将13号容器搬运任务作为已分配任务,继续对第二梯队中的其他容器搬运任务进行分配,直至候选机器人资源用尽,由于此时候选机器人资源用尽,因而不再继续第三梯队的容器搬运任务分配。
[0142]
需要说明的是,若不对各个容器搬运任务进行梯度划分,也可以仅基于容器搬运任务的优先级,进行任务分配,优先级相同的容器搬运任务有n个,m台机器人,每次轮询从n*m的矩阵中选出一个最优匹配,作为分配结果。若对各个容器搬运任务划分梯队后,每个梯队可以包括至少一个优先级的容器搬运任务,假设某梯队的容器搬运任务有k个(k大于等于n),此时变成从k*m的矩阵中选出一个最优匹配,作为分配结果,k*m的矩阵中的最优值
优于等于n*m的矩阵中的最优值,从而可以增大确定分配结果的搜索空间,提高了任务分配的优化空间,从而提高了任务执行的效率。
[0143]
实际应用中,选择匹配代价最小的目标匹配作为分配结果时,考虑了搬运巷道冲突值,会发生巷道拥堵的匹配代价一定远远大于不会发生巷道拥堵的匹配代价,也即匹配代价最小的目标匹配,发生巷道拥堵的概率是最小的,因而可以直接选择匹配代价最小的目标匹配作为分配结果,该分配结果发生位置冲突和巷道拥堵的概率是各个匹配结果中最小的,也即目标匹配结果是考虑了位置冲突和巷道拥堵确定出的最优匹配。
[0144]
另外,还可以预先设置匹配代价阈值,该匹配代价阈值可以为基于搬运巷道冲突值设置的最差匹配值,如果匹配代价超过该匹配代价阈值,则说明该匹配代价对应的分配结果会发生巷道冲突。因而,具体实现时,还可以先从目标匹配代价矩阵中确定最小的匹配代价,然后确定该最小的匹配代价是否超过匹配代价阈值,若不超过,则说明匹配代价最小的目标匹配不会发生巷道拥堵,可以将该匹配代价最小的目标匹配作为分配结果;若超过,则说明待分配的容器搬运任务所在的巷道里的机器人数量都达到了上限,不论如何分配均会产生巷道拥堵,此时可以确定分配结果为空,停止继续进行容器搬运任务的分配,避免了机器人在执行任务时发生拥堵,提高了任务执行的效率。
[0145]
本实施例一个可选的实施方式中,根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果之后,还可以包括:
[0146]
在各个容器搬运任务分配完毕,或各个机器人的存储位占用完毕的情况下,确定任务分配完成;
[0147]
确定目标机器人对应的各个容器搬运任务的分配顺序,控制目标机器人按序拿取各个容器搬运任务对应的目标容器,其中,目标机器人为各个机器人中的任一个;
[0148]
在目标机器人拿取容器完毕的情况下,根据各个目标容器的目的工作站以及各个工作站的当前工作信息,确定目标机器人向各个目的工作站的目标运送顺序。
[0149]
需要说明的是,各个容器搬运任务分配完毕,或者各个候选机器人的存储位占用完毕后,即停止任务分配,确定此次任务分配完成,各个机器人开始执行向其分配的任务,机器人执行容器搬运任务的过程分为两个阶段,第一个阶段为从货架上拿取容器;第二个阶段为机器人拿取完各个容器后,将自身存储的各个容器运送至对应工作站。因而,仓储系统还需要获取工作站列表,该工作站列表可以包括工作站的基础信息和当前工作信息,后续基于各个工作站的当前工作信息,确定容器运送顺序。
[0150]
本说明书实施例中,第一个阶段的执行顺序是任务分配顺序,第二个阶段的执行顺序可以基于工作站当前的工作状态确定,确定策略是机器人将自身的各个容器全部运送完毕耗费的时间最少,从而避免机器人在工作站排队,节省容器运送时长,提供仓储效率。
[0151]
本实施例一个可选的实施方式中,根据各个目标容器的目的工作站以及各个工作站的当前工作信息,确定目标机器人向各个目的工作站的目标运送顺序,具体实现过程可以如下:
[0152]
确定各个目标容器的至少一种运送顺序;
[0153]
根据各个工作站的当前工作信息,分别确定各种运送顺序对应的运送时间;
[0154]
选择运送时间最短的运送顺序作为目标运送顺序。
[0155]
实际应用中,一个机器人上设置有多个存储位,可以同时搬运多个容器,该多个容
器对应的工作站可以不相同,而机器人将某个容器运送至对应的工作站时,如果该工作站当前已有机器人在向工作站放置容器,或者已有机器人在排队,则该机器人也需要排队等待,可能会导致机器人在工作站拥堵,进而降低运送效率。因而,可以确定各个目标容器的至少一种运送顺序,根据各个工作站的当前工作信息,分别确定各种运送顺序对应的运送时间,选择运送时间最短的运送顺序作为目标运送顺序。
[0156]
需要说明的是,一个机器人被分配了多个容器搬运任务,依次取完所有容器,送容器进入拣选的工作站,即完成出库。其中,机器人执行各容器的取顺序按照分配到机器人的先后顺序即可(分配时考虑了距离因素、位置冲突和巷道拥堵,最终达成效果,最早可执行的任务先分配到机器人);机器人取完容器后,将驮着容器的机器人当成一个整体,机器人上的容器有多个目的地(工作站),确定机器人对工作站的前往顺序可以抽象为一个开放车间调度问题(open shop scheduling problem,osp),工作站为加工机器,取完容器进站的机器人为待加工工件,机器人上待拣选的容器为加工工序,以送完所有容器的时间最短为优化目标,获得机器人执行运送容器操作的顺序。
[0157]
其中,开放车间调度问题(open shop scheduling problem,osp)定义为:有n个需要加工的工件和m种用来加个的机器,每个工件有一至多道工序,每道工序的加工时间是已知的,但是不规定每个工件的加工顺序,一台机器在同一时刻只能加工一个工件,每个工件在同一时刻也只能在某一台机器上加工,最终需要求得一组机器与工件的排列组合使加工完所有工件所用的时间最短。
[0158]
本说明书提供的容器搬运任务的分配方法,确定出当前待分配的至少一个容器搬运任务和至少一个候选机器人后,可以确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,后续结合该路径长度和该搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,各个容器搬运任务均可以作为第一容器搬运任务,各个候选机器人均可以作为第一候选机器人,也即针对任一容器搬运任务,可以确定出其与各个候选机器人之间的匹配代价,根据各个容器搬运任务与各个候选机器人之间的匹配代价,可以确定各个容器搬运任务的分配结果,从而确定出容器搬运任务与候选机器人之间的最优匹配,将容器搬运任务分配给最合适的候选机器人。如此,在确定容器搬运任务和候选机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0159]
图5是本说明书一实施例提供的一种容器搬运任务的分配方法的处理过程示意图,具体包括以下步骤:
[0160]
步骤一:基于设定时间频率或设定事件触发任务分配。
[0161]
步骤二:输入容器搬运任务列表、机器人列表和工作站列表。
[0162]
示例的,已知m个待分配的容器搬运任务(任务有不同的优先级,优先级高的优先分配)、n个可用的机器人集合、k个工作站。
[0163]
步骤三:初始化任务分配表、已分配任务被执行的开始时间和结束时间、已分配任务被执行时机器人进入巷道时间和离开巷道时间。
[0164]
其中,任务分配表即为货箱搬运任务i分配给机器人j。
[0165]
步骤四:考虑容器搬运任务数量与可用机器人的存储位数量,根据优先级,对各个容器搬运任务进行梯队划分。
[0166]
步骤五:当前梯队下,计算容器搬运任务与可用机器人匹配的匹配代价cost。
[0167]
其中,匹配代价cost的计算方式=基础代价+搬运位置冲突值+搬运巷道冲突值。基础代价为机器人执行该容器搬运任务的路径长度;搬运位置冲突值为各台机器人分别执行各自的容器搬运任务,存在搬运位置冲突的惩罚值;搬运巷道冲突值为若巷道内机器人数达到上限,新增机器人与该巷道内容器搬运任务的惩罚值。
[0168]
步骤六:选择匹配代价cost最小的匹配为最优匹配,确定分配结果。
[0169]
步骤七:有剩余机器人资源或待分配的容器搬运任务,若否,则结束,若是,则执行步骤八。
[0170]
步骤八:基于分配结果,更新机器人列表和待分配的容器搬运任务列表。
[0171]
步骤九:更新任务分配表、已分配任务被执行的开始时间和结束时间、已分配任务被执行时进入巷道时间和离开巷道时间。
[0172]
步骤十:循环执行步骤五,直至结束。
[0173]
需要说明的是,通过上述步骤,可以对当前梯队下的容器搬运任务进行分配,在当前梯队下的各个容器搬运任务分配结束后,可以继续将下一梯队作为当前梯队,以继续对下一梯队下的容器搬运任务进行分配,直至各个容器搬运任务均被分配,或者机器人资源耗尽。
[0174]
本说明书提供的容器搬运任务的分配方法,确定出当前待分配的至少一个容器搬运任务和至少一个候选机器人后,可以确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,后续结合该路径长度和该搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,各个容器搬运任务均可以作为第一容器搬运任务,各个候选机器人均可以作为第一候选机器人,也即针对任一容器搬运任务,可以确定出其与各个候选机器人之间的匹配代价,根据各个容器搬运任务与各个候选机器人之间的匹配代价,可以确定各个容器搬运任务的分配结果,从而确定出容器搬运任务与候选机器人之间的最优匹配,将容器搬运任务分配给最合适的候选机器人。如此,在确定容器搬运任务和候选机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0175]
与上述方法实施例相对应,本说明书还提供了容器搬运任务的分配装置实施例,图6是本说明书一实施例提供的一种容器搬运任务的分配装置的结构示意图。如图6所示,该装置包括:
[0176]
第一确定模块602,被配置为确定当前待分配的至少一个容器搬运任务和至少一个候选机器人;
[0177]
第二确定模块604,被配置为确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的
搬运位置冲突值,其中,执行机器人为已分配任务对应的机器人,已分配任务与第一容器搬运任务为同一巷道的容器搬运任务;
[0178]
第三确定模块606,被配置为根据路径长度和搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价;
[0179]
第四确定模块608,被配置为根据至少一个容器搬运任务对应各个候选机器人的匹配代价,确定至少一个容器搬运任务的分配结果。
[0180]
本说明书提供的容器搬运任务的分配装置,确定出当前待分配的至少一个容器搬运任务和至少一个候选机器人后,可以确定第一候选机器人执行第一容器搬运任务的路径长度,并确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运位置冲突值,后续结合该路径长度和该搬运位置冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价,各个容器搬运任务均可以作为第一容器搬运任务,各个候选机器人均可以作为第一候选机器人,也即针对任一容器搬运任务,可以确定出其与各个候选机器人之间的匹配代价,根据各个容器搬运任务与各个候选机器人之间的匹配代价,可以确定各个容器搬运任务的分配结果,从而确定出容器搬运任务与候选机器人之间的最优匹配,将容器搬运任务分配给最合适的候选机器人。如此,在确定容器搬运任务和候选机器人之间的任务分配方式时,考虑了机器人执行容器搬运任务的搬运位置冲突,避免机器人到达搬运位置后的等待耗时,避免了机器人扎堆造成严重的等待与拥堵,使得仓储系统中各个机器人可以最大的发挥其自身能力,提高了任务分配的合理性,进而提高了任务执行层面的整体效率。
[0181]
可选地,第二确定模块604,进一步被配置为:
[0182]
在当前存在已分配任务的情况下,确定已分配任务对应的执行机器人;
[0183]
根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间;
[0184]
根据第一候选机器人执行第一容器搬运任务的路径长度和第一候选机器人的运动速度,确定第一候选机器人执行第一容器搬运任务的取容器开始时间;
[0185]
根据已分配任务的取容器结束时间和第一容器搬运任务的取容器开始时间,确定搬运位置冲突值。
[0186]
可选地,第二确定模块604,进一步被配置为:
[0187]
确定第一容器搬运任务指示搬运的容器在仓储系统中的第一存放位置,并确定已分配任务指示搬运的容器在仓储系统中的第二存放位置;
[0188]
根据第一存放位置和第二存放位置,确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务,是否存在搬运位置冲突;
[0189]
若存在,则执行根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人执行已分配任务的取容器结束时间的操作步骤。
[0190]
可选地,第二确定模块604,进一步被配置为:
[0191]
获取已分配任务的开始执行时间和拿取容器执行时长;
[0192]
根据已分配任务的执行路径长度和执行机器人的运动速度,确定执行机器人移动至已分配任务指示的容器位置处所需的移动时间;
[0193]
根据开始执行时间和移动时间,确定执行机器人执行已分配任务的取容器开始时
间;
[0194]
根据拿取容器执行时长和已分配任务的取容器开始时间,确定已分配任务的取容器结束时间。
[0195]
可选地,该装置还包括第五确定模块,被配置为:
[0196]
确定第一候选机器人执行第一容器搬运任务与执行机器人执行已分配任务之间的搬运巷道冲突值;
[0197]
相应地,第三确定模块606,进一步被配置为:
[0198]
根据路径长度、搬运位置冲突值和搬运巷道冲突值,确定第一容器搬运任务对应第一候选机器人的匹配代价。
[0199]
可选地,第五确定模块,进一步被配置为:
[0200]
获取执行机器人执行已分配任务时的第一进入巷道时间和第一离开巷道时间,并根据第一进入巷道时间和第一离开巷道时间,确定已分配任务在目标巷道的第一停留时间段;
[0201]
预估第一候选机器人执行第一容器搬运任务时的第二进入巷道时间和第二离开巷道时间,并根据第二进入巷道时间和第二离开巷道时间,确定第一候选机器人在目标巷道的第二停留时间段;
[0202]
在第二停留时间段与第一停留时间段存在交叉时间段的情况下,确定交叉时间段内目标巷道的机器人数目是否超过数目阈值,若是,则确定搬运巷道冲突值为第一设定值;若否,则确定搬运巷道冲突值为第二设定值,其中,第一设定值大于第二设定值。
[0203]
可选地,第三确定模块606,进一步被配置为:
[0204]
将路径长度、搬运位置冲突值和搬运巷道冲突值统一至同一维度;
[0205]
对统一后的路径长度、搬运位置冲突值和搬运巷道冲突值求和,获得第一容器搬运任务对应第一候选机器人的匹配代价。
[0206]
可选地,第四确定模块608,进一步被配置为:
[0207]
根据至少一个容器搬运任务对应各个候选机器人的匹配代价,构造匹配代价矩阵;
[0208]
从匹配代价矩阵中选择匹配代价最小的目标匹配作为分配结果,其中,目标匹配包括容器搬运任务和对应的候选机器人;
[0209]
根据分配结果,更新当前已分配任务和对应的执行机器人,并返回执行确定当前待分配的至少一个容器搬运任务和至少一个候选机器人的操作步骤。
[0210]
可选地,该装置还包括划分模块,被配置为:
[0211]
确定至少一个容器搬运任务的优先级;
[0212]
确定至少一个候选机器人的总剩余存储位;
[0213]
根据优先级和总剩余存储位,对至少一个容器搬运任务进行划分,获得至少一个梯队的搬运任务集合。
[0214]
可选地,第二确定模块,进一步被配置为:
[0215]
将当前梯队作为目标梯队,在目标梯队的搬运任务集合中选择第一容器搬运任务;
[0216]
相应地,第四确定模块,进一步被配置为:
[0217]
根据目标梯队的搬运任务集合中各个目标容器搬运任务对应各个候选机器人的匹配代价,确定各个目标容器搬运任务的分配结果;
[0218]
将目标梯队的下一梯队作为目标梯队,返回执行在目标梯队的搬运任务集合中选择第一容器搬运任务的步骤。
[0219]
可选地,该装置还包括控制模块,被配置为:
[0220]
在各个容器搬运任务分配完毕,或各个机器人的存储位占用完毕的情况下,确定任务分配完成;
[0221]
确定目标机器人对应的各个容器搬运任务的分配顺序,控制目标机器人按序拿取各个容器搬运任务对应的目标容器,其中,目标机器人为各个机器人中的任一个;
[0222]
在目标机器人拿取容器完毕的情况下,根据各个目标容器的目的工作站以及各个工作站的当前工作信息,确定目标机器人向各个目的工作站的目标运送顺序。
[0223]
可选地,该控制模块,进一步被配置为:
[0224]
确定各个目标容器的至少一种运送顺序;
[0225]
根据各个工作站的当前工作信息,分别确定各种运送顺序对应的运送时间;
[0226]
选择运送时间最短的运送顺序作为目标运送顺序。
[0227]
上述为本实施例的一种容器搬运任务的分配装置的示意性方案。需要说明的是,该容器搬运任务的分配装置的技术方案与上述的容器搬运任务的分配方法的技术方案属于同一构思,容器搬运任务的分配装置的技术方案未详细描述的细节内容,均可以参见上述容器搬运任务的分配方法的技术方案的描述。
[0228]
图7是本说明书一实施例提供的一种计算设备的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
[0229]
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(pstn,public switched telephone network)、局域网(lan,local area network)、广域网(wan,wide area network)、个域网(pan,personal area network)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic,network interface controller))中的一个或多个,诸如ieee802.11无线局域网(wlan,wireless local area networks)无线接口、全球微波互联接入(wi-max,worldwide interoperability for microwave access)接口、以太网接口、通用串行总线(usb,universal serial bus)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc,near field communication)接口,等等。
[0230]
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
[0231]
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移
动设备,或者诸如台式计算机或pc的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
[0232]
其中,处理器720用于执行如下计算机可执行指令,以实现上述的容器搬运任务的分配方法的步骤。
[0233]
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的容器搬运任务的分配方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述容器搬运任务的分配方法的技术方案的描述。
[0234]
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现上述的容器搬运任务的分配方法的步骤。
[0235]
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的容器搬运任务的分配方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述容器搬运任务的分配方法的技术方案的描述。
[0236]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0237]
计算机指令包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。
[0238]
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
[0239]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0240]
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。