优化过后的基于采样的路径规划算法(RRT Star)

2023-10-18 01:10

本文主要是介绍优化过后的基于采样的路径规划算法(RRT Star),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


Original RRT的一些缺陷

  • 所得到的的路径并不是最短/最优
  • 由线段连接成的路径不光滑,不太适合机器人去执行,如下图所示。
    在这里插入图片描述

RRT Star

是针对性地去解决RRT当中路径不是最优的情况

伪代码

RRT Star大体上与RRT是一致的
在这里插入图片描述

  1. 采样得到空间中的点X_rand。
  2. 通过在X_rand周围进行搜索,找到其最近的领域节点X_near,搜索过程中可以用KT-Tree进行加速。
  3. 通过X_near往X_rand移动一定距离,可以得到一个新的点X_new。
  4. 此时就与RRT当中有些不同了,在RRT当中,找到X_new之后是与X_near直接相连的,但是在RRT*当中,找到了X_new之后,就会在X_new之间找到一个范围,在这个范围内,画一个以R为半径的圆,继续搜索其他的点, 如下图所示,找到了X_new,X1,X2这三个节点。
    在这里插入图片描述
    伪代码中的NearC就代表了找附近节点的这么个过程,在RRT当中,找到X_new后,其父节点就是X_near,但在这就不同了,这时把三个节点都通过直线连接起来,下一步做一个操作,就是当前的终点是X_new,从X1,X2,X_near都可以到达X_new,现在就看这三个点中的哪个点到这个最初的大红色起点的Cost是最小的。(动态规划思想)。在这里插入图片描述
    显然是从X_near到达红色起点路径最短。
    在这里插入图片描述
    这时候X_near就被选为X_new的父节点。

综上,就完成了一次ChooseParent,AddNodEdge的过程。


rewire()

RRT Star更为突出的特色,就是结尾处的这个rewire()函数,帮助其修改连接过程,使得路径更优化。
举个例子:
在这里插入图片描述
在图中,X1到起始节点有两条路径可以选择,一条是红色的一条是蓝色的,当选红色的路径时,X1的父节点是X_near;当选蓝色的路径时,X1的父节点是X_new。通过计算两条路的Cost可知,红色的Cost<蓝色的Cost,此时就不进行Rewire操作,继续保持原有的红色路径行进。

在这里插入图片描述
在图中,X2到起始节点有两条路径可以选择,一条是红色的一条是蓝色的,当选红色的路径时,X2的父节点是X1;当选蓝色的路径时,X2的父节点是X_new。通过计算两条路的Cost可知,红色的Cost>蓝色的Cost,此时就进行Rewire操作,更改X2的父节点为X_new,走蓝色的路径,如下图所示。
在这里插入图片描述
rewire过程不断迭代,从而使得路径不断优化。
RRT Star在找到一条路径的时候并不会停止,而是会继续进行寻找,直到找到最优的路径为止。
这也是为什么RRT Star可以找到最优化路径的原因。


Kinodynamic-RRT*

之前说过了未优化的RRT,由线段连接成的路径不光滑,在运动学上是接受的,但是现实当中不太适合机器人去执行,之前的RRT也没解决这个问题,有的研究者就提出了Kinodynamic-RRT来解决这个问题。

Kinodynamic

之前的步骤与RRT Star都是一样,最主要的是如何连接X_near与X_new,在RRT以及RRT Star当中,直接用直线进行连接;而Kinodynamic是找符合机器人约束的曲线作为路径,下图是两algorithm的效果图。
在这里插入图片描述
在这里插入图片描述
上图左边,RRT* 类的算法,找到了X_new,下意识的进行直线连接,但是直线穿过了障碍物,只能舍去,但是运用了Kinodynamic-RRT* ,就会有一条平滑的路径,绕过了障碍物。
Kinodynamic-RRT* 演示
Kinodynamic-RRT* 相关资料


Anytime-RRT*

当通过树找到了路径,机器人就会沿着树往前走,当机器人往前走的过程中,这个树还是实时的在构建,实时的在更新,在寻找路径,做了一个实时更新的过程。

Anytime-RRT Star的要义就是,将自己的起始点进行实时更新,最初的起始点就是起始点,每走一步起始点就变成了当前点。

相比于之前的RRT,就是先规划出一条,很死板,固定死了,Anytime-RRT* 能更好的去适应环境变化大的情况。

Anytime-RRT* 相关资料


其他的Sampling-Based Algorithm

Informed RRT*

前面也说了,RRT是在一个Space当中均匀的进行撒点,然后不断优化路径,但是这样工作量很大,而且浪费也高,这下研究者就提出了Informed RRT Star,将采样的范围限定成了椭圆。只需要在有用的区域进行撒点。在这里插入图片描述
在这里插入图片描述
以路径的常数来作为椭圆方程中的常数,这就是为什么椭圆越来越扁的原因。
这样采样的范围就会快速收缩,越来越快得到最优的路径。
Informed RRT* 相关资料

Cross-Entropy motion planning

在这里插入图片描述
轨迹生成后,就在各个节点周围进行采样,每个圈都是一个高斯采样,不断进行路径优化,就会得到后面的几条路径。
CEMP流程

在这里插入图片描述


Conclusion

除此之外,还有很多Advanced Sampling Based Algorithm,欢迎评论区交流👏🏻。

这篇关于优化过后的基于采样的路径规划算法(RRT Star)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/229181

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

浅谈MySQL的容量规划

《浅谈MySQL的容量规划》进行MySQL的容量规划是确保数据库能够在当前和未来的负载下顺利运行的重要步骤,容量规划包括评估当前资源使用情况、预测未来增长、调整配置和硬件资源等,感兴趣的可以了解一下... 目录一、评估当前资源使用情况1.1 磁盘空间使用1.2 内存使用1.3 CPU使用1.4 网络带宽二、

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer