物流机器人拣选流程仿真研究

2020-03-11 12:51龚志锋陈滔滔陈建银
计算机应用与软件 2020年2期
关键词:空闲队列站点

龚志锋 陈滔滔 石 超 陈建银

(北京科捷物流有限公司 北京 100085)

0 引 言

随着互联网的高速发展,电子商务不断深入人们生活的各个领域,不断对仓储拣选效率提出更高的要求,在此背景下,电商行业广泛应用仓储物流机器人(AGV),在提高仓储拣选效率的同时应对不断上涨的劳动力成本[1]。但是,受限于图像识别以及机器人手臂技术的发展,目前在商品包装较为复杂的电商行业之中,仓库还无法做到完全的无人化拣选,仍然需要人工配合机器人完成商品的拣选,因此如何使用最少的人员完成每天的订单量是每个仓库的工作重点之一[2]。

1 研究背景

本次研究以位于天津武清区科捷机器人仓(如图1所示)为背景,该仓主要业务为某品牌的日常洗护用品,采用人与机器相互配合完成商品出库。

图1 科捷机器人仓

该拣选模式的主要流程如下:

(1) AGV前往派单站点领取拣选单,完成绑定,接收下架任务。

(2) AGV自动前往相关的下架站点获取商品,在各个下架站点的工作人员将所需商品从货架上取下放入机器人所带空货架中,如图2所示。

图2 智能机器人与运输货架

(3) 当AGV获取到拣选单中的所有商品后,自动前往播种站点。

(4) AGV到达播种站点后,工作人员会将运输货架上的商品取下并进行二次分拣,完成后AGV返回派单站点领取下一个拣选单并重复上述过程。拣选流程如图3所示。

图3 拣选流程

2 仿真系统架构

本次仿真采用C++编程语言,使用Qt Creator平台编写完成。

从系统的整体功能上,本文所研究的仿真系统分为人机交互模块、模型模块、动画模块以及结果输出模块[3-6],如图4所示。

图4 人机交互界面

其中人机交互模块为系统开始运行前用于调节机器人数量、人员数量等参数的UI界面;模型模块包含了模拟场景中的机器人、各个站点、工作人员等对象;动画模块主要负责将开始仿真开始后的运行图像实时更新至窗口界面上;结果输出模块用于将一个仿真循环结束后的结果输出到一个TXT文本之中[7-10]。

2.1 人机交互模块与模型模块

2.1.1人机交互模块

人机交互模块主要负责操作人员对仿真参数的调节。根据实际研究背景中的业务场景,现场日常需要调节的内容主要有机器人数量、下架人员数量、播种墙数量,因此在仿真中这几项参数必须是可调的。此外,需要对场景的运行时间以及仿真系统的运行时间做出调节,因此添加2项与时间相关的参数。

综上所述,界面上的主要参数包括循环时间、机器人数量、人员数量、播种墙数量、加速倍数。

1) 循环时间与加速倍数。循环时间即为所模拟的业务流程的工作时间,单位为秒。通过在程序中建立一个计时器,使其定时发出信号促使各个对象不断更新其当前的状态,从而模拟整个业务流程的运转。

由于实际场景的工作时间较长,若要快速地得到结果,那么在模拟时进行加速是必不可少的。加速倍数参数会影响计时器中定时发出信号的周期,从而调节系统的运行频率。

2) 机器人数量、下架人员数量、播种墙数量。机器人、下架人员、播种墙都是在实际业务中必不可少的,同时他们的数量都是可调的,因此,一旦在交互模块中确定好相应的数量,程序开始模拟后就会建立相应数量的不同对象。

2.1.2模型模块

由于本文的研究背景具体到某仓库的实际业务,因此模型的整体布局是完全根据现场实际进行设置的,配置相对固定,组成元素也较为简单,主要包括派单站点、下架站点、播种站点、货架、AGV、下架工作人员、AGV行走网格。其中,派单站点、下架站点、货架以及AGV行走网格数量固定,其余组成元素通过参数化建模方法,根据操作人员输入的参数即各个对象的数量,系统自动完成场景的搭建。由于实际的业务并不涉及到多层拣选,因此最终搭建的场景通过二维平面的形式进行呈现,如图5所示。

图5 仿真系统示例

1)派单站点模型。派单站点系统流程模型如图6所示。播种完成或处于空闲状态的AGV会自动前往派单站点接取下一个拣选单任务。

图6 派单站点系统流程模型

派单站点主要拥有以下属性与方法:

(1) AGV排队队列以及队列中AGV的个数。当检测到有新的AGV到达本站点后,其会将新到AGV放入队列之中并将计数加一;当队首的AGV完成派单后便会把此AGV从队列中弹出并将计数减一。

(2) 当前站点坐标。用于AGV规划行走路线时使用。

(3) 派单方法。对位于当前队列首位的AGV进行派单,派单时间取现场实测的平均值,每运行一次,派单剩余完成时间便减一,派单完成的同时,AGV对象便会被赋予整套的行走流程。派单方法伪代码如下所示:

1:if队列中AGV数量>0 then2: if队头AGV派单时间==0 then3: 为队头AGV绑定一张拣选单4: 更改队头AGV状态为“空闲状态”5: 将队头AGV从队列中弹出6:else7: 队头AGV派单剩余时间减1s8: end if9:end if

2) 下架站点模型。下架站点系统流程模型如图7所示。

图7 下架站点系统流程模型

在本次业务中一共有20个下架站点,这20个下架站点位于不同的巷道之中,编号依次从1到20。因此在仿真中需要创建20个下架站点模型,它们拥有部分相同的属性与方法:

(1) AGV排队队列。当检测到有新到AGV时便会将其放入排队队列;当有AGV完成当前站点的下架任务后,便会将其从队列中取出。

(2) 下架人员队列。队列最大容量为2。当下架人员来到一个下架站点后,下架站点便会将其放入队列之中。

(3) AGV停留坐标与下架人员停留坐标。分别用于AGV与下架人员规划行走路径时使用。

(4) 下架方法。当且仅当下架人员队列中有人时,AGV才能够进行下架,有几个下架人员便可以同时对几台AGV进行商品下架操作。下架方法伪代码如下所示:

1:if队列中AGV数量>=2 then2: if队头AGV派单时间==0 then3: 更改队头AGV状态为“空闲状态”4: 将队头AGV从队列中弹出5: else if当前站点下架人员数量>=16: 队头AGV派单剩余时间减1s7: end if8: if队伍第二台AGV派单时间==0 then9: 更改该AGV状态为“空闲状态”10: 将该AGV从队列中弹出11: else if当前站点下架人员数量>=212: 该AGV派单剩余时间减1s13: end if14:else if队列中AGV数量==1 then15: if队头AGV派单时间==0 then16: 更改队头AGV状态为“空闲状态”17: 将队头AGV从队列中弹出18: else if当前站点下架人员数量>=119: 队头AGV派单剩余时间减1s20:end if

3)播种站点模型。播种站点系统流程如图8所示。播种站点由多个子站点与一条缓冲队列构成。一个子站点同时只能播种处理一台AGV,当一台AGV完成当前拣选单的所有任务后,会首先行走至播种站点的缓冲队列,然后再被分配至空闲的子站点。

图8 播种站点系统流程模型

(1) 缓冲队列以及队列中的AGV数量。用于暂存AGV,当AGV到达后会先将其放入缓冲队列,待有空闲播种墙后,再将AGV从队列中取出。

(2) 子站点队列。仿真时根据播种墙数量创建相应数量的子站点并构成一个队列,用于接收缓冲队列中的AGV。

(3) 播种方法。对队列中已经前往子站点的AGV进行播种,每次循环扣减机器人的处理时间。播种方法伪代码如下所示:

1:for(int i=0;i<播种墙数;++i)2: if当前播种墙有AGV3: if当前站点AGV播种完成4: AGV状态更改为“空闲状态”5: 将AGV从播种墙中弹出6: 播种墙状态更改为“空闲”7: else8: AGV播种剩余时间减1s9: end if10: else if播种墙无AGV && 播种墙空闲11: if缓冲队列中有AGV12: 更改队头AGV状态为“空闲状态”13: 将该AGV从队列中弹出14: 当前播种墙状态更改为“占据”15: end if16: end if17:end for

4) AGV模型。AGV系统流程模型如图9所示。

图9 AGV系统流程模型

在整个仿真中,只有两种模型具有移动的功能,而AGV便是其中之一。它具有如下的属性与方法:

(1) 状态码。共有三种状态,分别为行走中、工作中、空闲中,以0、1、2表示,用于分辨当前AGV的运行状态。

(2) 编号。每台AGV都拥有不同的编号,用于区分以及索引不同的AGV。

(3) 当前任务剩余时间。当AGV到达目标站点后便会开始在当前站点的任务,如派单、播种、下架等,此时便会不断减少剩余时间,当剩余时间归零时,当前站点的任务便会被判定为已完成,AGV就会离开当前站点。

(4) 目标站点。当AGV完成一个站点的任务后,便会更新当前的目标站点,后续的行走路线会根据目标站点进行计算。

(5) AGV坐标。记录当前AGV此刻的坐标,用于行走路线的规划。

AGV工作伪代码如下所示:

1:switch(AGV状态码)2:case空闲:3: 更新AGV的目的地4: 更改AGV状态为“行走”5: break6:case行走:7: if AGV到达目的地then8: AGV进入站点队列9: 更改AGV状态为“工作”10: else11: AGV向目的地继续行走12: end if13: break14:case工作:15: break16:end switch

5) 下架人员模型。下架人员系统流程模型如图10所示。下架人员为另一种具有移动功能的模型,只有有人在的下架站点才能够正常工作。下架人员模型主要有以下的属性和方法:

(1) 状态码。与机器人模型相同,分为空闲状态、行走状态、工作状态等三种,用于分辨下架人员当前的状态。

(2) 编号。每个人都拥有不同的编号,拥有区分以及索引不同的人员模型。

(3) 目标站点。当人员所在站点人数大于所需人数时,多余人员便会切换为空闲状态,此时才能触发更新当前人员的目标站点,同时根据目标站点规划行走路线。

图10 下架人员系统流程模型

2.2 动画模块与输出模块

2.2.1动画模块

动画模块是本次车到人仿真研究的核心部分之一,其可以实时显示仿真过程中各个模型的运行状态,包括派单站点、下架站点、播种站点、AGV以及下架人员。

动画模块主要依靠定时器不断触发各个模型更新状态进行工作。当通过人机交互模块完成定时器的设置后,便可以根据相应的周期触发动画场景更新。默认更新周期为1 ms,即每毫秒更新一次场景,仿真流程的主循环便是依靠动画模型的定时更新完成。

1)具体流程。如图11所示,采用可设置时间间隔的定时器触发各个模型进行状态更新,定时器触发的每一帧都代表实际的每一秒,避免了时间与画面更新速度不匹配的问题。定时器的时间间隔范围为1~1 000 ms,可根据需要自由调节。

图11 动画模块系统流程

动画模块的主循环伪代码如下所示:

1:创建定时器2:while(触发定时器)3: 调用派单站点派单方法4: 调用下架站点下架方法5: 调用播种站点播种方法6: 调用AGV工作方法7: 调用下架人员工作方法8: if达到设定循环次数9: break10: end if11:end while

2) 场景更新。动画主循环的重点在于更新二维的业务场景,其中AGV与下架人员的位置是关键,而位置与路径规划密不可分。

从图5可以看出,AGV的活动范围是一个T形区域。在每一帧中,AGV都会根据自身当前坐标与目标坐标进行判断,下一步该往哪个方向前进。其路径规划原则如图12所示。

图12 AGV路径规划原则

从图5同样可以看出,下架人员的活动范围是一个由下架站点和机器人区域构成的鱼骨区域,其行走原则如图13所示。

图13 下架人员路径规划原则

2.2.2输出模块

输出模块主要负责在仿真结束后将结果导出到一个TXT文本中,目前导出的结果主要为整个系统的完成单量、时间、播种墙数量、下架人员数量以及AGV数量,用于更好地呈现不同人员设备配置下的系统工作能力。

3 业务仿真

3.1 订单数据

仿真中采用的订单来源于简化后的实际业务场景。在现场记录实际拣选单中各个订单的SKU数与商品件数,同时记录每台AGV负责不同拣选单时在每个站点的停留时间,将所有数据以拣选单为单位进行汇总处理从而形成一个拣选单池,进行仿真时随机从拣选单池中选择一项派给AGV。AGV在各巷道下架停留时间如表1所示。

表1 AGV在各巷道下架停留时间统计

根据表1数据,得出不同拣选单在各个站点下架时间的经验公式,用于在仿真中生成模拟订单。

(1)

式中:t为AGV在当前站点的下架时间;l为当前巷道的最远拣选距离;ni为当前巷道每个SKU的件数。

设下架人员步行速度为1 m/s,由于在一条巷道中拣选需要一次往返,因此取时间为2l;每个巷道需要下架的SKU数越多,则停留时间越长,平均下架一件商品花费1 s,由于找货具有不确定性,因此再乘以一个找寻系数,取1~2之间的随机数;最后需要将所有商品倒入AGV的物料架中并放行,约花费5 s。

拣选单播种时间记录如表2所示。

表2 拣选单播种时间记录

根据经验播种时间主要受到订单行数量以及商品总件数的影响,得到以下经验公式:

t=order×(1~3)+n×(2~5)

(2)

式中:t为播种总时间;order为订单数;n为商品总件数。

3.2 仿真结果

通过控制变量法,在不同AGV数量下,调节下架人员与播种墙数量,得到不同的拣选效率,如图14所示。仿真结果如表3所示。

(a) 10台AGV

(b) 20台AGV

(c) 30台AGV

(d) 40台AGV图14 不同配置下效率统计

表3 仿真结果

时间/hAGV数量下架人员数量播种墙数量完成单量9401052 1149402052 32394020104 49094020195 54094025195 95894030195 97794035195 94194040195 8479301052 1899301552 2949302052 16293010103 83193010193 77293015103 91893015194 18393020103 80593020194 50993025194 6449201052 058

续表3

从图14中可以看出,将数据按照AGV数量分为4类(10、20、30、40),在每类中总体按照下架人员的数量进行排序,更进一步,在每个人员数量级别中再对播种墙数量从小到大进行排序(用分隔线分开)。最终可以得到较为清晰的结果。

(1) 从结果中可得不同数量AGV条件下的最大出单量,由于订单生成具有随机性,因此得出的结果具有浮动性。40台AGV在9个小时不间断的工作时间下最大单量约为5 900,30台AGV约为4 600单,20台AGV约为3 200单,10台AGV约为1 600单左右。

(2) 从图14可以看出,在固定的下架人员数量下,随着播种墙数量的增加,最终出单量会趋于饱和;此外,将(a)-(d)进行对比观察,在相同播种墙数量下,随着下架人员数量的增加,最终出单量同样会趋于饱和,因此可以从中选取最少的人员设备配置以获取最大的出单效率。从当前的仿真结果中可以得出:40台AGV的最佳配置约为30个下架人员,19个播种墙;30台AGV约为20个下架人员,19个播种墙;20台AGV约为10个下架人员,10个播种墙;10台AGV约为10个下架人员,5个播种墙。

4 结 语

本文以实际仓库业务为背景,研究设计了一个仿真程序用于优化人员设备的配置数量,进行了数十次的仿真模拟,并简单分析结果,得出以下结论:

(1) 本文在进行仿真时,引入了人的模型,由于现场实际操作时,人的工作状态具有较高的随机性,因此根据现场运营实测的数据构建了相应的数学模型,对比其他较为理想的仿真研究更加贴近现场实际,得出的结果更为真实。

(2) 本文根据实际业务的拣选流程进行了仿真研究,最终得到了在不同配置下的拣选效率以及最优的数量配置:40台AGV的最佳配置约为30个下架人员,19个播种墙;30台AGV约为20个下架人员,19个播种墙;20台AGV约为10个下架人员,10个播种墙;10台AGV约为10个下架人员,5个播种墙。

(3) 本文在设计仿真程序时,有选择性地采用了较为理想化的设计,例如忽略了AGV在移动时的避让与拥堵以及在各个站点的排队情况,而排队与拥堵在现场实际中为不可忽视的因素,所以导致仿真结果与实际情况有所偏差,在今后的研究中需要考虑更为细致的路径规划与AGV之间的避让问题。

(4) 本文在生成订单时是根据现场的实际记录时间进行随机生成的,公式具有经验性与随机性,导致在相同配置下输出的结果会有较大的浮动性,甚至会出现低人数配置的输出结果高于高人数配置,因此需要在经验公式加入更多的约束条件,进行完善与进一步的验证。

(5) 本文的研究背景较为具体,但是整体的仿真架构以及更为细致地引入人的随机性行为,对于日后的其他仿真研究具有一定的参考性。

猜你喜欢
空闲队列站点
基于车车通讯的队列自动跟驰横向耦合模型
队列队形体育教案
队列里的小秘密
以“夏季百日攻坚”推进远教工作拓展提升
“鸟”字谜
西湾村采风
彪悍的“宠”生,不需要解释
积极开展远程教育示范站点评比活动
青春的头屑
怕被人认出