随着电商行业的蓬勃发展,企业为提升服务效率与质量,对无人自动化的物流仓储需求激增,随之而来的则是要解决,如何能合理调配无人仓储中的多种设备的技术难点。本期技术的真相带大家了解一种通用接驳逻辑的设计和实现。
一、概述
在无人自动化仓储领域,有各种设备需要接驳的情况。所面临的挑战是设备种类很多,两种设备间的接驳方式有差异,导致要实现每种设备接驳逻辑的时候,都要考虑其他 N 种设备的情况,非常复杂。而且单个接驳过程要保证安全。当出现大量需要接驳任务的时候,要保证高效。本文首先分析了几种接驳场景,然后以柔性设备和刚性设备接驳为例,抽象出一种通用的接驳逻辑(或协议)。
这种方法很好的做到设备控制逻辑与接驳逻辑的解耦,当出现新的接驳场景,只需要实现这个场景下的接驳逻辑即可,不用变动设备控制逻辑。旷视河图根据这套协议,很好的实现了一些重大项目,能够同时调度多种设备的接驳,并达到很好的效果。而且这个通用的接驳逻辑已经有良好的接口定义,只需将接口实现即可完成功能。最后讨论了更复杂场景——机械臂工作站码垛/拆垛情况,这套通用逻辑是能够很好的满足现实需要的。
本文内容涉及到较多行业专有名词,提前了解含义,方便大家阅读
二、行业名词解释
- AGV:Automated Guided Vehicle,自动导引车,是一类轮式移动机器人,沿着地板上的磁条、标记块,或者通过视觉导航或激光导航进行运动
- 拣选:仓储配送中心的配货人员按订单要求的商品名,规格,型号,数量,将商品从存储的货架或货垛中取出
- 分拣:拣选作业完成后,将拣选出的商品按照不同的客户,不同的配送路线进行分类,集中,等待装车配载,送货作业的流程
- 运力组:用于完成特定任务的一组运力资源的集合
- 移库:由于业务需要,将仓内物料移动至同一逻辑区下的另一个位置
- 容器:用于存放商品的器具,常见容器包括料箱、中转箱、托盘等
- PS: Pallet Shuttle,一种搬运托盘的 AGV
- CTU:Cargo Transport Unit,一种可同时搬运多个料箱的 AGV
- Chute 口:用于存放同一订单或同一目的地对应商品的格口
- 叠托:当托盘被捡空后,将多个托盘叠在一起,便于回收及存储
三、场景举例
在无人自动化仓储领域,由多设备协同来完成一次搬运是比较普遍的情况。下面举一些例子:
- CTU 小车将料箱传给箱线,或从箱线上收取料箱;
- AGV 小车将托盘传给托盘线,或从托盘线接收托盘;
- AGV 小车将托盘传给提升机,或从提升机接收托盘;
- AGV 小车乘坐提升机,去其他的楼层;
- 机械臂从箱线抓取料箱,将料箱码放在 AGV 小车顶举的托盘上。
以上例子都涉及两个或多个设备之间交互协同的情况,需要进行精准高效的控制,控制不好会造成安全事故,或卡死阻塞后续流程的情况,引发严重后果。
四、设备协同
接驳站点是两个设备产生容器交接的位置,人工工作站也是一个接驳站点,是设备和人做交接的站点。接驳站点首先需要一个位置,接驳的设备都可以到达这个位置,不是任何位置都可以做接驳的。其次,需要一套接驳流程,哪个设备先操作,如何交接等。
在当前设备多样性的情况下,接驳的流程就比较复杂了,需要设备之间的配合。例如A类设备与B类设备之间接驳,可以用一套流程,A类设备与C类设备之间接驳,如果定义一套新流程,那么A类设备的逻辑就会非常复杂了。
特别是现代自动化加工,自动化仓储领域,对柔性设备的使用大大增加,柔性设备具有更好的鲁棒性和自适应性,是世界上最先进的自动化应用技术,能够有效的提升生产率。
柔性设备可以很方便的增加减少,同时柔性设备种类也很丰富,因此在接驳时,需要定义一套通用的接驳逻辑,所有的设备都遵循该协议,只需要实现自己的逻辑,就能完成容器的顺利交接了。
从接驳站点的角度看,是一套规则,规定接驳的设备能不能来,能不能操作容器。这套规则要能够适用大多数场景。
值得注意的是,不能完全依赖设备探测的情况,可能会出事故。例如托盘线跟AGV 小车接驳,当 AGV 顶起托盘,托盘线就检测不到了,这时候如果后续托盘向前跟进,AGV 又没有及时离开,就会发生碰撞。
一次接驳过程可以分为:接驳前,接驳中,接驳后,三个阶段,下面分别讨论。
4.1 接驳前
对于柔性设备接驳给刚性设备,例如 AGV 小车将托盘,接驳给托盘线,是一个典型的场景。
要去接驳的 AGV 小车,从各自的位置出发,去同一个点送托盘,由于有路途的远近,以及路上的不确定性,就需要控制谁先谁后,这是一个局部的群体决策问题,而且需要有动态的调整。如果决定某个 AGV 小车可以先去接驳,那么其余的小车要如何处理,既要能够快速的衔接,又不要占住关键道路资源。
对于刚性设备接驳给柔性设备,例如托盘线接驳给 AGV 小车。
接驳前,需要 AGV 小车在接驳点附近待命,这样在托盘即将到达接驳点时,小车也能够快速的到达接驳点。
4.2 接驳中
接驳中,接驳的设备都到达指定位置,开始接驳,一般有两种接驳方式:
- 两个设备一起动作,例如滚动传输。为了保证鲁棒性,要求接收方比发送方要提前一点,防止发送方开始滚动,把货物卡住;
- 一个设备先放下容器,另一个设备再取走容器。要求一个设备在操作时,另一个设备要保持静止。
无论哪种情况,都要求对设备的精准控制,否则就会发生危险的事情。
4.3 接驳后
对于 AGV 小车接驳给托盘线的情况,接驳后,小车要迅速离开,防止阻碍其他的小车过来接驳。
五、通用接驳逻辑
从接驳站点的视角考虑,对于每一个过来接驳的设备,相当于该设备与站点的交互,类似于一套协议,无论什么设备,只要遵守接驳协议,就能顺利的接驳,而不用关心对方是什么设备。
这是对接驳站点的一次抽象和实例化的过程,接驳设备面向的是抽象的站点,而不同的站点,要有自己的实例化,控制接驳过程中的状态变化。
旷视河图在具体项目的实际应用中,逐步提炼出这套接驳协议,一方面满足项目复杂接驳场景的需求,另一方面具有很好的通用性和可扩展性,能够扩展为各种设备的接驳,而且具有很好的安全性和鲁棒性。下面详细阐述。
5.1 接驳协议
所有跟接驳站点交互的设备,都要遵循如下接口协议,具体的站点则要实现具体的逻辑。
请求到达 AskForArrival
AGV 小车在去站点之前调用,因为是群体决策,接口参数要包含此刻所有要去该站点的 AGV 小车,接口要返回这些小车过去的顺序。对于可以去站点的小车,要导航去站点,不能去的小车有两种选择,优先看是否可以在等待区等待(等待区参考后续章节),其次即可以在原地等待。
群体决策过程一般采用距离优先策略,防止堵住去站点的通路。距离优先意味着可以抢占,如果突然出现一个距离站点近任务,则距离远的任务会被改变目标位置,去队列或等待。除了距离优先,还可以有其他策略,例如要求货品的出库顺序,是一种特殊需求,但效率可能要打折扣。
由于刚性设备在建设时就已经在那里了,所以不需要调用 AskForArrival 接口。
已到达 Arrived
AGV 小车在到达接驳点之后调用,通知站点已经就位。这个通知会触发接驳对方的设备,继续后续的步骤。
同上,刚性设备也不需要调用 Arrived 接口。
请求操作容器 AskForOperate
AGV 小车(或刚性设备)在操作容器之前调用,申请是否可以操作待接驳的容器,接口要返回 true|false 。
完成操作 FinishOperate
AGV 小车(或刚性设备)在操作容器之后调用,表明已完成对容器的发送(或接收)。
已离开 Release
AGV 小车在离开接驳点之后调用,通知站点可以进行后续的其他接驳任务。
对于刚性设备,当容器离开接驳点时,也需要调用 Release ,表示接驳点已空,可以进行后续的接驳。
5.2 效率考量
以上各步虽然能够顺利完成接驳,然而考虑到大规模高效作业的情况下,还需要其他方面的辅助。
- 高优分配运力
当托盘线或提升机跟 AGV 小车接驳的时候,需要高优分配运力,迅速分配小车将托盘移走,否则该托盘会阻塞后续的托盘,进而拖慢系统的效率。
- 提前准备运力
当托盘线或提升机跟 AGV 小车接驳的时候,需要提前在接驳点附近准备运力,以减少小车的空驶距离,提前准备运力的时机比较关键,如果过早,则造成运力的闲置浪费。一般要预测托盘预计到达接驳点的时间,如果小于某个阈值,既可以开始准备运力。
- 送货后及时离开
去接驳点送货的 AGV 小车,在接驳完成后,要及时离开,一般是回到附近的休息区,当然去休息区的任务是可以中断的,如果有其他任务直接去执行其他任务。
- 接驳点选择
当一次搬运任务,有多个接驳点可用选择的时候(例如跨层搬运,可以选择多个提升机),需要一个接驳点选择策略,一般采用接收方设备的忙闲度优先策略。
旷视河图在实现通用接驳协议的同时,搭配以上各策略,在效率要求苛刻的项目中,也取得很好的效果,说明通用接驳协议可以跟各种算法优化策略结合,具有很好的灵活定制能力。以上各优化点涉及到调度系统的其他方面,具体不在本文的讨论范畴。
六、机械臂工作站
机械臂工作站是比较特殊的存在,一般机械臂的工作是拣选,或容器组合(码托,拆托),因此这种业务场景是围绕机械臂打造的一片工作区域。以码托为例,机械臂将很多原箱,按照一定的垛形,码在托盘上组成一个垛,这就需要机械臂将原箱从一个地方搬到另一个地方,搬出的位置称为来源位,放置的位置称为目标位。
机械臂码垛速度很快,准备原箱和托盘的速度赶不上码垛的速度,因此有时需要多个来源位和目标位。一般做法是围绕机械臂,规划若干站点,或是来源位,或是目标位,根据具体情况而定。AGV 小车在跟机械臂接驳时,同样要遵守站点的接驳协议,机械臂同时与若干设备接驳,需要更复杂的状态控制。
首先,机械臂需要知道每个来源位或目标位的状态,来源位是否有箱,目标位是否有托盘。其次,每个位置的状态变化需要通知机械臂做相应的操作。
- 来源位的箱子,在送到站点之前,调用 AskForOperate,确保机械臂可以接受来新的箱子;
- 来源位的箱子,在站点停稳后,调用 FinishOperate,通知机械臂来了一个新箱子;
- AGV 小车在去目标位之前,调用 AskForArrival,请求是否可以去目标位;
- AGV 小车在目标位停稳后,调用 Arrived,如果不需要降下托盘支架的话,就会触发码垛了。如果需要降下托盘支架,则要调用 AskForOperate和 FinishOperate,通知机械臂,目标位托盘支架已准备完成;
- AGV 小车在离开目标位后,调用 Release,通知机械臂目标位已空。
机械臂工作站是所有接驳场景中最复杂的,旷视河图在通用接驳协议的框架下,进行少量定制化改造,能够满足具体项目场景的需求,后续还要扩展协议,做出包含机械臂的通用接驳协议。
七、地图布局
设备接驳是一个系统工程,需要各个方面配合一起使用,才能达到最好效果。地图规划也是旷视河图提供的解决方案的一部分,通用接驳逻辑,再配合地图优化,能够达到更好的效果。下面介绍一些地图布局上的优化方案。
7.1 队列
在接驳站点之前规划队列,可以让 AGV 小车能够有秩序的进入站点,能够有效的防止在站点前拥堵。
如果站点只有一个出入口,可以规划分离队列(也叫等待位)。
7.2 休息位
对于AGV小车接货的场景,应在站点前规划几个休息位,让休息位的AGV小车能够及时来站点接货。
7.3机械臂
典型的机械臂码垛场景,一个来源位,4个目标位。在一个机械臂同时码多种箱型,且一个托盘上只有一种箱型的情况下,需要产生换托,因此目标位站点需要有一个队列。
首发:旷视研究院
作者:魏达
专栏文章推荐