基于matlab的RRT算法路径规划(附带案例源码)

文章中的所有案例均为博主手动复现,用于记录博主学习路径规划的过程,如有不妥,欢迎在评论区交流

目录

  • 1 标准RRT
    • 1.1 算法原理
    • 1.2 演示
  • 2 GBRRT
    • 2.1 算法原理
    • 2.2 算法演示
  • 3 RRT-STAR
    • 3.1 算法原理
    • 3.2 算法演示
  • 4 RRT-CONNECT
    • 4.1 算法原理
    • 4.2 算法演示
  • 5 RRT-STAR-CONNECT
    • 5.1 算法原理
    • 5.2 算法演示
  • 6 PQ-RRT
    • 6.1 算法原理
    • 6.2 算法演示
  • 7 代码

1 标准RRT

1.1 算法原理

请添加图片描述
RRT算法是基于随机采样的一种路径规划算法,如上图所示。首先在规划空间中生成随机采样点Xrand,然后遍历先有的路径节点,搜寻与Xrand距离最近的节点,然后按照步长Step生成新节点Xnew,如果节点Xnew与其父节点连线与障碍物发生碰撞则去掉,否则将Xnew加入总路径节点中,重复此步骤,知道Xnew与Xgoal的距离小于阈值D,算法收敛,成功搜寻到无障碍路径。

1.2 演示

RRT

2 GBRRT

2.1 算法原理

标准RRT在规划空间中随机搜索,没有方向性,在此基础上引入目标偏向p:
当rand()>=p时,采样点为随机点;当rand()<p时,取目标点Xgoal作为随机点。提高了算法的搜索导向性,但在复杂环境中容易陷入局部最小值

2.2 算法演示

GBRRT

3 RRT-STAR

3.1 算法原理

算法在标准RRT的基础上引入了重选父节点重新布线策略,具有渐进最优性,成功搜寻到路径后算法不会停止,随着不断迭代,理论上能够搜寻到最优路径。本案例设置为搜寻到路径后就停止继续搜索。

3.2 算法演示

RRT-STAR

4 RRT-CONNECT

4.1 算法原理

标准RRT算法只有一棵随机树单向搜索,搜索效率较慢,在此基础上引入两棵随机树双向搜索,一定程度上能够提升搜索效率。(还有三棵树的方法),但是一定程度上增加了路径的冗余度、长度

4.2 算法演示

RRT-CONNECT

5 RRT-STAR-CONNECT

5.1 算法原理

将RRT-STAR与RRT-CONNECT算法进行结合,具有两者的有点

5.2 算法演示

RRT-STAR_CONNECT

6 PQ-RRT

6.1 算法原理

(1)在标准RRT算法上引入了目标偏置p
(2)在RRT-STAR算法基础上,扩大了重选父节点、重新布线的范围,扩大为范围内父节点、包括父节点再往上的若干代父节点

6.2 算法演示

QRRT

7 代码

代码包含上述例子的所有代码,下载即可使用
链接:https://pan.baidu.com/s/1uKkTmaqrZwXrs5P8OMWKRQ?pwd=SSLL
提取码:SSLL

如果觉得有帮助,请大家点一下点赞和收藏,谢谢大家!如果点赞收藏多的话,后续会给出其他改进RRT算法代码,以及三维RRT代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流量有限、日活低的APP适合对接广告变现吗?

APP广告变现&#xff0c;总用户数和日活用户&#xff08;DUA&#xff09;是衡量APP价值和影响力的重要指标之一。 APP DUA过万&#xff0c;尤其是大几万时&#xff0c;通常具备了商业化价值&#xff0c;适合接入广告变现。日活1W意味着每天有1万名用户在使用这款应用&#xff…

了解指标体系1:指标是大数据开发中的关键要素

在大数据开发的过程中&#xff0c;指标体系是一个至关重要的概念。本文将介绍什么是指标&#xff0c;为什么它们如此重要&#xff0c;以及如何在大数据项目中有效地构建和应用指标体系。 目录 什么是指标&#xff1f;指标的类型为什么指标如此重要&#xff1f;如何构建有效的指…

Leetcode Java学习记录——代码随想录链表篇

文章目录 链表定义移除链表的倒数第n个结点判断[列表是否有环](https://leetcode.cn/problems/linked-list-cycle-ii/description/)报错java.lang.StackOverflowError空指针异常 链表定义 public class ListNode{int val;ListNode next;//三种构造函数public ListNode(){}publ…

Swift开发——存储属性与计算属性

Swift语言开发者建议程序设计者多用结构体开发应用程序。在Swift语言中,结构体具有了很多类的特性(除类的与继承相关的特性外),具有属性和方法,且为值类型。所谓的属性是指结构体中的变量或常量,所谓的方法是指结构体中的函数。在结构体中使用属性和方法是因为:①匹别于结…

宋老师讲课技巧笔记

1 如何发声 •发声的重要性 •上课三要素: 外表, 声音, 板书(PPT) •如何科学发声 ​ 反例&#xff1a;如果只用喉咙&#xff0c; 会很累 ​ 要点&#xff1a;发声从胸口开始进行发声 ​ 升级&#xff1a; 从腹腔&#xff0c;到胸膛&#xff0c;到喉咙发声&#xff0c; …

每日一练:攻防世界:miao~

给了一张jpg图片 没发现什么特别&#xff0c;放到winhex中查看也没思路。 放到kali里面foremost分离文件试试&#xff0c;结果分离出个wav音频文件 直接放到 audycity看看频谱图 发现字符串&#xff0c;但是没有其他信息。可能是密钥之类的。到这里我就卡住了&#xff0c;看…

镜像拉取失败:[ERROR] Failed to pull docker image

问题描述 执行 bash docker/scripts/dev_start.sh 命令提示错误&#xff1a; permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.45/images/create?fromImageregistry.b…

微信小程序-上拉加载和下拉刷新

一.上拉加载 微信小程序的上拉加载使用onReachBottom()&#xff0c;写在.js文件里面的Page方法里面。 onReachBottom(){//上拉自动更新到4&#xff0c;5&#xff0c;6wx.showLoading({title: 数据加载中...,})setTimeout(()>{const lastNumthis.data.numList[this.data.nu…

webpack 中 require.context() 的用法

一、什么是 require.context It allows you to pass in a directory to search, a flag indicating whether subdirectories should be searched too, and a regular expression to match files against. – webpack 官方说明 一个 webpack 的 api &#xff0c;通过该函数可以获…

类加载机制-打破双亲委派机制

文章目录 类加载机制打破打破双亲委派机制例子1例子2 类加载机制 类加载机制 打破打破双亲委派机制 例子1 JDBC的加载机制 Driver 接口是在rt.jar 包里定义的 public interface Driver {Connection connect(String url, java.util.Properties info)throws SQLException; }…

Java中Cookie的用法

Cookie是一段不超过4KB的小型文本数据&#xff0c;由一个名称&#xff08;Name&#xff09;、一个值&#xff08;Value&#xff09;和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。 Expires&#xff08;过期&#xff09; 设置Cookie的生存期。有两种存储类…

Ubuntu网络管理命令:nslookup

安装Ubuntu桌面系统&#xff08;虚拟机&#xff09;_虚拟机安装ubuntu桌面版-CSDN博客 nslookup命令主要用来查询域名信息&#xff0c;实际上主要是将域名转换为相应的IP地址&#xff0c;或者将IP地址转换成相应的域名。nslookup命令为用户提供了两种工作模式&#xff0c;分别…

删掉一个元素以后全为1的最长子数组

class Solution { public:int longestSubarray(vector<int>& nums) {int lennums.size();int left0,right0,cnt00;while(right<len){if(nums[right]0){cnt0;}right;if(cnt0>1){if(nums[left]0){cnt0--;}left;}}return right-left-1;} };

matlab线性多部法求常微分方程数值解

用Adamas内差二步方法&#xff0c;内差三步方法&#xff0c;外差二步方法&#xff0c;外差三步方法这四种方法计算。 中k为1和2. k为2和3 代码 function chap1_adams_methodu0 1; T 2; h 0.1; N T/h; t 0:h:T; solu exact1(t);f f1; u_inter_2s adams_inter_2steps(…

B类IP介绍

一、B类ip给谁用&#xff1a; 城域网用的大多就是B类地址。 二、基本介绍 ip地址范围 - 理论范围 128.0.0.0 ~ 191.255.255.255&#xff1a;10000000 00000000 00000000 00000000 ~ 10111111 11111111 11111111 11111111 - 实际&#xff08;正常情况&#xff09;可用地址范围…

2024-6-19(沉默springboot)

1.spring开启事务支持 事务在逻辑上是一组操作&#xff0c;要么执行&#xff0c;要不都不执行。主要是针对数据库而言的&#xff0c;比如说 MySQL。 业务场景eg: public void savePosts(PostsParam postsParam) {// 保存文章save(posts);// 处理标签insertOrUpdateTag(posts…

【C++】生成随机数

生成 l , r l,~r l, r 范围内的随机数 C o d e Code Code #include <iostream> #include <random> using namespace std;int get_rand(int l, int r) {random_device rd; // 用于获取随机数种子的设备mt19937 gen(rd()); // 以随机数种子初始化随机数生成器unif…

Leetcode 3187. Peaks in Array

Leetcode 3187. Peaks in Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3187. Peaks in Array 1. 解题思路 这一题算是一个套路题&#xff0c;基本就是典型的segment tree的题目。 对于任意一个query&#xff0c;segment tree可以直接获得对应范围内的peak的数目&…

python使用多进程加快处理数据

最近需要用python循环遍历xlsx文件&#xff0c;但总感觉特慢&#xff0c;于是记录一下使用多进程让cpu性能拉满&#xff0c;加快速度。 python使用多进程加快处理数据 1.原始代码2.使用多进程改写代码 1.原始代码 下面展示 原始代码。 这个举例代码的是用来循环遍历我文件夹下…

2023年全国大学生数学建模竞赛A题定日镜场的优化设计(含word论文和源代码资源)

文章目录 一、部分题目二、部分论文基于数学算法研究定日镜场的优化设计一、 问题重述1.1 问题背景1.2 需要解决的问题 二、 模型假设三、 问题分析3.1 问题一的分析3.2 问题二的分析 四、 符号说明五、 模型的建立与求解5.1 问题一模型的建立与求解 三、完整word版论文和源代码…