路径规划算法学习笔记2——基于采样
基于采样
RRT
RRT-connect
RRT*
参考文献

在这里分享了路径规划方面的一些基本的算法原理和伪代码实现,主要包括基于搜索、基于采样、基于曲线插值和基于人工势场等四方面,计划每篇博客单列一类,其中内容可能存在不完善和错误之处,如有读者发现,欢迎批评指正。
基于采样

第二部分是基于采样的路径规划算法,这一部分依次介绍RRT、RRT-connect、RRT* 。另外,有关RRT* 的其他衍生的算法,日后更新…

RRT

1、RRT (Rapidly-exploring Random Trees),经典的RRT是单树RRT,算法示意图如下:

在这里插入图片描述

在这里插入图片描述

2、算法伪代码解释如下:

在这里插入图片描述

在这里插入图片描述

3、RRT的不足
①收敛慢,目标性不强,这一点相似于BFS,为了整体上向目标点方向生长,一种思路是根据随机的概率,采样点随机地选择通过随机采样还是直接使用目标点作为x_rand,即 x_rand = chooseTarget(sample(map),x_goal,p),另一种思路是双树RRT。
②没有最优解,→RRT*渐进最优解
③采样范围为整个空间

RRT-connect
1、为提高计算效率,可以同时从起点和终点“生长树枝”。就像这样:
在这里插入图片描述

2、基本的过程,如图所示:

在这里插入图片描述

3、伪代码,这个还比较详细,基本过程如上图,不再细标

在这里插入图片描述

RRT*
1、RRT* 对RRT的改进
RRT存在一个问题,虽然能找到一条可行路径,但不保证最优。RRT* 在RRT的基础上,进行改进,使路径渐进最优,方法是x_near和x_new不会直接连接起来,而是做一个优化处理,令x_new在一定范围内重新选择父节点,同时rewire(随机树重布线)。
2、RRT*示意与伪代码
①示意
重选父节点&随机树重布线的图示点这里,描述的还比较清晰。
②伪代码
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(虽然说是伪代码,可能没有很伪代码)③可参考的更简洁的伪代码:

在这里插入图片描述

下面是用QT写的一个简单实现:

在这里插入图片描述

参考文献
1、https://blog.csdn.net/weixin_43465857/article/details/96451631 RRT算法原理图解
2、https://blog.csdn.net/gophae/article/details/103231053 全局路径规划:图搜索算法介绍4(RRT/RRT*)
3、https://zhuanlan.zhihu.com/p/30333530 RRT算法是如何实现的?有哪些优缺点?
4、https://zhuanlan.zhihu.com/p/133224593 基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees)
5、https://www.cnblogs.com/21207-iHome/p/7210543.html RRT路径规划算法
6、https://blog.csdn.net/a735148617/article/details/103647804 从零开始的OMPL库算法学习(2)RRT-connect算法
7、https://zhuanlan.zhihu.com/p/51087819 路径规划——改进RRT算法
8、https://www.jianshu.com/p/489b0b39f3f2 运动规划笔记——邱强