几句话解释D*(Dynamic A*)

以下总结为个人理解,方便记忆,如有错误欢迎指出:
一句话表述:先反向Dijkstra搜索,如果运动中前面发现障碍物,从当前位置重新正向搜索一段绕过障碍物的路径,这段重新搜索的路径不需要直达目标点,只需要连接上反向搜索的路径即可,从而减少了重规划时间。

步骤:

  1. 一种动态路径算法,用于处理移动机器人行驶过程中检测到新增障碍物的一种路径规划算法。
  2. 最重要的一点是,首先要进行反向Dijkstra搜索,即从目标节点到起始节点搜索。搜索过程中,记录每个搜索到的节点到目标节点的cost值。
    Q:想一下为什么要反向搜索?
    A:如果行驶途中新增了一个障碍物,障碍物背后的节点到目标节点的cost实际上并不会发生变化,如果能将这些信息利用起来,是不是能够提高replan的速度呢?
  3. 当出现一个障碍物时,障碍物节点肯定是处在了搜索到的路径上(否则也不叫障碍物了。),此时移动机器人到障碍物之间的路径必然要收到影响,接下来的问题就是如何找到一段新的路径,能够绕过障碍物,这一段路径最好能够连接上没有受障碍物影响的节点(所谓受影响,其实就是指这个节点到目标节点的cost值发生的变化。)
    Q:如何找到移动机器人绕过障碍物的一段新的路径呢?
    A:找到障碍物节点的子节点,再找到子节点的邻接节点,如果邻接节点是搜索过的节点,则修改子节点的父节点为此邻接节点!(这里的父子关系,指的是路径的节点顺序,即目标节点是根节点。)

参考:
D路径规划算法及python实现:https://zhuanlan.zhihu.com/p/142721264
最短路经算法简介(Dijkstra算法,A
算法,D算法)(转载):https://blog.csdn.net/kongbu0622/article/details/1871520(可以对比其中关于D算法的一段描述)

你可能感兴趣的:(几句话解释D*(Dynamic A*))