前端路径规划/搜索
1.1.1.1 Sampling-based methods 基于采样的方法
• Probabilistic roadmap (PRM)
• Rapidly exploring random tree (RRT)
• RRT*, informed RRT*
1.1.1.1.1 RRT算法
随着动图的进行,在环境中生成很多随机的不重复的采样点,引导树不断的扩散向未知环境分的越来越密,覆盖的范围会越来越大,最后我们希望随着采样的不断增多,在由采样组成的图里会得到一条质量越来越好的连接起点和终点的我们期望是最短的一条路径。
1.1.1.1.2 PRM概率路线图
基于随机采样PRM算法:
在图里随机的撒很多采样点,如上图绿点表示,之后尽可能的将在拓扑结构或欧式距离上相邻的其他节点使用边进行连接,同时会检查边是否会经过障碍物以及节点本身是否落在障碍物里,如果这些条件都没有通过,那么这些节点或边会从图中删除,最后会得到一个由节点和边组成的图。
基于随机采样RRT和RRT*算法:
RRT:快速拓展随机生成树的算法,随着采样的进行,这个树不断的往外拓展,同时,尽量的维护上面一条起点到终点的最短的一条路径。(很难收敛到直线)
RRT*:是RRT的升级版本,在每次采样过后,会在采样点的周围重新组织树,会在采样点的周围判断,已经存在的采样点能否通过新点,维护一条连接起点终点的更短的路径。随着采样的增多,RRT*显著的比RRT收敛于一条直线。
混合A*:在一个网格里只维护一个状态,当网格里出现一个从起点到终点更好的状态时,取代之前状态储存的结果。
1.1.1.2 Search-based methods 基于搜索的方法
• General graph search: DFS, BFS
• Dijkstra and A* search
• Jump point search
1.1.1.2.1 A*算法
基于搜索方法:A*算法
这里的地图是二维的栅格网络地图,每个图里的节点称为一个node周围的邻居是八连通的即允许上下左右平移和对角的移动,彩色部分就是在图中搜过扩散的节点,灰色就是有障碍物的节点,不可通行的节点,一根线就是最后找到的最短路径,
基于搜索的算法:
(1)每一个搜索的问题,一定有相对应的节点到节点的搜索图,我们抽象成在拓扑上互相连接的图,图里节点之间的连接可以是有向也可以无向,节点之间的连线称为边。
Dijkstra’s vs. A*
向整个图均匀扩大,最终找到一条最优路径,代价较大
A*算法,具有指向性,高效,最终找到最优路径
A*与进阶版本跳点搜索对比
JPS:跳点搜索
在尽可能减少在A*搜索中图里需要扩散到搜索中的节点,上图蓝色和绿色的区域就是A*在搜索中加到搜索范围的节点,增加搜索复杂度,JPS找到某种机制,在从起点出发经过若干次跳跃,直接到达到终点,极大提高效率。但,并不一定在所有的环境下都可以比A*提高效率,有很多局限性。