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

article/2025/10/4 12:18:58

文章目录

  • 优缺点
  • 伪代码
  • 具体流程
  • 效率问题
  • 代码

优缺点

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

伪代码

在这里插入图片描述

具体流程

  1. 给出起点和终点,以及设置好障碍物的地图,如下所示,将起点记作是根节点。

在这里插入图片描述

  1. 进行空间撒点采样,在空间中随机选择一点Xrand。(这里对应伪代码当中的Sample()函数)

在这里插入图片描述

  1. 接着寻找距离Xrand最近的一个已知节点Xnear(这一步对应伪代码当中的near()函数)。因为当前只有一个根节点(起点),所以根节点即为Xnear。

在这里插入图片描述

  1. “树的生长”(执行Steer函数)
    将Xnear与Xrand两节点连接起来作为“树”生长的方向。

在这里插入图片描述

会设置一个步长作为“树枝”。
因为步长有长度,可能长度不会恰好等于Xnear到Xrand的距离。
所以称“树枝”的末端节点为Xnew。


在这里插入图片描述

现在,“树枝”的长度就是从Xnear到Xnew的长度。
将在“树枝”上的点(Xnear到Xnew这之间无限的点)都归为节点。
得到Xnew之后,之前的Xrand就舍弃了,只保留了“树枝”,之后重新进行采样。

  1. 重新采样

在这里插入图片描述

重新采样之后,发现连接的路径穿过了障碍物。


在这里插入图片描述

碰到连线穿过障碍物的,就抛弃这一次采样,重新采样


在这里插入图片描述

发现,随着采样的进行,会越来越靠近终点。


在这里插入图片描述

但是要使算法停止,就必须要随机采样点刚好是终点,这样的概率是非常小的。所以会设置一个提前停止的条件:

因为每一段树枝的末端都是Xnew,所以每产生一次Xnew节点,我们都判断一下Xnew与终点之间的距离,看这个距离是否小于步长,如果小于步长且没有经过障碍物,则就直接把Xnew与终点进行相连。


在这里插入图片描述

综上,就能找到一条从起点到终点的路径。


在这里插入图片描述

效率问题

存在一个效率问题,如下图所示,按照每次Xnew之后进行Xnew与终点连线判断的情况,下图是可以直接按照这条轨迹到终点的。(因为在这没有碰到障碍物且只是步长不满足所给的条件)

在这里插入图片描述

这时候,改进一下采样的范围,就是直接沿着这个线的周围进行采样,限定范围,就可以加快算法导向终点的速度,这就是我的下篇Blog所要详解的Informed RRT*算法。

代码

代码在我的github以及gitee当中可下载。


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

相关文章

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、文件夹…

linux创建文件

linux创建文件 1、在 Linux 上使用重定向符(>)创建一个文件 标准重定向符允许我们创建一个 0KB 的空文件。它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。 但是它不允许你在创建…

Linux 创建目录和文件

mkdir 创建目录 在linux中,mkdir是创建目录的意思,是“make directories”的缩写;该命令用于创建新的目录,语法为“mkdir [-mp] 目录名”;设置参数“-m”用于手动配置创建目录的权限,设置参数“-p”用于递…

Linux 创建文件

目录 1. 使用重定向符(>)创建文件 2. 使用 touch 命令创建文件 3. 使用 echo 命令创建文件 4. 使用 printf 命令创建文件 5. 使用 cat 命令创建文件 6. 使用 vi / vim 创建文件 7. 使用 nano 创建文件 8. 使用 head 命令创建文件 9. 使用 tail 命令创…

Python中colorbar全色表

如图,所有cmap可选参数

matplotlib调节colorbar的大小

调节plt.colorbar的fraction系数即可调节colorbar的大小 weight np.random.random([8, 8]) plt.imshow(weight) plt.colorbar(fraction0.05, pad0.05) plt.savefig(tjn.png, bbox_inchestight) plt.show()

python可视化 matplotlib画图使用colorbar工具自定义颜色

python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出任何自己想要的colorbar,自由自在、不受约束,不依赖于任何已有的图(plot/mappable)。这里使用的是m…

MATLAB自定义colorbar

matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,ma…

MATLAB | 如何按照任意比例调整颜色条(colorbar)

之前写过的setPivot函数只能把颜色条的中点放到0处或者其他数值处: https://slandarer.blog.csdn.net/article/details/129341645 这次提供的函数可以将任意百分比的点位放置在任意数值处,这个函数大概长这样: 百分比点位设置 function s…

matplotlib中【colormap】和【colorbar】的使用,以及用自己的颜色创建colormap

目录 官方自带的colormap其他的colormap结果单独绘制一个colorbar 用自己的颜色创建colormap获取图片颜色给定一个基本颜色,通过改变饱和度来创建colorbar 官方自带的colormap import numpy as np import matplotlib.pyplot as pltnum_curves 100 #100条曲线 cm …