OMPL 的 PathSimplifier 类中实现了几种用于路径简化和平滑的算法。这些算法包括:
-
reduceVertices:
- 算法描述:通过尝试连接路径上的非相邻节点来简化路径。如果两个节点之间的直线路径无碰撞,则删除中间的节点。
- 特点:主要用于减少路径上的节点数量,适用于去除不必要的转折点。
-
ropeShortcutPath:
- 算法描述:使用RRT-Rope方法,以确定性顺序尝试连接路径上的非相邻状态,从而缩短路径。连接尝试优先考虑最远的状态。
- 特点:使用确定性顺序,效率较高,适用于大规模无障碍环境。
-
partialShortcutPath:
- 算法描述:使用Partial-Shortcut方法,随机选择路径上的点并尝试连接,从而缩短路径。与
reduceVertices
不同,此方法不仅采样路径上的关键节点,还采样路径中的中间点。 - 特点:随机选择连接点,不确定性较高,适合快速改进路径,但可能会产生冗余的简化操作。
- 算法描述:使用Partial-Shortcut方法,随机选择路径上的点并尝试连接,从而缩短路径。与
-
perturbPath:
- 算法描述:通过随机扰动路径上的随机点来优化路径。这是一个迭代过程,通常与
partialShortcutPath
结合使用。 - 特点:适用于非度量空间的优化目标,对路径长度的优化效果不明显。
- 算法描述:通过随机扰动路径上的随机点来优化路径。这是一个迭代过程,通常与
-
collapseCloseVertices:
- 算法描述:尝试连接路径上相近的非相邻状态,并移除中间状态,从而缩短路径。
- 特点:用于进一步简化路径,减少路径上的冗余节点。
-
smoothBSpline:
- 算法描述:应用B样条平滑算法,通过插值和节点调整使路径更加平滑。在每一步中细分路径并更新状态以改进平滑度。
- 特点:显著增加路径上的状态数量,假设三角不等式成立,不适用于非度量空间。
-
simplifyMax:
- 算法描述:结合多种简化和平滑操作对路径进行最大化简化。包括节点删除、平滑和优化等操作。
- 特点:在非度量空间中跳过某些操作,以确保简化效果。
-
simplify:
- 算法描述:在给定时间内或直到满足终止条件前运行简化算法,对路径进行多次简化。
- 特点:提供时间限制和终止条件,确保简化在有限时间内完成。
-
findBetterGoal:
- 算法描述:通过采样新目标状态并尝试连接到路径末端来改进路径。
- 特点:主要用于路径末端的改进,适用于动态目标场景。