聊聊路径规划算法(四)——滚动在线RRT算法和BUG算法

2024-04-20 05:28

本文主要是介绍聊聊路径规划算法(四)——滚动在线RRT算法和BUG算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本RRT算法更偏向于遍历所有自由空间直到获取可行路由性,这使得它不能够进行未知或动态环境条件中的机器人实时运动计划。利用滚动计划的思路可以将RRT算法加以完善,使之更具有实时规划能力。

 滚动规划

机器人在不确定的或动态周围环境中行走时,可以探知在其传感器区域内或限定区域的周围环境讯息。机器人可以使用局部信息制定局部运动规划,并使用适当的评估标准达到部分总体目标。然后机器人可以在到达部分总体目标以后,继续制定新的部分计划。就这样,不断实施直至抵达新全局目标。

滚动规划算法的基本原理:

环保信息系统预测:在滚动的每一次,机器人通过检测到的视野内的环保信息系统、或任何存在的环保信息系统,建立保护模式,包含设定在已知范围内的环保节点类型信息系统等;

局部的优化:把这些环境信息模式视为下一次优化的窗口,并在此基础上,按照子目标点的实际情况和特定的优化对策,设计出下一次的最佳子总体目标,接着再依据子总体目标的环境信息模式,选用局部规划算法,先设定向子总体目标前进的部分路线,再执行当前对策,即依所制定的部分路线前进若干步骤,窗口也随之往前滑动;

反馈信息修正:通过局部最优路线,驱动机器人走过一个路线时,机器人将检测到新的未知信号,此时可通过其在行进中检测到的信息数据调整或修正原有的环境模式,进行滚动和下步的局部设计。

这里,部分子目标是在滚动窗口中对某个全局目标的进行条件反射,它需要远离障碍物,并符合一些优化目标。子目标的选定方式,体现了对全局优势的追求和对局部整体受限信息条件的折衷,是在给定的社会环境条件下企图进行整体性考虑的天然选项。

通过滚动窗口的路径规划算法把实时检测到的局部环境信号,以滚动方法实现网络设计。在滑动的每一次,将针对已检测到的环境保护局部信息,采用启发式策略生成环境优化子目标,在当前的视窗中完成环境保护局部路径计划,进而执行当前决策(依局部规划路径推移一次),随着滚动窗口推移,将持续地获取最新的环境信息,以便于在滚动中进行环境优化和反馈信息的整合。同时由于环境规划问题压缩在滚动窗口中,其与环境保护全局计划比较的运算工作量将大为减轻。

采用滚动窗口的路径规划方式的具体步骤为:

第一步为0:先对起始、终端、环境、机器人的视线半径、步长等完成初始化;

步骤1:若终点抵达,则规划中止;

操作2:对当前滚动窗内的所有环境消息予以刷新;

步骤3:产生局部子目标;

过程4:基于子目标和现存条件信息,在当前滚动窗口内计划一个经过调整的局部有效路线;

方法5:按规划的局部路径走进每一步,步长必须等于视野半径;

步骤6:返回步骤1。

滚动在线RRT算法流程

在一个滚动窗口内,随机树以当前区域为开始节点,并建立传感器区域内的所有随机树。结构方式与最基本RRT算法相同。但能够使在全局条件中随机树产生朝目标方向发展的态势,在运动规划时导入启发信号,以降低随机树的随机性,并增加搜索效果[7]。

以Road(x1,x2)指代随意树中二个位置节点间的道路价格,Dis(x1,x2)指代随意树中二个位置节点间的欧几里德距离。相似于Astar方法,本方法为随意树中各个节点设定一种估值参数:f(x)=g(x)+h(x)。当中g(x)=Road(x,xrand)为随意节点,而xrand则代表到树中目的结点x所需的道路时间。H(x)是启发的估值参数,在此处可取随意节点xrand到目标节点xgoal的距离作为估计值,h(x)=Dis(xrand,xgoal)。所以,f(x)就代表了从目的节点x经随机结点xrand至目的地节点xgoal的路线估量值。遍历滚动窗内随机树T时,若取估量函数中较小值的结点xnear,则f(xnear)=min(f(x))。它允许随机树按照距离为目标节点估计值f(x)很小的地方开始延伸,如图所示。


综上,在滚动窗内随机树建立的具体实施方法包括:

1.对滚动窗口随机树T初始化后,T起始时只包括了起始地址S;

2.滚动窗口自由空间中,随机选取了一种状态的xrand;

3.基于最短路线的思想寻找在树T中,与xrand距离最近的结点xnear;

4.选择输入u,将机器人状态由xnear到xnew;

5.确定了xnew是否满足回归分析,不满足则返回第四步骤;

6.将xnew看作随机树T的一个新结点时,u将被写在连接结点xnear的xnew的边上。

滑动窗口的目标空间在进行了K的抽样以后,将遍历随机树,就能够按照启发的估计思路找出当前滑窗口目标空间xsub,xsub是指在当前滑窗口中的每个子树中,所估计最小的节点。选定子目标后,在机器人前完成到达子目标点,并开始下一次的滚动RRT规划工作。过程就这样重复下去,直到抵达了子目标点G。

点击聊聊路径规划算法(四)——滚动在线RRT算法和BUG算法 - 古月居可查看全文

这篇关于聊聊路径规划算法(四)——滚动在线RRT算法和BUG算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误