基于改进单元分解法的全覆盖路径规划
Coverage path planning based on improved cellular decomposition
通讯作者: 宋伟
收稿日期: 2022-11-22
| 基金资助: |
|
Received: 2022-11-22
作者简介 About authors
吴靖宇(1997—),男,硕士研究生,主要研究方向为定位导航 。
朱世强(1966—),男,教授,博士,主要研究方向为机械电子控制 。
宋伟(1984—),男,副教授,博士,主要研究方向为壁面无人维护作业技术、非结构化环境自主决策技术 。
施浩磊(1986—),男,高级工程师,硕士,主要研究方向为大宗油气计量测试、爬壁机器人装置及应用 。
吴泽南(1989—),男,高级工程师,本科,主要研究方向为大宗油气计量测试、爬壁机器人装置及应用 。
传统的单元分解法在静态已知环境中进行全覆盖路径规划时, 若障碍物分布不规则或具有较多的凹形障碍物, 则所得的单元数量较多, 这导致最终路径易出现较多的冗余和不必要的转向。首先, 将栅格地图分解为若干个路径片段, 每个路径片段由位于同一行且左右相邻的栅格组成; 然后, 合并这些路径片段以生成单元; 再基于贪心算法和拓扑地图三次求解单元间的遍历顺序, 合并减少了单元数量, 并对局部路径进行了优化, 最终完成遍历路径的规划。仿真结果验证了所提算法的有效性, 且规划的路径具有更少的冗余和转向次数。
关键词:
When the traditional cellular decomposition method is used for complete coverage path planning in a static known environment, if the obstacles are irregularly distributed or many concave obstacles exist in the environment, the number of cells obtained is large. This finally leads to much redundancy and unnecessary steering in the final path. Firstly, the grid map is decomposed into several path segments, each of the path segment is composed of grids located in the same row and adjacent to the left and right. Secondly, these path fragment are merged for generating cells. Thirdly, based on greedy algorithm and topological map, the traversal order between cells is solved three times to merge and to reduce the number of cells, and the local path is optimized. Finally, the planning of traversal path is completed. Simulation results show that the algorithm is effective and the planned path has less redundancy and steering times.
Keywords:
本文引用格式
吴靖宇, 朱世强, 宋伟, 施浩磊, 吴泽南.
WU Jingyu.
0 引言
当在静态已知环境中进行全覆盖路径的离线规划时, 单元分解法是一种常用的方法[16-17]。该方法的实现过程主要分为两个步骤, 分别为划分单元和求解单元间遍历顺序。其中划分单元是指将待遍历的区域划分为若干个互不重叠的子区域。传统的单元分解法在此步骤采用的是根据障碍物的形状和位置划分单元的方式, 包括: Trapezoidal分解[18]、Boustrophedon分解[19-21]和Morse分解[22-23]。而求解单元间遍历顺序则是一个旅行商问题, 常用的方法包括深度优先搜索[24]、模拟退火法[25]、蚁群算法[26]、粒子群优化算法[27]、遗传算法[28-29]、强化学习[30]和深度强化学习[31]等。
但传统的单元分解法在障碍物分布不规则和凹形障碍物较多的场景下却易出现较多的冗余路径和转向次数。其中分布不规则是指在栅格地图上, 各个障碍物的几何中心一般位于不同的行和列。日常生活中椅子、凳子等物件即会因人们的使用而成为分布不规则的障碍物。凹形障碍物则可见于办公区域等场景, 例如只有一扇门进出的房间, 其四周墙壁即可视为凹形障碍物。在这两种场景中, 待遍历区域的形状变得不规则, 使得传统的单元分解法所得单元的数量较多。而单元数量的增加会使得每个单元的平均面积减少, 造成传统的单元分解法难以在更大的范围内应用并优化局部路径, 故易产生较多的冗余路径和转向次数。对此, 本文提出一种改进的规划算法, 目的是减少最终路径的冗余和转向次数。改进后的单元划分通过在栅格地图上合并路径片段来实现(路径片段由位于同一行且左右相邻的栅格组成)。这样, 单元的划分不再完全依赖于障碍物的形状和位置, 而是兼顾了单元内的路径规划。同时, 为了减少单元的数量, 在求解单元间遍历顺序时, 结合贪心算法和拓扑地图进行三次求解, 不断合并单元, 并对局部路径进行了优化。
本文的结构安排如下: 引言部分介绍了路径规划的研究现状和传统单元分解法存在的一些不足; 第1节阐述了路径片段初步合并生成单元的过程; 第2节阐述了基于贪心算法和拓扑地图的单元间遍历顺序的求解过程; 第3节进行了仿真实验, 其结果验证了本文算法的有效性; 第4节对全文进行了总结, 指出当前本文算法存在的不足。本文的主要创新点在于: 改进了传统单元分解法划分单元的方式, 并通过对单元的合并, 降低了在障碍物分布不规则和凹形障碍物较多的场景下单元划分的数量, 减少了冗余路径和转向次数。
1 单元初步合并生成
本节通过合并路径片段初步生成单元, 以实现对待遍历区域的单元划分。相关步骤包括: 栅格地图初始化、生成路径片段、确定遍历起始单元和合并路径片段。
1.1 栅格地图初始化
首先, 建立平面直角坐标系, 其原点O位于地图左上角, 向下为X轴, 向右为Y轴, 则第a行、第b列栅格可以用坐标(a, b)表示。
然后, 建立与栅格地图对应的同维度矩阵, 并将待遍历栅格以数字0表示, 将障碍物以数字1表示。为获取该矩阵对应位置的数值, 定义函数F(a, b)如下:
设地图上所有的栅格组成集合Call, 则其中待遍历栅格可以表示为
1.2 生成路径片段
定义路径片段如下: 地图上位于同一行且未被障碍物阻隔的全部连通栅格的有序排列集合, 则第R行的某一路径片段CR={(xR, y1), (xR, y2), ⋯, (xR, yr)}满足:
设某一地图的待遍历区域通过划分共生成了n个路径片段, 则它们组成的集合Cpath={C1, C2, ⋯, Cn}满足:
图 1所示为一个生成路径片段的示例(图中黑色栅格为障碍物, 白色栅格为待遍历区域, 下同), 其中属于同一路径片段的栅格以线段依次相连。显然, 每条线段均可作为机器人的潜在移动路径, 而单元则可通过合并这些路径片段来生成。
图1
1.3 确定遍历起始单元
假定机器人的直线运动平行于坐标轴, 且平均速度为v; 机器人每转过90°视为一次转向, 且所需时间为t。机器人在从坐标为(a, b)的栅格移动到坐标为(c, d)的过程中共转向M次, 直线运动的总路程长度为L, 则该次移动所需的总时间为
若在该时间内机器人始终以平均速度v做直线运动, 则可移动距离为
记P=vt, 则机器人从栅格(a, b)移动到(c, d)的等效路径长度为
由于v和t的值仅与机器人的自身性能有关, 数值可由实验测出。当机器人的型号确定后, 参数P即为一个常量。因此, 由式(7)计算所得的等效路径长度L′可作为评价路径优劣的评价指标。
以式(7)计算机器人的初始位置所在栅格到每个路径片段首尾两个端点栅格的等效路径长度, 根据最小值确定起始路径片段和起始栅格。若起始栅格位于起始路径片段的末端, 则对起始路径片段中的栅格进行倒序排列。后续由起始路径片段合并生成的单元即是遍历起始单元, 记为CS。
1.4 合并路径片段
路径片段的合并流程如图 2所示。
图2
具体步骤如下:
步骤1 生成空集合CMer, 对合并完成的单元进行存储。
步骤2 判断Cpath中是否存在某一路径片段Cm(1≤m≤n)且满足以下两个要求:
(1) Cm在地图上的相邻路径片段Cadj属于Cpath;
(2) Cadj仅有一个端点栅格与Cm的某一端点栅格上下相邻。其中, 两个路径片段相邻的定义为: 存在两个上下相邻的栅格分别属于这两个路径片段, 即
此外, 为避免起始栅格之前出现路径, 将起始栅格视为与所有栅格均不相邻。若存在Cm满足要求, 则将Cadj合并至Cm, 并跳转至步骤3, 否则跳转至步骤7。
图 3所示为本步骤中路径片段满足合并要求的两种情形。其中情形1表示两个路径片段除了一组端点栅格上下相邻, 还存在其他栅格相邻; 情形2则与之相反。
图3
步骤3 对合并后的Cm, 调整其栅格排列顺序, 确保以该顺序生成的移动路径连贯, 如图 4所示。
图4
图4
调整集合内栅格排列顺序后所生成的路径
Fig.4
Path generated after adjusting grid arrangement order in the column
步骤4 对调整后的集合Cm重复步骤2和步骤3, 直至Cm不满足步骤2中的要求。
步骤5 将Cm从Cpath中移除, 并添加至CMer, 以防止出现重复规划。
步骤6 重复步骤2~步骤5, 直至Cpath中不存在集合满足步骤2中的要求。
步骤7 将Cpath中剩余的集合记为CMer2。
则CMer和CMer2中的每个元素即为初次合并后的单元。这些单元具有以下两个特点:
(1) 以栅格排列顺序所生成的路径可无重复地遍历该单元;
(2) 该路径的起点为排列在首末位置的两个栅格之一。
图5
2 基于贪心算法和拓扑地图的单元间遍历顺序求解
本节求解单元间的遍历顺序, 以生成最终路径。相关步骤包括: 生成拓扑地图和执行3次基于贪心算法的求解。其中, 拓扑地图根据单元间的相邻情况生成, 用于求解过程中单元的再次合并。而在3次求解中, 后一次求解均基于前一次求解的结果, 以使得局部路径不断得到优化, 从而减少最终总体路径的冗余和转向次数。
2.1 生成拓扑地图
图6
其中, 每个单元均可视为一个节点, 而整个地图则可视为一个树形结构。为便于进一步合并单元, 进行如下定义, 从而将所有节点分为3类:
(1) 根节点: 遍历起始单元CS, 以及相邻节点数之和大于2的节点(一般为枢纽)。
(2) 通道节点: 用于连接两个根节点的节点。
(3) 分枝节点: 除以上节点的节点(一般为处于凹形区域的节点)。
2.2 第一次求解
第一次求解的流程图如图 7所示。
图7
具体步骤如下:
步骤1 生成集合CNav1=CS, 用于存储机器人先后经过的栅格, 即导航点。其中, 两个导航点之间的实际移动路径由A* 算法获取。
步骤2 判断是否存在未遍历的单元, 若不存在, 则跳转至步骤11。
步骤3 判断上一个遍历的单元CLast和它的相邻单元CNear是否满足优先遍历的两个要求:
(1) CLast与CNear均为通道节点;
(2) 单元CNear未遍历。
若是, 则将CNear作为下一个待遍历的单元CNext; 若否, 则选择最近单元作为CNext(即贪心算法)。
最近单元定义为: 以式(7)计算当前排列在集合CNav1末端的栅格, 其到某一单元的首端或末端栅格的等效路径长度即为所有未遍历单元中的最小值。
图8
步骤4 判断CNext是否存在已遍历的相邻单元。若否, 则跳转至步骤5;若是, 则跳转至步骤6。
步骤5 以式(7)分别计算CNav1的当前末端栅格, 及其到CNext的第一和最后一个栅格的等效路径长度, 以此确定最佳的单元内遍历路径起点。调整CNext的栅格排序, 将之添加至CNav1的末端, 并将该单元标记为已遍历。之后返回步骤2。
步骤6 与步骤5操作类似, 以最优方式将CNext中的栅格坐标添加至CNav1的末端, 并以式(7)计算此时由CNav1生成的路径的等效路径长度。
步骤7 获取与CNext相邻的所有已遍历的栅格, 并寻找这些栅格在CNav1中的排列序号, 设最小序号为Nmin、最大序号为Nmax。
步骤8 将CNext内所有栅格以正序插入CNav1中的Nmin-1处(如图 9所示, 其中箭头方向代表栅格的遍历顺序), 计算此时CNav1的等效路径长度。
图9
图9
将CNext以正序插入CNav1中的Nmin-1处
Fig.9
Inserting CNext into Nmin-1 of CNav1 with positive order
再将CNext内所有栅格以倒序插入至CNav1中的Nmin-1处, 再次计算此时CNav1的等效路径长度。
步骤9 重复步骤8, 但每次CNext内所有栅格的插入位置在上次位置的基础上右移一位, 直至Nmax+1处。
步骤10 寻找步骤8~步骤9中获得的最短等效路径长度, 将之与步骤6所得的等效路径长度进行比较, 选取最小值。将对应的添加方式作为CNext的最终添加结果, 并标记相应的单元为已遍历, 之后返回步骤2。
步骤11 根据最终所得导航点集合CNav1, 以A* 算法生成机器人的实际运动路径, 若在生成时某导航点已在已生成的路径中, 则跳过。
图 10为第一次求解结果(图中黑色三角形代表路径终点, 下同)。该路径的长度为116个栅格, 转向次数为48。
图10
2.3 第二次求解
第一次求解时未合并分枝和通道节点, 导致单元的数量较多。而未在初始时就合并的原因在于, 该分枝或通道的遍历起点栅格还未确定。因此, 第一次求解完成后, 依托于第一次求解的结果, 将连接两个根节点的位于同一通道中的通道节点进行合并。同时, 对每个分枝, 从位于其末端的分枝节点开始, 对分枝内的每个节点进行判定: 若某个分枝节点的父节点在第一次规划时先于该节点遍历, 则将该节点合并至其父节点。
合并单元时需调整单元内栅格的排列顺序, 方法与第一次求解时的步骤7~步骤9类似, 此处不再赘述。
图11
图12
图12
合并单元前后的规划路径对比
Fig.12
Comparison of paths planned before and after cells mergence
图13
图14
2.4 第三次求解
在第二次求解时可能出现以下两种情形: 同一分枝中某一子节点先于其父节点遍历, 以及分枝中某一节点先于该分枝所在根节点遍历。为进一步减少单元的数量, 将这些节点合并后再进行规划。
节点的合并方式以及第三次求解获取CNav3的步骤与第二次类似, 此处亦不再赘述。
图15
图16
3 仿真实验与分析
图17
图17
场景1下不同算法的路径规划结果
Fig.17
Path planning results of different algorithms in Scenario 1
图18
图18
场景2下不同算法的路径规划结果
Fig.18
Path planning results of different algorithms in Scenario 2
表1 场景1下不同算法的路径规划结果比较
Table 1
| 算法 | 单元数量/个 | 路径长度/个 | 路径重复率/% | 转向/次 | 等效路径长度/个 |
| 本文算法 | 37, 25, 24 | 1 366 | 8.07 | 306 | 1 978 |
| Boustrophedon 分解+贪心算法 | 37 | 1 446 | 14.40 | 338 | 2 122 |
| Boustrophedon 分解+遗传算法 | 37 | 1 487 | 17.64 | 350 | 2 187 |
| 生物激励神经网络算法 | - | 1 461 | 15.59 | 434 | 2 329 |
表2 场景2下不同算法的路径规划结果比较
Table 2
| 算法 | 单元数量/个 | 路径长度/个 | 路径重复率/% | 转向/次 | 等效路径长度/个 |
| 本文算法 | 47, 31, 31 | 1 457 | 13.39 | 334 | 2 125 |
| Boustrophedon 分解+贪心算法 | 39 | 1 678 | 30.58 | 394 | 2 466 |
| Boustrophedon 分解+遗传算法 | 39 | 1 614 | 25.60 | 388 | 2 390 |
| 生物激励神经网络算法 | - | 1 669 | 29.88 | 512 | 2 693 |
由实验结果可以看出, 当在相对复杂的地图中进行全覆盖路径规划时, 无论是障碍物分布不规则的场景, 还是凹形障碍物较多的场景, 本文算法所生成的单元在规划求解的过程中逐步被合并, 其数量不断减少, 且最终的单元数均少于Boustrophedon分解。同时, 本文算法所得遍历路径的重复率约为3种对比算法的50%, 表明路径具有更少的冗余, 且转向次数也更低。此外, 等效路径长度也表明, 本文算法规划的路径更优。
4 结论
在障碍物分布不规则或凹形障碍物较多的静态已知环境中, 传统的单元分解法存在单元划分数量较多的问题。这使得最终路径易出现较多冗余和不必要的转向。本文对传统的单元分解法进行了改进: 在划分单元阶段, 通过在栅格地图上合并路径片段来生成初始单元, 使得单元的划分不再完全根据障碍物的形状和位置进行, 而是兼顾了单元内的路径规划; 在单元间遍历顺序的求解阶段, 基于贪心算法和拓扑地图三次求解, 合并减少了单元数量, 并优化了局部路径。仿真实验结果表明, 相较于Boustrophedon分解方法和生物激励神经网络算法, 本文算法能够有效减少最终遍历路径的冗余和转向次数。但由于单元的合并和局部路径的优化存在较大的计算量, 故本文仅进行了三次求解, 且算法的实时性不够, 目前仅适用于离线规划, 这也是后续研究需改进的方向。
参考文献
面向山地徒步应急救援路径规划的改进蚁群算法研究
[J].
Research on improved ant colony algorithm for mountain hiking emergency rescue path planning
[J].
Research on path planning algorithm of autonomous vehicles based on improved RRT algorithm
[J].DOI:10.1007/s13177-021-00281-2 [本文引用: 1]
Improved A-star algorithm for long-distance off-road path planning using terrain data map
[J].DOI:10.3390/ijgi10110785 [本文引用: 1]
Development of path planning approach using improved A-star algorithm in AGV system
[J].
A potential field-based model predictive path-planning controller for autonomous road vehicles
[J].
Kinematic constrained bi-directional RRT with efficient branch pruning for robot path planning
[J].DOI:10.1016/j.eswa.2020.114541 [本文引用: 1]
A new method using knowledge reasoning techniques for robot performance in coverage path planning
[J].DOI:10.1504/IJCAT.2019.099503 [本文引用: 1]
基于自动导航的农业装备全覆盖路径规划研究进展
[J].DOI:10.13733/j.jcam.issn.2095-5553.2020.11.028 [本文引用: 1]
Research progress of agricultural equipment full coverage path planning based on automatic navigation
[J].DOI:10.13733/j.jcam.issn.2095-5553.2020.11.028 [本文引用: 1]
储油罐清洗机器人全覆盖路径规划研究
[J].DOI:10.19356/j.cnki.1001-3997.2020.02.066 [本文引用: 1]
Research of full covered path planning for oil tank cleaning robot
[J].DOI:10.19356/j.cnki.1001-3997.2020.02.066 [本文引用: 1]
Complete coverage path planning of autonomous underwater vehicle based on GBNN algorithm
[J].DOI:10.1007/s10846-018-0787-7 [本文引用: 1]
A novel algorithm of multi-AUVs task assignment and path planning based on biologically inspired neural network map
[J].DOI:10.1109/TIV.2020.3029369 [本文引用: 1]
Hybrid spiral STC-hedge algebras model in knowledge reasonings for robot cove-rage path planning and its applications
[J].DOI:10.3390/app9091909 [本文引用: 1]
An artificially weighted spanning tree coverage algorithm for decentralized flying robots
[J].DOI:10.1109/TASE.2020.2971324 [本文引用: 1]
Time-efficient and complete coverage path planning based on flow networks for multi-robots
[J].DOI:10.1007/s12555-011-0184-5 [本文引用: 1]
CPC algorithm: extra area coverage by a mobile robot using approximate cellular decomposition
[J].DOI:10.1017/S026357472000096X [本文引用: 1]
Coverage of known spaces: the boustrophedon cellular decomposition
[J].DOI:10.1023/A:1008958800904 [本文引用: 1]
基于单元分解的改进D* lite路径规划算法
[J].
Improved D* lite path planning algorithm based on cell decomposition
[J].
Morse decompositions for coverage tasks
[J].DOI:10.1177/027836402320556359 [本文引用: 1]
An improved complete coverage path planning method for intelligent agricultural machinery based on backtracking method
[J].DOI:10.3390/info13070313 [本文引用: 1]
R-DFS: a coverage path planning approach based on region optimal decomposition
[J].DOI:10.3390/rs13081525 [本文引用: 1]
An arable field for benchmarking of metaheuristic algorithms for capacitated coverage path planning problems
[J].DOI:10.3390/agronomy10101454 [本文引用: 1]
A new coverage flight path planning algorithm based on footprint sweep fitting for unmanned aerial vehicle navigation in urban environments
[J].DOI:10.3390/app9071470 [本文引用: 1]
Enhanced discrete particle swarm optimization path planning for UAV vision-based surface inspection
[J].DOI:10.1016/j.autcon.2017.04.013 [本文引用: 1]
Complete path planning for a tetris-inspired self-reconfigurable robot by the genetic algorithm of the traveling salesman problem
[J].DOI:10.3390/electronics7120344 [本文引用: 1]
Complete coverage path planning using reinforcement learning for tetromino based cleaning and maintenance robot
[J].DOI:10.1016/j.autcon.2020.103078 [本文引用: 1]
Coverage path planning for decomposition reconfigurable grid-maps using deep reinforcement learning based travelling salesman problem
[J].DOI:10.1109/ACCESS.2020.3045027 [本文引用: 1]
/
| 〈 |
|
〉 |

