- Probabilistic Road Map
- Rapidly-exploring Random Tree
- Optimal sampling-based path planning methods
- Advanced path planning methods
- Implementation
-
一种 Sample-based 的寻找路径方法 (第一个介绍的,可能是代表算法), 将随机采样点连接为路图 (可以看做是对 Grid map 的简化),并在此基础上搜索路径,提高效率.
-
- 是概率完备的搜索算法,一定会有解(能够找到路径)
- 不需要在整个地图环境中搜索Grid map, 而是搜索简化版本的 Road map, 效率高
-
- 边界值问题: 没有考虑 Robot 的约束, 某些 Road map 的连线可能不适合 Robot 运动(eg 两个连线夹角太小)
- 算法冗长,不够高效
-
一种增量式的快速随机算法,在 Learning 的同时 Query, 当目标点或者其周围的点 (因为采样可能无法正好采集到目标点) 被采样到后, 则树结构的"生长"过程结束,由节点回溯父节点则可得到需要的路径. 该算法在复杂或高维环境下更高效,
-
-
使用 Sample 函数 (可选) 采样随机点 Xrand
-
使用 Near 函数 找到树结构上在 Xrand 附近的点 Xnear
-
使用 Steer 函数 从点 Xnear 向 Xrand 移动一定的距离 (StepSize) 生成点 Xnew
-
连接 Xnew 和 Xnear 生成edge Ei
-
使用 Collision-checking 检测 Ei 是否 collision-free, 若是则 Xnew 和 Ei 加入树结构, 若不是则删除.
-
重复 1-5 直到采样到终点或终点附近点.
-
-
- 相比 PRM, 能够更针对的生成一条到终点的路线, 算法的速度提升.
-
- 生成的路径可能不是最优的
- 还是用直线连接生成的路径, 对 robot control 不是最优的
- 在整个空间中采样
- 效率不够高 (可以对 Sample Near Collision-checking 等函数改进, 提高效率)
-
是一种数据的保存格式 (与 Road map 的树状结构不同)
我觉得查找的过程有点像二分法查找
Other variants: Spatial grid, hill climbing,etc
参考: https://blog.csdn.net/junshen1314/article/details/51121582从起点和终点同时生成树状 Road map, 当两个 "tree" 相连接的时候则找到路径. 可以提高查找路径的效率, 并且在存在 Narrow passage(狭窄区域)时效果较好[1], 但不是唯一解, 该问题更倾向于从改造 Sample 函数入手.
- 用于优化 RRT 生成路径
-
与 RRT 不同点 1:
以 Xnew 为中心, 设定距离为半径寻找所有的 Xnear, 而不是直接连接 Xnew 和 Xnear.
与 RRT 不同点 2:
根据 CostFunction (eg: Xnew 经过选中的 Xnear 到 Xinit 的距离) 选取合适的 Xnear 然后生成 Edge 加入到树结构.
与 RRT 不同点 3:
RRT*优化重点: 在将 Xnew 和生成的 Edge 加入树结构后, 检查刚刚选中的 Xnear 点经过 Xnew 到达 Xinit 的 Cost, 然后对于 Cost 大的原路径剪枝, 重新连接 Cost 小的路径,进行优化 (该优化过程在找到路径后不会停止,而是继续剪枝, 优化当前找到的路径)
RRT*演示视频
-
在运动的过程中不断重新开始路径规划 (将机器人当前位置不断作为 Xinit)
Anytime-RRT*论文