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

相关文章

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

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 脚本,一般会经过正规的审批