A star与RRT搜索的速度和效率对比,A satr和Rapidly Exploring Random Trees
作者:互联网
在阅读最近的几年的路径规划相关论文时,发现很多文章对于路径搜索都采用了RRT(Rapidly Exploring Random Trees)系列算法。
如果你对RRT没有进行深入地代码实现和实验对比,你可能会有这样的疑惑,这种随机撒点的方式搜索路径,跟买彩票一样,运气差的话可能要很久,就算运气好也不会快到哪儿去?至少我曾今也有这样的想法,哈哈!
我查看了很多博客以及论文,都没有找到相关的对比实验,这里我将通过实验对A star和RRT进行一些探索!
注意:下文只比较速度和内存的消耗,不比较轨迹的长短!
1. 提示
通过这篇博客你可以获得的信息:
- A star和RRT的速度对比结果
- A star和RRT对计算机内存的占用结果
这篇博客我主要是强调对比试验的的结果,所以你不能获得以下内容:
- 不提供完整的算法实现
- 不提供源代码
- 不详细介绍算法细节
2. 算法实现的大致思路
A star
对于A star算法,在实现时使用启发函数是曼哈顿距离函数,并且为了打破轨迹对称性使用了Tie breaker(1.00001),并且在算法一开始就预先对每一个栅格节点(Grid Node)进行初始化并申请内存,并且每次搜索进行扩展该节点的8个邻域。
RRT
对于RRT,实现的是它最原版的算法,由于RRT本身不是基于栅格搜索的方法,因此在算法开始搜索阶段,不需要对栅格节点进行初始化和内存申请。并且在随机撒点的时候10%的概率是往终点方向扩展。
3. 实验结果
我的实验平台:Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
计算机系统:Ubuntu 18.04
ROS版本:Melodic
仿真环境介绍:
实验结果是在ROS下通过Rviz进行的显示的,其中的黑色块是地图中的障碍物,是随机生成的;红色路线是RRT搜索出来的结果,淡灰色的线是RRT生成的搜索树;绿色的轨迹是A star搜索出来的结果,黄色的栅格是A star在搜索的过程中遍历过的栅格。所有实验的搜索起点均是在地图的中心。
第一组
地图大小:15mx15m
栅格精度: 0.05m
随机障碍物数量:100个
障碍物大小:0.3~1.0m
A star在初始化栅格地图时使用的时间:6.22674ms
RRT在初始化栅格地图时使用的时间:0.035323ms
第二组
地图大小:50mx50m
栅格精度: 0.05m
随机障碍物数量:500个
障碍物大小:0.5~2.0m
A star在初始化栅格地图时使用的时间:62.6063ms
RRT在初始化栅格地图时使用的时间:0.4214ms
第三组
地图大小:200mx200m
栅格精度: 0.05m
随机障碍物数量:1000个
障碍物大小:0.5~5.0m
A star在初始化栅格地图时使用的时间:1012.66ms
RRT在初始化栅格地图时使用的时间:4.93ms
4. 结论
通过上面的实验,我想你一定有一些新的发现,那就是RRT并没有想象中的那么不堪,经常会在速度上打败A star。事实也确实如此,RRT的搜索速度确实很快,并且在比较的空旷的情况下它几乎要比A star快很多。
还有一个结论也很重要,那就是RRT对于内存的消耗远低于A star。我们可以以第三组实验为例,在第三组中加载地图并进行初始化,A star用了1000多毫秒,而RRT只需要4毫秒。想象一下,如果我们不断地接收地图并搜索轨迹,那么A star从一开始就输了,它地图都还没有加载完成,RRT就已经搜索出结果了。(加载是时间和内存消耗是正比的)
综合来看,RRT虽然搜索出来的路径不是非常优异,但是相较于A star至少它的速度还是比较快的,并且对内存的消耗非常低。
5. 扩展
可能有一些同学有疑问,RRT搜索出来的路径那么差,就算你速度再快又有什么意义呢!?确实RRT的路径99.99%不会出现最优路径,而A star一定是最优路径,但是如果我们的RRT加载地图和搜索都非常快,那么我们是不是就可以腾出一点儿时间来优化一些我们的轨迹,让其往最优轨迹的路上靠一靠?答案是肯定的,RRT star以及后续的Inform RRT等等工作,对轨迹的最优做了很多升级。
另外一个很重要的原因是,不管以何种方式搜索到的轨迹,最终都要进行后端轨迹优化,所以即使前期轨迹差一些,我们也并不在意。
6. 花絮
当我尝试把地图扩大到500mx500m之后,RRT在速度上的优势已经非常明显了,它几乎在百分之八九十的情况下都是超过A star,而且速度快几倍甚至几十倍。A star加载地图的时间也达到6673ms,而RRT仅需要31.37ms。
另外当地图中障碍物比较少的时候,RRT相较于A star的优势也很明显。例如当地图为15mx15m的时候,图中只有50个障碍物,此时A star在速度上几乎都是慢于RRT的,而且通常情况下RRT比A star快5到10倍!
标签:Exploring,satr,star,初始化,地图,栅格,搜索,RRT 来源: https://blog.csdn.net/u011341856/article/details/122002858