【笔记:3D航路规划算法】二、RRT*

news2024/11/13 16:51:11

目录

  • 一、RRT*于RRT的不同之处
    • 1、路径优化:
    • 2、成本计算:
    • 3、重连线步骤:
  • 二、图解
    • 1、初始化
    • 2、路径搜索
    • 3、效果展示

3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、虚拟现实等领域

一、RRT*于RRT的不同之处

1、路径优化:

  • RRT:仅寻找一条从起点到终点的路径,不保证是最优路径。
  • RRT*:在寻找路径的过程中,不断优化路径,通过重连线步骤逐步逼近最优路径。

2、成本计算:

  • RRT:不进行成本计算,路径成本可能较高。
  • RRT*:每次添加新节点后,计算路径成本,通过重连线步骤降低路径成本。

3、重连线步骤:

  • RRT:无重连线步骤。
  • RRT*:每次添加新节点后,检查附近节点并尝试通过新节点来重新连接,以优化路径。

二、图解

1、初始化

在初始化上,比RRT多了一个参数rewire_count
该参数使得在每次添加新节点到树中后,需要检查并可能重新连接的附近节点的数量

2、路径搜索

可以看到这是在某一次循环时,生成的随机点x_new
在这里插入图片描述
假设rewire_count为3,这样就找到了3个点,分别为near_1near_2near_3
在这里插入图片描述
接下来获取x_newnear_1near_2near_3的成本
在这里插入图片描述
成本计算时是从起点位置到near_*位置的边长,加上蓝色虚线的距离,这就得到了3条路径的成本值,以其中near_2举例说明
在这里插入图片描述
得到3条路径后,连接最小成本得路径,这里很明显是near_1x_new路径最短
在这里插入图片描述
开始将虚线⚪中的路径进行重连线

for _, near in round:
    near_cost = path_cost(self.trees[tree].E, self.z_start, near)
    new_cost = path_cost(self.trees[tree].E, self.z_start, x_new) + segment_cost(x_new, near)
    if new_cost < near_cost and self.X.collision_free(near, x_new, self.r):
        self.trees[tree].E[near] = x_new

还是循环这3个点,

  • near_cost = 计算从起点start到这near的路径长度
  • new_cost = 计算起点startx_new路径长度+ x_newnear 路径长度
  • 当new_cost < near_cost时,同时x_newnear 的路径没有和障碍物相交
    • near的父节点设置为x_new

x_newnear_1near_2near_3,三条路线中,near_2明显与障碍物相交,所以不考虑,就只剩这两条路线了
在这里插入图片描述
其中橘黄色路线明显不符合new_cost < near_cost,因为near_cost是在new_cost的基础上增加了x_newnear_1
粉红色的路线符合new_cost < near_cost,很明显粉色长度大于最下面那一根橙色线长度,并且没有经过障碍物
所以将near_3的父节点变为x_new
在这里插入图片描述
最终就得到了
在这里插入图片描述
相比于之前,路径成本更低了,RRT*就是这么优化的,最后一步从终点反推起点生成路径

3、效果展示

在这里插入图片描述
可以看到比RRT更加丝滑
3D效果展示

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

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

相关文章

开源软件项目:趋势、参与经验与收获

在当今这个全球经济与科技日新月异的时代&#xff0c;开源软件项目&#xff08;Open Source Software, OSS&#xff09;正以前所未有的速度蓬勃发展&#xff0c;成为推动技术创新、促进产业合作、加速知识共享的重要力量。随着云计算、大数据、人工智能等技术的兴起&#xff0c…

C#入门与精通

C#精通 本文章主要是对于学习C#基础难点进行学习以及与java语言的不同点&#xff0c;详细学习可见官网&#xff1a;https://dotnet.microsoft.com/en-us/learn 文章目录 C#精通VSVS基本设置 C#是什么C#程序控制台输出变量内插占位符C#foreach循环类型转换操作数组内置方法格式设…

Java智慧养老养老护理帮忙代办陪诊陪护小程序系统源码

&#x1f31f;智慧养老新风尚&#xff0c;护理代办陪诊小程序来帮忙✨ &#x1f3e1;【开篇&#xff1a;关爱老人&#xff0c;从智慧养老开始】&#x1f3e1; 随着社会的进步&#xff0c;智慧养老已成为新时代孝心的体现。面对忙碌的生活节奏&#xff0c;如何更好地照顾家中长…

三、基础语法2(30小时精通C++和外挂实战)

三、基础语法2&#xff08;30小时精通C和外挂实战&#xff09; B-02内联函数B-04内联函数与宏B-05_constB-06引用B-07引用的本质B-08-汇编1-X86-X64汇编B-09-汇编2-内联汇编B-10-汇编3-MOV指令C-02-汇编5-其他常见指令C-05-汇编8-反汇编分析C-07-const引用、特点 B-02内联函数 …

智能时代的伦理困境:如何应对AI引发的社会问题

文章目录 每日一句正能量前言构建可靠的AI隐私保护机制1. **数据最小化原则**2. **数据匿名化和去标识化**3. **加密技术**4. **访问控制**5. **数据使用透明度**6. **用户控制权**7. **数据保护影响评估**8. **法规遵从性**9. **隐私设计**10. **安全意识教育和培训**11. **持…

C++自定义字典树结构

代码 #include <iostream> using namespace std;class TrieNode { public:char data;TrieNode* children[26];bool isTerminal;TrieNode(char ch){data ch;for (int i 0; i < 26; i){children[i] NULL;}isTerminal false;} }; class Trie { public:TrieNode* ro…

Transformer和预训练模型是什么

目前我们使用的OpenAI的ChatGPT是一种基于GPT-3.5或GPT-4的聊天机器人&#xff0c;能够实现人与机器之间的自然语言交互。那么GPT是什么呢&#xff1f; GPT是一种语言模型&#xff0c;它是由OpenAI实验室于2018年推出的基于Transformer架构的预训练语言模型&#xff0c;通过处理…

matlab y = 1/√x图像和y = 1/x图像

matlab y 1/√x图像和y 1/x图像 y 1/√x与y 1/x绘制结果y√x y 1/√x与y 1/x clc, clear, close all; length 3; axis_len 5;% Create a range of x values x linspace(0.01, length^2, 1000); % Avoid x 0 for 1/√x% Compute the corresponding y values y1 1 .…

2024.7.23(DNS正向解析)

回顾&#xff1a; # 安装 samba yum -y install samba # 自建库&#xff0c;只下载&#xff0c;不安装 yum -y install --downloadonly --downloaddir./soft/ # 配置samba vim /etc/samba/smb.conf # 配置 [xxxxxxxname] commentdasdffsffdslfdjsa path/share …

hadoop大数据安全管理:ldap、keberos、ranger

hadoop大数据中认证一般用keberos&#xff0c;授权用ranger&#xff0c;kerberos和Ldap组件共同组成整个集群的安全鉴权体系&#xff0c;Ldap负责用户数据存储。 kerberos Kerberos 是一种网络认证协议&#xff0c;用于在不安全的网络中以安全的方式对用户和服务进行身份验证。…

05-用户画像+mysql-hive数据导入

将用户数据导入数仓 新建 create_hive_table.sh文件 在终端执行以下文件 sh create_hive_table.sh sqoop create-hive-table \ --connect jdbc:mysql://up01:3306/tags_dat \ tags_dat库名 --username root \ root 用户名 --password 123456 \ 123456 密码 --ta…

Vuex数据持久化实现

版本&#xff1a;vue 3.4.29 vuex4.1.0 1. 出现的问题 当我使用 vuex 作为状态管理组件来存储用户的一些信息之后&#xff0c;发现从/login 页面跳转到/home 界面后拿不到vuex信息。 之后查阅资料了解&#xff0c;当切换路由后&#xff0c;vue 会重新渲染&#xff0c;而vuex 也…

Java——————接口(interface) <详解>

1.1 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本电脑上的USB接口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上&#xff0c;可以插&#xff…

小程序收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

NC65 还款单的冲借款还款金额和报销单中冲借款的还款金额的计算逻辑

被报销单的冲借款界面中还款单金额计算逻辑&#xff0c;困扰了两天&#xff0c;无意中操作了&#xff0c;才搞清楚计算的逻辑&#xff08;感觉有点反人类&#xff09;。明明可以借款金额减去冲借款金额等于还款金额就行了&#xff0c;非得冲借款金额减去报销金额等于还款金额。…

数学基础【俗说矩阵】:逆矩阵

逆矩阵知识 认识逆矩阵 当最矩阵A【左乘】【初等阵】多次&#xff08;也就是进行多次【初等行】变化&#xff09;后&#xff0c;得到了一个【单位阵E】。由于矩阵具有结合律&#xff0c;把矩阵A【左乘】的所有【初等阵】乘起来&#xff0c;就得到了一个新的矩阵。我们称这个能…

Jenkins - apt 安装软件包 404 Not Found

Jenkins - apt 安装软件包 404 Not Found 引言关于 apt解决 apt 安装软件包 404 问题问题分析解决方案 引言 日常 Jenkins job 运行&#xff0c;有段时间会遇到 apt 安装软件包 404 的情况&#xff0c;这种情况不是每次都发生的&#xff0c;但是会导致 Jenkins 失败&#xff0…

强化学习术语与超参数整理(PPO)

最近在isaac lab中使用各个强化学习框架做对比训练&#xff0c;算法都是用的PPO&#xff0c;但是每个框架里超参数名字都不太一样&#xff0c;各种叫法弄得都混乱了&#xff0c;而且对齐不好很难对比出结论&#xff0c;在这里系统整理一下。 Isaac Lab支持的强化学习框架介绍-…

UE4-光照重建

当我们拉入新的光源和模型到我们的场景中后&#xff0c;会产生这样的情况&#xff1a; Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一&#xff1a; 或者也可以在世界大纲中选中我们的光源&#xff0c;然后将我们的光源改变为可以…