聊聊路径规划算法(四)——滚动在线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

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.