无人驾驶轨迹规划、路径导航中经常使用到的一种静态的规划算法,就是A*(A-Star)算法,其是一种综合了BFS和Dijkstra的算法,而通过该算法也衍生除了一大堆算法。
ARA 全称是Anytime Repairing A,也称为Anytime A*。
与其他Anytime算法一样,它具有灵活的时间成本,即使在它结束之前被中断,也可以返回路径查找或图形遍历问题的有效解决方案。方法是在逐步优化之前生成快速,非最优的结果。
在现实世界的规划问题中,问题的解决时间往往是有限的。与时间相关的规划者对这种情况都会比较熟悉:他们能够快速找到可行的解决方案,然后不断努力改进,直到时间用完为止。
启发式搜索ARA算法,它根据可用的搜索时间调整其性能边界。它首先使用松散边界快速找到次优解,然后在时间允许的情况下逐渐收紧边界。如果有足够的时间,它会找到可证明的最佳解决方方案。在改进其约束的同时,ARA重复使用以前的搜索工作,因此,比其他随时搜索方法更有效。
与A*算法不同的是,Anytime A算法最重要的功能是,它们可以被停止,然后可以随时重启。该方法使用控制管理器类来处理时间限制以及停止和重新启动A算法以找到初始的,可能是次优的解决方案,然后继续搜索改进的解决方案,直到达到可证明的最佳解决方案。
关于ARA的更多内容可以阅读这篇论文:
ARA - Anytime A with Provable Bounds on Sub-Optimality
D是Dynamic A的简写,其算法和A*类似,不同的是,其代价的计算在算法运行过程中可能会发生变化。
D*包含了下面三种增量搜索算法:
1、原始的D由Anthony Stentz发表。
2、Focussed D由Anthony Stentz发表,是一个增量启发式搜索算法,结合了A和原始D的思想。
3、D Lite是由Sven Koenig和Maxim Likhachev基于LPA构建的算法。
所有三种搜索算法都解决了相同的基于假设的路径规划问题,包括使用自由空间假设进行规划。在这些环境中,机器人必须导航到未知地形中的给定目标坐标。它假设地形的未知部分(例如:它不包含障碍物),并在这些假设下找到从当前坐标到目标坐标的最短路径。
然后机器人沿着路径行进。当它观察到新的地图信息(例如以前未知的障碍物)时,它会将信息添加到其地图中,并在必要时将新的最短路径从其当前坐标重新添加到给定的目标坐标。它会重复该过程,直到达到目标坐标或确定无法达到目标坐标。在穿越未知地形时,可能经常发现新的障碍,因此重新计划需要很快。增量(启发式)搜索算法通过使用先前问题的经验来加速搜索当前问题,从而加速搜索类似搜索问题的序列。假设目标坐标没有改变,则所有三种搜索算法都比重复的A*搜索更有效。
D及其变体已广泛用于移动机器人和自动车辆导航。当前系统通常基于D Lite而不是原始D或Focussed D。
关于D*的更多内容可以阅读这两篇文章:
Project “Fast Replanning (Incremental Heuristic Search)”
Real-Time Replanning in Dynamic and Unknown Environments
Field D扩展了D和D* Lite,是一种基于插值( interpolation-based )的规划算法,它使用线性插值来有效地生成低成本路径,从而消除不必要的转向。
在给定线性插值假设的情况下,路径是最优的,并且在实践中非常有效。该算法目前被各种现场机器人系统使用。
关于Field D*的详细内容可以看下面这篇论文:
Field D*: An Interpolation-based Path Planner and Replanner
Block A扩展自A,但它操作是一块(block)单元而不是单个单元。
其open_set中的每个条目都是已到达但尚未扩展的块,或者需要重新扩展的块。
open_set中块的优先级称为其堆值(heap value)。与A类似,Block A中的基本循环是删除具有最低堆值的条目并将其展开。在扩展期间使用LDDB来计算正在扩展的块中的边界单元的g值。
LDDB是一种新型数据库,它包含了本地邻域边界点之间的距离。
关于Block A*的更多内容可以看下面这篇论文:
Block A*: Database-Driven Search with Applications in Any-angle Path-Planning