1.迪杰斯特拉算法总共就干了两件事:
【1】不断运行广度优先算法找可见点,计算可见点到源点的距离长度
【2】从当前已知的路径中选择长度最短的将其顶点加入S作为确定找到的最短路径的顶点。
2.A*算法
A算法也维持一个Open表。Open表中节点的优先级是依据 [公式] 的大小排列的, [公式] 值越小,被搜索到的优先级越高。
其实导航中路线类型就是A的代价模型
3.滚动在线RRT算法
步骤0:对起点、终点、工作环境、机器人的视野半径、步长进行初始化;
步骤1:如果终点到达,规划中止;
步骤2:对当前滚动窗口内的环境信息进行刷新;
步骤3:产生局部子目标;
步骤4:根据子目标及已知环境信息,在当前滚动窗口内规划一条优化的局部可行路径;
步骤5:依规划的局部路径行进一步,步长小于视野半径;
步骤6:返回步骤1。
其实就是一个动态的代价模型
4. 人工势场算法
用来处理障碍物的逻辑
5.BUG算法
主要用来做环线的绕行判断
比较
A、LPA以及D* lite都可以用于静态环境下移动机器人的路径规划,此时三者计算效率都相差不大,都利用了启发式搜索来提高效率,LPA和D Lite的增量式搜索在这时没有任何帮助,但对于动态环境的路径规划,A算法却有心无力,但是对于动态环境下进行二次搜索,LPA和D* Lite效率明显高于A*。