当前位置: 首页 > news >正文

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

目录

  • 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效果展示

总结

接着RRT的苍蝇继续,但是这次的苍蝇屁股上长了个眼睛*
在飞的时候如果看到了身后有一个节点,那就认为它是其父节点

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UnityShaderUI编辑器扩展
  • 手撕数据结构---栈和队列的概念以及实现
  • go语言怎么实现dataauth?
  • “八股文”在实际工作中是助力、阻力还是空谈?
  • c程序杂谈系列(职责链模式与if_else)
  • Spring中使用到的设计模式及其源码分析
  • [红明谷CTF 2021]write_shell 1
  • UE5+OpenCV配置(Windows11系统)
  • Java从基础到高级特性及应用
  • 001.精读《Big Data: A Survey》
  • SVD用于图形处理★★★
  • element ui 修改table筛选按钮为自定义按钮
  • C# Parallel设置最大并发度
  • 【Qwen-Audio部署实战】Qwen-Audio-Chat模型之FastApi部署实战
  • Fréchet Inception Distance(FID)图像生成技术指标
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [nginx文档翻译系列] 控制nginx
  • Akka系列(七):Actor持久化之Akka persistence
  • eclipse的离线汉化
  • interface和setter,getter
  • JavaScript 基础知识 - 入门篇(一)
  • JS专题之继承
  • mockjs让前端开发独立于后端
  • Redash本地开发环境搭建
  • Redux系列x:源码分析
  • uni-app项目数字滚动
  • Vue2.0 实现互斥
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 大整数乘法-表格法
  • 服务器从安装到部署全过程(二)
  • 理清楚Vue的结构
  • Spring第一个helloWorld
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #数学建模# 线性规划问题的Matlab求解
  • (06)Hive——正则表达式
  • (SpringBoot)第七章:SpringBoot日志文件
  • **python多态
  • .“空心村”成因分析及解决对策122344
  • .gitignore文件---让git自动忽略指定文件
  • .gitignore文件设置了忽略但不生效
  • .Net 路由处理厉害了
  • .net2005怎么读string形的xml,不是xml文件。
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET上SQLite的连接
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [android] 请求码和结果码的作用
  • [AX]AX2012 R2 出差申请和支出报告
  • [C#]winform基于深度学习算法MVANet部署高精度二分类图像分割onnx模型高精度图像二值化
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [CISCN2019 华东南赛区]Web11