A star与RRT搜索的速度和效率对比,A satr VS 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以及后续的Informed 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倍!
请添加图片描述

以上实验结果并没有对RRT进行更深入的调参,实际上在后来的试验中,我发现设置更大的概率往终点方向采样,以及调试合理的步长,RRT的速度还能得到巨大的提升。但是上述试验中实现的A star几乎没有太多的提升空间了。

  • 14
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值