随着电子商务的迅猛发展, 快递包裹数量的急剧增加, 传统的人工分拣已不能满足要求, 交叉带分拣机等自动分拣系统虽然分拣效率较高, 但占地面积大, 一次性投入成本高, 而且一旦建成就不可改变, 柔性和灵活性差, 能耗高. 自动引导小车(AGV)高度的灵活性和低能耗可较好的适应现代物流“多品种、小批量、相对集中”的特点[1]. 因此基于AGV的快递包裹分拣系统成为智能物流近年来的热点之一, 其研究具有重要的实用价值.
早期的AGV运行时只能单向行驶, 因而适用环境受到局限, 主要应用于仓储、制造、港口码头、机场等领域完成物料搬运. 在这些行业中, AGV的应用大多表现出工作独立, 固定轨道, 行驶速度慢以及密集度低等特点[2,3]. 随着AGV技术的发展和成熟, AGV的运用也越来越广泛, 在物流领域, 轻小型的AGV被用于快递分拣近几年成为自动化分拣的热点. 不同于传统的AGV应用场景, 在快递分拣系统中, 为了满足分拣效率的要求, 通常会设几个甚至十几个上包点, 同时进行任务分发, 这就要求增加场地中AGV的数量以便及时处理这些任务. 在固定大小的场地中, AGV数量的增加会使得场地内AGV密集度增加, 这就使得基于AGV的快递包裹分拣场地中AGV数量较多、密集度较高.
我们定义密集度为可行走区域内单位面积内AGV小车的数量. 在实际系统中, 通常密集度超过0.05辆/单位面积, 就可称为高密集度, 低于或者等于0.05辆/单位面积称为低密集度. 基于AGV的快递包裹分拣是比较典型的高密集度AGV应用场景.
传统的路径搜索算法根据对环境信息掌握的程度分为两种[4]: 基于传感器信息的局部路径规划和基于环境先验信息的全局路径规划. 局部路径规划主要方法有人工势场法[5]、蚁群优化算法[6]、粒子群算法[7]、A*算法[8]等. 全局路径规划主要方法有可视图法[9]、自由空间法[10]、栅格法[11]等. 人工势场法容易产生死锁, 适应能力较差, 不能够满足AGV动态环境中实时规划路径的要求. 粒子群算法容易陷入局部极值点, 而且若参数选择不当, 会导致寻优过程中粒子的多样性迅速消失, 造成算法“早熟收敛”. 蚁群优化算法计算量大、收敛速度慢、求解所需时间较长, 不适合实时规划. 自由空间法和可视图法建立拓扑网络的过程相当复杂. 最重要的是这些路径规划算法都仅考虑了AGV自身因素, 忽略了其他AGV移动对其产生的影响, 在高密集度、AGV可自由行走的情况下, 容易造成拥堵. 通常情况下, AGV密集度越高, 场地的利用率也就越高, 分拣效率也就越高, 但是场地中AGV的密集度增加到一定程度后, 会导致拥挤, 甚至堵塞, 使得分拣效率下降. 针对这种情况本文提出CAA*(Congestion-Avoidable A*)算法, 算法以动态环境模型为基础, 对各个节点拥堵情况进行预测, 在路径规划时规避潜在的拥挤节点, 避免拥堵情况的发生. 为了验证本文算法避免拥堵的有效性, 本文分别使用CAA*算法和A*算法进行了一系列仿真实验. 实验表明, 本文算法在高密集度AGV场景下确实能避免拥堵, 增加场地AGV的密集度, 提高场地的分拣效率.
2 动态环境模型路径规划包含两个方面, 一是建立环境模型, 即对AGV工作空间(环境信息)进行有效表达, 是AGV导航定位的基础[12]. 二是进行路径搜索, 即寻找从起点到终点符合条件约束的路径. 以往的路径规划中环境模型往往是静态的, 一旦确定, 就不可更改, AGV仅考虑自身因素, 忽略了其他AGV移动对其产生的影响, 在高密集的场景下, AGV可能相互拥挤, 造成堵塞, 降低整个系统的效率. 因此, 本文采用栅格法建立动态环境模型, 栅格节点引入动态属性, AGV在进行路径规划和移动时, 其对周围的影响会实时的反映在地图上, 其他AGV在进行路径规划时通过对地图节点拥挤情况的判断, 规避拥挤节点和潜在的拥挤节点.
2.1 场地栅格化常见的建立环境模型的方法可概括为栅格地图法(grid map)[13]、几何特征地图法(geometric feature map)[14]、拓扑地图法(topologic map)[15]三种基本地图表示法.
栅格地图法是目前研究最广泛的方法之一. 该方法将机器人的工作空间分解为多个简单的区域, 这些区域称为栅格. 由这些栅格构成一个显式的连通图, 或在搜索过程中形成隐式的连通图, 然后在图上搜索一条从起始栅格到目标栅格的路径. 栅格地图信息直接与环境区域对应, 容易创建和维护, 方便AGV进行定位. 本文采用栅格法来建立环境模型. 以AGV小车尺寸为基础确定栅格的大小, 将场地映射成一系列规则的网格.
可通行的栅格被称为自由栅格; 不可通行的栅格, 称为障碍栅格. 栅格的节点分为有方向和无方向两种, 无方向即可以任意方向行走. 有方向又分为八邻域方向和四邻域方向. 根据快递包裹分拣AGV的运动特性, AGV只能水平和垂直方向行驶, 不可斜向行驶, 故本文栅格节点采用的是有方向的、四邻域的模型.
2.2 栅格节点的动态属性表示给每个栅格节点增加一个将要经过该节点的小车信息集合, 记为
假设当前节点为
传统的A*算法仅考虑了静态环境信息和当前AGV的信息, 而没有考虑场地中其他AGV对当前AGV的影响, 规划出来的路径可能造成拥堵, 尤其是高密集度AGV场景中, 拥堵严重时可能造成某块区域完全堵塞, 使得系统效率急剧下降. 本文在A*算法的基础上引入潜在拥挤节点的概念, 对可能发生的拥挤情况进行预测, 在路径规划过程中绕过拥堵节点或潜在的拥堵节点, 避免拥堵.
3.1 A*算法A*算法是Nilsson NJ[16]在Dijkstra算法基础上提出的, 是静态路网中最有效的直接搜索方法之一. A*加入了当前节点到目标结点的估计代价, 根据起始点经过当前结点到达目标点的代价决定搜索的方向, 大大提高了Dijkstra算法的效率. 定义估价函数为:
$ F(n) = G(n) + H(n) $ | (1) |
其中,
假设当前搜索的节点为
本文采用曼哈顿距离, 所以实际代价:
$ G(n) = G(n - 1) + |{x_n} - {x_m}| + |{y_n} - {y_m}| $ | (2) |
因为本文采用的栅格节点模型是四邻域方向. 所以
$ G(n) = G(n - 1) + 1 $ | (3) |
估计代价为当前点n到终点的曼哈顿距离:
$ H(n) = |{x_n} - {x_{\rm{end}}}| + |{y_n} - {y_{\rm{end}}}| $ | (4) |
由式(3)和式(4)可知当前节点n的最终估计函数为:
$ F(n) = G(n - 1) + 1 + |{x_n} - {x_{\rm{end}}}| + |{y_n} - {y_{\rm{end}}}| $ | (5) |
本文提出的CAA*算法在路径规划时通过增加潜在拥挤节点的通行代价, 从而避开潜在的拥挤节点, 所以算法的关键在于潜在拥挤节点的预测, 这需要借助于节点的动态属性集合
(1) 节点动态属性的更新
对于节点动态属性的更新, 不是每次更新整个地图所有节点的动态属性, 而是只更新节点动态属性有变化的节点, 引起节点动态属性变化的原因有两个: 一是小车路径变化, 小车路径变化之后, 小车未来要经过的节点发生改变, 从而引起路径上节点的动态属性的变化; 二是小车按照规划好的路径移动时, 引起小车路径上节点动态属性集合中二元组信息的更新或删除.
1) 二元组的增加
① 假设小车
② 将二元组
2) 二元组的更新
① 小车
② 对于小车
3) 二元组的删除
小车
(2) 潜在拥挤节点判断
假设当前搜索的节点为
时间约束为:
$ |t - {t_i}| < e $ | (6) |
其中,
记
对于节点
(3) 估计代价计算
假设小车
则对节点
$ H(n) = |{x_n} - {x_{\rm{end}}}| + |{y_n} - {y_{\rm{end}}}| + b\lambda $ | (7) |
其中,
则最终节点
$ F(n) = G(n - 1) + 1 + |{x_n} - {x_{\rm{end}}}| + |{y_n} - {y_{\rm{end}}}| + \lambda b $ | (8) |
(4) CAA*算法具体流程
算法具体的搜索过程如下:
1) 初始化, 创建开启列表(open表)和关闭列表(close表), 开启列表存储的是待搜索的候选节点, 关闭列表存储的是已经搜索过的节点.
2) 把起点加入open表中.
3) 检查open表, 假如为空, 则转到步骤7). 假如不为空, 则执行步骤4).
4) 选择open表中代价最小的点作为当前点, 检查当前点是否是终点, 假如是则转到步骤5), 否则将当前点的子节点加入open表中, 其中子节点需满足以下约束: ① 子节点可达; ② 子节点不在open表中; ③ 子节点不在close表中(子节点没有被搜索过). 并记录子节点的父节点为当前点, 最后将当前点加入close表中. 转到步骤3).
5) 将终点加入path表中, 并沿着父节点移动, 将其加入path表中, 得到的就是最短路径, 将path表反向输出即得到了最终的最短路径.
6) 计算当前小车理想状态下经过各节点的时间, 组成二元组, 加入到路径上的各个节点的动态属性集合
7) 结束搜索.
(5) 性能分析
本文算法是在A*的基础上改进而来的, 和A*一样, 都是一种启发式的Dijkstra算法, 大大减少搜索的栅格节点数量, 从而减少了搜索时间, 当然, 代价是有可能搜索到的路径不是最优解, 是次优解, 但是在AGV快递分拣这种不要求最优解的场景, 次优解也是可以接受的.
本文算法和A*算法的时间性能大致相当, 是毫秒级的, 并且算法稳定, 满足实时路径规划的要求.
4 实验结果及分析 4.1 实验设计结合某实际场地的设计, 仿真实验的场地大小栅格化后为91格×62格. 整个场地共有34个上包点(左边16个, 右边18个), 中间是投放口, 共270个. 任务的起点是上包点, 终点是投放口, 小车到达终点后, 将货物倒下, 则当前任务完成, 然后回到某一个上包点等待下一个任务.
实验中任务的终点(投放口)是随机生成的, 每次实验A*算法和CAA*使用相同的随机种子, 生成伪随机数列, 保证了实验生成的任务序列是一样的.
节点的拥挤阈值P定义为某一时间范围内(文中
为了确定算法能提高场地AGV密集度和系统分拣效率, 使用CAA*算法和A*算法进行仿真实验, 每次增加25辆AGV小车, 然后统计整个场地的分拣效率.
4.2 结果与分析实验结果如图1所示, 横坐标为密集度(辆/栅格), 纵坐标为分拣效率(件/时). A*算法其实是CAA*在拥挤阈值P设置为正无穷时的特例, 因为当拥挤阈值
表1是CAA*不同拥挤阈值下与A*峰值性能对比, 可以看到, 当拥挤阈值P设置为4时, 分拣效率最高, 相比A*算法, 场地AGV密集度提升了28.57%, 峰值分拣效率提升24.29%.
由上述分析可知, 本文提出的CAA*算法在高密集度的情况下能有效减少拥堵, 提高场地的峰值分拣量和场地AGV密集度.
5 总结与展望
本文着眼于快递包裹分拣系统的路径规划, 提出了一种能进行拥挤预测的CAA*路径规划算法, 解决在高密集度和较大规模的AGV场景中AGV相互拥挤而导致的效率下降问题. 该算法在传统A*路径搜索算法的基础上, 引入潜在拥挤节点的概念, 对栅格节点进行动态属性表示, 建立动态地图模型, 对节点未来的拥挤情况进行预测, 以规避潜在拥挤节点. 本文在实际场地上进行仿真, 通过实验可以看出, 本文算法在高密集度、AGV数量较多的情况下确实可以有效的避免拥挤, 提升场地AGV密集度和分拣效率. 本文算法仿真峰值分拣效率比A*提升了24.29%, AGV密集度提升了28.57%.
本文算法也存在一些不足, 从实验结果可以看到, 在同一个场地, 当密集度较低时, 本文算法CAA*比A*分拣效率要低, 这是由于潜在拥挤节点预测有偏差导致的, 潜在拥挤节点预测有所偏差主要有以下两个方面的原因, 一是本文对潜在拥挤节点预测结果的粒度分得较粗, 预测的结果只有是和否; 二是采用的是全局拥挤阈值, 实际上不同地图节点会发生拥堵的阈值应该是不同的. 因此, 下一步的工作, 我将从这两个方面入手, 一是可以尝试将预测结果用概率表示, 代表拥挤的程度, 对预测结果的粒度进行细分; 二是使用局部动态拥挤阈值, 使得节点设置的拥挤阈值更接近实际的拥挤阈值.
[1] |
Yuan RP, Dong TT, Li JT. The research on the application of AGV system in logistics sorting operation. Automation, Control and Intelligent Systems, 2016, 4(5): 80-83. DOI:10.11648/j.acis.20160405.12 |
[2] |
Qi BY, Yang QL, Zhou YY. Application of AGV in intelligent logistics system. Proceedings of the Fifth Asia International Symposium on Mechatronics. Guilin, China. 2015.
|
[3] |
Han L, Dang XL. A design of automatic equipment for cigarette sorting and stacking. Proceedings of 2015 International Symposium on Computers & Informatics. Paris, France. 2015. 1310–1315.
|
[4] |
鲍庆勇, 李舜酩, 沈峘, 等. 自主移动机器人局部路径规划综述. 传感器与微系统, 2009, 28(9): 1-4, 11. |
[5] |
宋建辉, 代涛, 刘砚菊. 基于改进人工势场法的移动机器人路径规划. 计算机工程与科学, 2017, 39(7): 1328-1332. DOI:10.3969/j.issn.1007-130X.2017.07.019 |
[6] |
左大利, 聂清彬, 张莉萍, 等. 移动机器人路径规划中的蚁群优化算法研究. 现代制造工程, 2017, 39(5): 44-48. |
[7] |
吴耀华, 张念志. 带时间窗车辆路径问题的改进粒子群算法研究. 计算机工程与应用, 2010, 46(15): 230-234. |
[8] |
王陈, 朱卫东. 基于A*算法的足球机器人路径规划
. 计算机系统应用, 2018, 27(1): 189-194. |
[9] |
Fu LC, Liu DY. An efficient algorithm for finding a collision-free path among polyhedral obstacles. Journal of Field Robotics, 1990, 7(1): 129-137. |
[10] |
沈杰. 复杂动态环境下机器人避撞路径规划. 机械设计与制造, 2017(11): 255-258. DOI:10.3969/j.issn.1001-3997.2017.11.065 |
[11] |
张波涛, 刘士荣, 董德国. 基于栅格-几何混合地图的移动机器人分层路径规划. 华东理工大学学报(自然科学版), 2011, 37(5): 621-626. |
[12] |
Vis IFA. Survey of research in the design and control of automated guided vehicle systems. European Journal of Operational Research, 2006, 170(3): 677-709. DOI:10.1016/j.ejor.2004.09.020 |
[13] |
隋岩. 智能移动机器人路径规划方法研究[硕士学位论文]. 哈尔滨: 哈尔滨工程大学, 2010.
|
[14] |
Bilò D, Disser Y, Mihalák M, et al. Reconstructing visibility graphs with simple robots. Structural Information and Communication Complexity. Piran, Slovenia. 2009. 87–99.
|
[15] |
Booij O, Terwijn B, Zivkovic Z, et al. Navigation using an appearance based topological map. Proceedings of 2007 IEEE International Conference on Robotics and Automation. Roma, Italy. 2007. 3927–3932.
|
[16] |
Nilsson NJ. Principles of Artificial Intelligence. Palo Alto: Tioga Publishing Company, 1980.
|
[17] |
李振. 室内环境下仿人机器人自主避障算法的研究[硕士学位论文]. 秦皇岛: 燕山大学, 2017.
|
[18] |
Yuan RP, Dong TT, Li JT. Research on the collision-free path planning of multi-AGVs system based on improved A* algorithm
. American Journal of Operations Research, 2016, 6(6): 442-449. DOI:10.4236/ajor.2016.66041 |