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

article/2025/10/4 8:21:57

基于采样的运动规划算法-RRT(Rapidly-exploring Random Trees)

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

  • Basic RRT算法

原始的RRT算法中将搜索的起点位置作为根节点,然后通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树的叶子节点进入目标区域,就得到了从起点位置到目标位置的路径

伪代码如下:

上述伪代码中,M是地图环境,是起始位置,是目标位置。路径空间搜索的过程从起点开始,先随机撒点;然后查找距离最近的节点;然后沿着到方向前进stepsize的距离得到;CollisionFree(M, )方法检测Edge(,)是否与地图环境中的障碍物有碰撞,如果没有碰撞,则将成功完成一次空间搜索拓展。重复上述过程,直至达到目标位置。

RRT算法拓展过程

  • 基于概率的RRT算法

为了加快随机树收敛到目标位置的速度,基于概率的RRT算法在随机树扩展的步骤中引入一个概率P,根据概率p的值来选择树的生长方向是随机生长(xrand)还是朝向目标位置(xgoal)生长,引入像目标生长的机制可以加速路径搜索的收敛速度。

伪代码如下:

  • RRT Connect算法

RRT Connect算法从初始状态点和目标状态点同时扩展随机树从而实现对状态空间的快速搜索

 

  • RRT*算法

RRT*算法的目标在于解决RRT算法难以求解最优的可行路径的问题,它在路径查找的过程中持续的优化路径,随着迭代次数和采样点的增加,得到的路径越来越优化。迭代的时间越久,就越可以得到相对满意的规划路径。

伪代码如下:

RRT*算法和RRT算法的区别主要在于两点:

  1. rewrite的过程。即为重新选择父节点的过程

RRT*在找到距离xrand最近的节点xnearest并通过CollisionFree检测之后,并不立即将Edge(xnearest,xrand)加入扩展树中,而是以xrand为中心,r为半径,找到所有潜在的父节点集合,并与xnearest父节点的Cost对比,看是否存在更优Cost的父节点。

 

  1. 连接xrand和xnearest
  2. 以xrand为中心,ri为半径,在树上搜索节点
  3. 找出潜在的父节点集合xpotential-parent,其目的是要更新xrand,看看有没有比它更好的父节点
  4. 从某一个潜在父节点开始考虑,计算出xparent(即为xnearest)作为父节点时的代价,子节点为xchild(即为xrand)
  5. 先不进行碰撞检测,将潜在父节点与子节点连接起来,计算该条路径的代价
  6. 如果代价小于原路径,则进行碰撞检测,若代价大于原路径,则考虑其他潜在父节点
  7. 代价小于原路径且碰撞检测通过,则在树中将之前的边删掉,将树中新的边添加进去,即连接满足要求的潜在父节点和子节点之间的边,将潜在父节点(xpotential-parent)改为父节点(xparent),遍历所有的父节点,得到更新以后的树

2.随机树重布线的过程

 


http://chatgpt.dhexx.cn/article/MqEif0EM.shtml

相关文章

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、查看当前路径…

linux下创建文件和文件夹

使用linux系统会有一些常见的命令,譬如说,创建文件夹,创建文件,这些命令都是比较常见的。 方法/步骤 首先说一下touch 创建二进制文件,用法就非常的简单,touch文件名 之间一定要空格。先查看一下有什么文…

linux创建文件夹命令

我们可以使用mkdir命令在 Linux 或类似 Unix 的操作系统中创建新目录或文件夹。本文将介绍如何在 Linux 或 Unix 系统中创建文件夹(也称为“目录”)。 操作步骤如下:1.在 Linux 中打开终端应用程序。2.输入mkdir命令。3.输入文件夹名称。 具…

Linux:创建文件夹

(1)输入命令:mkdir music,创建文件夹 music,再次查看列表,可以看到多了一个文件夹 music; (2)输入命令:mkdir a1 a2 a3,批量创建文件夹 a1、文件夹…