基于采样的路径规划算法RRT的优化:RRT*,Kinodynamic-RRT*,Anytime-RRT *,Informed RRT *

article/2025/10/4 8:23:07

基于采样的路径规划算法RRT的优化

      • RRT * 算法
      • Kinodynamic-RRT*
      • Anytime-RRT *
      • Informed RRT *
      • 关于搜索树按搜索方向生长的计算方法

基本的基于采样的路径规划算法RRT,在地图中进行采样取点,直到新的节点取到终点的一定阈值范围内,视为查找到路径,( RRT算法详细)。但是在这个规划过程中,找出的路径总是曲折的。为此对RRT算法进行了一系列优化:

RRT * 算法

RRT*算法针对性地解决RRT算法生成路径不最优的缺陷
在这里插入图片描述
左图是RRT算法原本生成的不平滑的路径,右图是RRT * 算法伪代码。
RRT * 算法伪代码中,在新产生的节点 x(new) 画一个规定半径的圆,找到最近的节点为 x1, x2, x(near),分别求 x(new) 经过几个最近节点到达红色起始点的路径大小,取路径最短的节点与 x(new) 连接起来。
在这里插入图片描述

RRT * 算法选择父节点没有直接把最近的节点当父节点,而是搜索了多个邻域节点,从而选定父节点。RRT*突出的特点就展现在伪代码中的 rewire() 重写步骤,帮助修改链接过程,使数据更优化。

rewire() 的过程是重写节点的父节点:在上面例子中将 x(new) 其余的两个点 (x1,x2) 与 x(new) 连接,比较( x1 原来的路径到红色起始点的路径长度 d1 )和 (x1 经过 x(new) 再到达红色起始点的路径长度 d2),如果后者的路径更短,则会更换 x1 的父节点为 x(new) 。在上面例子中显然 d1 小于 d2 ,所以其父节点不会改变。而 ( x2 原来的路径到红色起始点的路径长度 d1 )和 (x2 经过 x(new) 再到达红色起始点的路径长度 d2),后者的路径更短,所以 x2 的父节点重写为 x(new),如下图:
在这里插入图片描述
RRT * 算法会通过不断地修改父节点来优化轨迹,从而能够产生一个较平滑的轨迹,
在这个视频:RRT*算法路径规划演示 中可以较快理解RRT *的路径规划过程,以及轨迹优化的过程。
在这里插入图片描述
/

Kinodynamic-RRT*

传统的RRT * 算法 x(new) 和 x(near) 的连接直接用直线连接,在下图左图的连接中会碰到障碍物,但实际上根据机器人的动力学约束,实际路径可能不会碰到障碍物。

在这里插入图片描述
Kinodynamic-RRT * 算法中用曲线代替直线,让生成的路径更加满足动力学约束,
在这个视频:Kinodynamic-RRT*算法路径规划演示 中可以直观地发现Kinodynamic-RRT* 的路径规划过程。
在这里插入图片描述

Anytime-RRT *

Anytime-RRT * 是在机器人运动的过程中不断地更新路径,在机器人执行当前路径时保持最优的树节点路径,即实时的RRT * 算法,能更好地适应机器人运动过程中环境变化比较大的情况。在这个视频:Anytime-RRT * 算法路径规划演示 中可以容易地理解 Anytime-RRT * 的路径规划过程。
在这里插入图片描述

Informed RRT *

RRT * 在地图空间中采样进行均匀撒点,采样点会布及整个地图会进行很多不必要的采样。
Informed RRT *把采样的范围限制在一个椭圆里面:在这里插入图片描述
以起始点和终点作为椭圆的焦点,以 RRT * 生成的路径长度 L 作为椭圆上点到焦点的距离之和,在椭圆内进行采样,随着生成的路径越来越优化,长度越来越短,椭圆也会越来越扁,从而集中采样点进行了有效的路径优化。

在这里插入图片描述

关于搜索树按搜索方向生长的计算方法

三角函数的方法
在这里插入图片描述

先计算出夹角 𝜃 ,采用三角函数的方法沿生长方向延伸:生长长度为 L
𝜃 = arctan((Xrand.y - Xnear.y) / (Xrand.x - Xnear.x) )
得到夹角 𝜃 后,计算 Xnear 沿 x 方向 和 沿 y 方向对应的增长值:
Xadd = L * sin𝜃
Yadd = L * cos𝜃
所以 Xnew:(Xnear.x + Xadd , Xnear.y + Yadd)得到生长后的节点。

向量方法
在这里插入图片描述
通过上图中的公式得到长度比例关系:k = ||vw|| / ||vo||。(图中有误,最后写反了)
o.x = v.x + (w.x-v.x) * k
o.y = v.y + (w.y-v.y) * k
得到生长节点 o 的坐标


http://chatgpt.dhexx.cn/article/9cOGQcZd.shtml

相关文章

RRT*算法图解

原文链接: https://blog.csdn.net/yuxuan20062007/article/details/88843690 【运动规划RRT*算法图解】 https://blog.csdn.net/weixin_43795921/article/details/88557317 尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题…

快速扩展随机树(RRT)算法

RRT是Steven M. LaValle和James J. Kuffner Jr.提出的一种通过随机构建Space Filling Tree实现对非凸高维空间快速搜索的算法。该算法可以很容易的处理包含障碍物和差分运动约束的场景,因而广泛的被应用在各种机器人的运动规划场景中。 1. Basic RRT算法 原始的RR…

RRT算法及其部分改进算法介绍

基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees) RRT:一种通过随机构建Space Filling Tree实现对非凸高维空间快速搜索的算法。该算法可以很容易的处理包含障碍物和差分运动约束的场景,被广泛的应用在各种机器人的运…

RRT*算法

简介 RRT* 和RRTconnect一样,是对RRT算法的优化。RRT算法的一个问题在于,它只是找到了可行的路径,不能保证路径是相对优化的。RRT*算法在每次迭代后,都会在局部更新搜索树,以优化路径。 多了两个过程,为&…

RRT算法介绍

RRT算法介绍 RRT算法原理介绍:RRT搜索树与树的生长相类似,即不断生长的同时又向四周扩散。算法以路径起点Xstart作为随机树T的根节点,树中节点xj用集合V存储,节点间的连接用连接边集E存储,所有节点xj满足属于集合Xfree…

【规划】RRT*算法图解

尽管RRT算法是一个相对高效率,同时可以较好的处理带有非完整约束的路径规划问题的算法,并且在很多方面有很大的优势,但是RRT算法并不能保证所得出的可行路径是相对优化的。因此许多关于RRT算法的改进也致力于解决路径优化的问题,R…

RRT算法简介

声明:本文为转载内容非原创,来源会在文末声明,绝无冒犯之意,只为一时复习之方便,侵权必删! 感谢原作者写出如此优秀的博文,让我对RRT算法有个大致的理解。 对RRT算法感兴趣,是因为…

RRT 算法原理以及过程演示

RRT 适用于涉及非完整约束场合下的路径规划问题。 RRT 算法为一种递增式的构造方法,在构造过程中,算法不断在搜索空间中随机生成状态点,如果该点位于无碰撞位置,则寻找搜索树中离该节点最近的结点为基准结点,由基准结点…

【机器人学:运动规划】快速搜索随机树(RRT---Rapidly-exploring Random Trees)入门及在Matlab中演示

快速搜索随机树(RRT -Rapidly-ExploringRandom Trees),是一种常见的用于机器人路径(运动)规划的方法,它本质上是一种随机生成的数据结构—树,这种思想自从LaValle在[1]中提出以后已经得到了极大…

【自动驾驶轨迹规划之RRT算法】

目录 1 RRT算法的简介 2 RRT算法原理 2.1 算法流程 2.2 算法伪代码 2.3 算法流程图 3 RRT算法matlab实现 3.1 测试地图 3.2 distance函数 3.3 RRT算法 3.4 动画效果 4 RRT的缺陷 1 RRT算法的简介 天下武功唯快不破,快是 RRT 的最大优势。RRT 的思想是快…

RRT算法

简介 RRT 算法(快速扩展随机树,rapidly exploring random tree)是一种随机性算法,它可以直接应用于非完整约束系统的规划,不需进行路径转换,所以它的算法复杂度较小,尤为适用于高维多自由度的系…

RRT(快速随机搜索树)算法原理及代码实践

RRT算法简介 RRT 算法为一种递增式的路径规划算法,算法不断在搜索空间中随机生成采样点,如果该点位于无碰撞位置,则寻找搜索树中离该节点最近的结点为基准结点,由基准结点出发以一定步长朝着该随机结点进行延伸,延伸线…

RRT算法原理和代码详解(快速扩展随机树)

文章目录 优缺点伪代码具体流程效率问题代码 优缺点 优缺点先明说,优点RRT Star适用于任何地图,不像A Star,Dijkstra那样受限于栅格地图。 缺点:1.找到的路径可能不是最优的;2.路径可能不符合机器人的运动学动力学模型…

RRT与RRT*算法具体步骤与程序详解(python)

提示:前面写了A*、Dijkstra算法 文章目录 前言一、RRT的原理与步骤二、RRT算法编写的步骤1.算法步骤2.算法的实现 三、RRT*算法编写的步骤1.算法的步骤2.算法的实现 三、所有程序附录RRT算法RRT*算法 前言 RRT和RRT*的区别: RRT的中文名为快速随机探索…

RRT算法原理图解

RRT算法原理图解 开始 本人很懒,习惯了只看不写。废话少说,直奔主题:原始RRT算法原理图文简介(图都是我自己按照步骤一幅幅画的——闲的蛋疼,但应该比较直观易懂,能被借鉴参考也算我的功德)。 R…

linux中要怎么创建文件夹

我是一个linux初学者,由于工作上面需要,我需要在linux中创建一个文件夹,然后自学了一点点,其实创建文件夹很简单,下面分享给大家,越努力越幸运,共勉! 创建文件夹 mkdir 后面加文件夹名字 例如: mkdir aa 然后第一个文件夹就创好了 假如要在文件夹里面再创一个文件夹就是子目…

Ubuntu系统下如何创建.txt文件

问题 在Ubutnu系统下,右键桌面会发现并没有创建文本文件的选项。 解决 首先进入模板 会发现里面是空的 然后右键在终端打开 输入如下指令 sudo gedit 文本文件保存即可 这个时候在模板文件夹下就有 现在右键的时候就会有一个创建文本文件的选项了。

Linux中创建文件与文件夹

一、创建文件夹 命令:mkdir 文件夹名 例: 一开始home目录下没有test文件夹,命令创建后生成 二、创建文件 命令:touch 文件名 例: 一开始test文件夹下没有boot.properties,命令创建后生成 三、注意事项…

Ubuntu零基础教学-Ubuntu下如何创建.txt记事本文件

环境:Ubuntu20.04 前言: 安装好ubuntu20.04后,发现右键菜单中没有新建空白文件,这样工作的时候需要创建文本文件就不是很方便;那么,基于这里,我们可以通过以下的方式把新建空白文件添加到右键哦! 在此,针对小白系列教学,bug菌专门开放了一个Ubunt…

linux中创建目录

在根下创建一个目录ceshi 1、用mkdir创建目录 2、用ls查看当前目录下的所有文件 3、拷贝需要复制的两个文件 4、将user移动至ceshi下,用move 5、用mv命令来为目录改名 linux中在root用户下创建目录 1、进入root用户目录,输入su后回车 2、查看当前路径…