常见路径规划
基于搜索的规划
【 Breadth-First Searching (☁️ BFS) 】 vs. 【 Depth-First Searching (⚡ DFS) 】
- 【适用于无权图】☁️ BFS 可找到最短路径 (但空间复杂度高);⚡ DFS 不一定可找到 (但可更快访问更多节点)
- 其中 ☁️ BFS 搜索过程图解如下:
【Dijkstra】 vs.【 Best-First Searching 】 vs. 【 💡 A* 】
- 这三个算法的主要区别在于选择
下一个节点
的依据不同
- 且一般不能处理
负
权边,对于含有负数边的图,通常需要使用Bellman-Ford
算法等- 其中 💡 A* 搜索过程图解如下:
算法 | 选择下一个节点依据 |
---|---|
Dijkstra | g(n) |
Best-First Searching | h(n) |
💡 A* | g(n) + h(n) |
-
A* 的常见拓展:关于加速,适应复杂、动态环境等方面
拓展 拓展思路 Bidirectional A*
同时从起点和目标进行双向搜索 Anytime A*
可以在任何时候停止搜索并返回当前的最佳路径 LRTA* (Learning Real-time A*)
逐步学习以改进其启发式函数 RTAA* (Real-time Adaptive A*)
基于当前环境和情况进行局部调整和优化 LPA* (Lifelong Planning A*)
在环境发生变化时,仅更新受到影响的部分 -
另外还有一大类是关于 A* 在动态环境下的
D*
的拓展拓展 拓展思路 D* (Dynamic A*)
在环境发生变化时,仅更新受到影响的部分 D* Lite
低复杂度简化版本 Anytime D*
在搜索过程中允许逐步改进路径解
基于采样的规划
【RRT】能够快速处理复杂环境
-
RRT 的常见拓展:
拓展 拓展思路 RRT-Connect
同时从起点和目标进行双向生成树 Anytime RRT*
可以在任何时候停止搜索并返回当前的最佳路径 Extended-RRT
在树的生长过程中使用更大的步长 Dynamic-RRT
动态环境下的 RRT*
能够找到最优路径 Informed RRT*
结合了启发式信息,能够加速搜索过程;能够找到近似最优解 Spline-RRT*
通过样条插值提高路径平滑