昨天休息了一天,今天继续学习搜索算法!前几天已经分别介绍了Dijkstra算法、Floyd算法、RRT算法、A*算法,无独有偶,上述算法都只适用于静态环境下两点规划的场景,但是大部分场景是实时变化的,这对规划算法提出了更高的要求,Dynamic A star算法应运而生。
Dynamic A star简称D*在“Optimal and Efficient Path Planning for Partially-Known Environments”中提出,笔者前期收集了很多D*算法的信息,刚开始看的时候也是云里雾里,看了很多遍才懂,其实基础原理并不复杂,但是描述起来比较绕,大家可以看多一遍,会有收获的。
D*算法解决的是在动态环境中计算从起点到终点距离的问题,其搜索过程是基于在初始环境下采用A*搜索的原始结果下的,具体细节接下来会一一介绍:
一、D*算法流程与案例讲解:
1.算法基础:
在该算法中提出了许多新的名词与流程,笔者认为很需要拿出来单独解释以下,留个印象即可,后面提到会再解释,建议看完再回来看,相信会加深你对D*算法的理解:
- 与A*算法类似,D*通过维护一个优先队列openlist来存储待搜索的路径节点,但与A*不同的是,D*算法是从目标点开始搜索,通过将目标点置于openlist中来启动搜索,直到起点位置从openlist中弹出时该次搜索完成;
- D*算法分为两个阶段:第一阶段为采用A*算法从目标点反向搜索,得到搜索路径以及每一个区域节点的信息(包含h(当前启发值)