移动机器人规划 - 基于采样的路径搜索

0 预备知识

基于采样的规划器:
(1)不要试图显示地构造C空间及其边界
(2)只需要简单的机器人配置是否发生碰撞
(3)利用简单的碰撞测试,充分了解空间
(4)碰撞检测是一个单独的模块-可根据应用进行定制
(5)随着碰撞检测的改进,这些算法也在改进
(6)单点查询和多点查询的请求方法不同
规划的完备性概念
(1)完备规划器:在有限的时间内正确查找一条规划的路径
(2)概率完备性:如果解存在,规划器最终会找到它,使用随机采样
(3)解决方案完备性:与上述一样,但基于确定性采样(例如,在固定网格上采样)

内容概要:

(1)PRM
(2)RRT
(3)基于优化的采样方法
(4)先进的路径规划方法
(5)实现

1 PRM

论文链接:https://ieeexplore.ieee.org/abstract/document/508439/

在这里插入图片描述
PRM:
(1)图结构
(2)分解为两个阶段:①学习 ②查询
①:在C-space上采样N个点 ;删除那些在障碍物里的点;连接到最近的点,并获得无碰撞段;删除与障碍物冲突的线段。
在这里插入图片描述

②:在路线图上搜索从起点到目标的路径(使用Dijkstra算法或A* 算法);路线图现在类似于栅格地图(或简化栅格地图)
在这里插入图片描述

(3)可以有效地检查采样配置和样本之间的连接是否存在碰撞
(4)相对少的步骤和局部路径就足以捕获自由空间的连通性

PRM的优缺点
在这里插入图片描述

优点:
简单,只需要调整参数即可实现不同场景下的路径规划,且不需要对环境中的障碍物进行精确建模,在高维空间和动态环境中的路径规划有很大优势。
缺点:
①需要处理两点边界值的问题
②在状态空间上构建图,但不特别关注生成路径(不关注启发式的添加)
③该算法存在狭窄通路问题,当规划的路径需要通过密集的障碍物或者需要经过狭窄的通道时,PRM方法的效率变的低下

为了提高效率
Lazy collision-checking
①碰撞检测过程非常耗时,特别是在复杂或高维的环境中。
②采样点并生成线段,而不考虑碰撞(Lazy)
在这里插入图片描述

③必要时进行碰撞检查:在未进行碰撞检查的情况下生成的道路图上查找路径
如果路径不是无碰撞的,则删除相应的边和节点
在这里插入图片描述
④重新启动路径查找
在这里插入图片描述

PRM算法伪代码:
在这里插入图片描述
V V V表示随机点集, E E E表示路径集
①随机采样一个无碰撞的点,将这个无碰撞的点加入 V V V中,重复 n n n
②生成概率路图

  • V V V中的每个点 q q q,根据一定的距离范围选择 k k k个邻域点
  • 对每个邻域点 q ′ q' q进行判断,如果 q q q q ′ q' q尚未形成路径,则将其连接形成路径,随后进行碰撞检测,若无碰撞,则保留该路径。
  • 按上述步骤建完图,使用图搜索算法搜索出一条最短路径。

2 RRT

①算法通常将起点作为根节点 x i n i t x_{init} xinit,加入到随机树的节点集合中
②从可行区域内随机选取一个节点 x r a n d x_{rand} xrand,并在已生成的树中利用欧氏距离判断距离 x r a n d x_{rand} xrand最近的点 x n e a r x_{near} xnear
③从 x n e a r x_{near} xnear x r a n d x_{rand} xrand的连线方向上扩展固定步长 u u u,得到新节点 x n e w x_{new} xnew(如果 x n e a r x_{near} xnear x r a n d x_{rand} xrand间的距离小于步长,则直接将 x r a n d x_{rand} xrand作为新节点 x n e w x_{new} xnew)。
④若 x n e w x_{new} xnew x n e a r x_{near} xnear之间无障碍物,将 x n e w x_{new} xnew加入到随机树的节点集合中,同时将 x n e a r x_{near} xnear作为 x n e w x_{new} xnew的父节点,将边 ( x n e a r , x n e w ) (x_{near},x_{new}) (xnear,xnew)加入到随机树的边集中
⑤若这两个节点间有障碍物,则重新选择 x n e a r x_{near} xnear并进行扩展。
循环执行以上步骤,直到随机树的叶节点包含了目标点,并从中找出一条各节点连接成的从起点至终点的无碰撞路径。
在这里插入图片描述

采样过程是完全随机的,但是我们可以在采样时以一定的概率直接采样终点作为 x r a n d x_{rand} xrand ,加快搜索速度。

RRT概述:
单查询算法,目标是尽可能快的找到一条从起点到终点的可行路径;模拟树木生长时树根不断向四周扩散的过程
在这里插入图片描述

RRT的优缺点:
优点:
(1)旨在找到从开始到目标的路径,若能够获得全局环境并进行建模,可进行全局路径规划。若无法获得全局环境,如自动驾驶汽车路径规划问题,能够在动态规划中对局部地图进行规划以生成局部路径
(2)比PRM更有针对性
缺点:
(1)非最优解决方案;当路径中包含障碍物之间形成的狭窄通道时,使用RRT算法规划路径有一定几率无法规划出最优路径
(2)效率不高,留有改进空间
(3)在整个空间采样

为了提高效率:
(1)引入Kd-tree

参考博客:https://blog.csdn.net/junshen1314/article/details/51121582

在这里插入图片描述
在这里插入图片描述
(2)双向RRT / RRT连接
①RRT-Connect算法在RRT的基础上引入了双树扩展环节,分别以起点和目标点为根节点同时扩展随机树从而②实现对状态空间的快速搜索。
当两棵树建立连接时可认为路径规划成功。
③通过一次采样得到一个采样点 q r a n d q_{rand} qrand,然后两棵搜索树同时向采样点​方向进行扩展,加快两棵树建立连接的速度。相较于单树扩展的RRT算法,RRT-Connect加入了启发式步骤,加快了搜索速度,对于狭窄通道也具有较好的效果。
在这里插入图片描述

特点:
(1)Connect算法较之前的算法在扩展的步长上更长,使得树的生长更快
(2)两棵树不断朝向对方交替扩展,而不是采用随机扩展的方式,特别当起始位姿和目标位姿处于约束区域时,两棵树可以通过朝向对方快速扩展而逃离各自的约束区域
(3)带有启发性的扩展使得树的扩展更加贪婪和明确,使得双树RRT算法较之单树RRT算法更加有效

缺点:都是单查询算法,最终路径并不是最优的

总结RRT:
(1)逐步构建
(2)快速搜索
(3)关键功能:Sampling, Nearest, Collision-checking

3 基于优化的采样方法

RRT*是渐进最优算法
在这里插入图片描述

  • S a m p l e F r e e SampleFree SampleFree:在可行的区域内随机采样
  • N e a r e s t ( G , x r a n d ) Nearest(G,x_{rand}) Nearest(G,xrand):在已生成的树中利用欧氏距离判断距离 x r a n d x_{rand} xrand最近的点 x n e a r e s t x_{nearest} xnearest
  • S t e e r ( x n e a r e s t , x r a n d ) Steer(x_{nearest},x_{rand}) Steer(xnearest,xrand): 从 x n e a r e s t x_{nearest} xnearest x r a n d x_{rand} xrand的连线方向上扩展固定步长得到新节点 x n e w x_{new} xnew
  • L i n e ( x n e a r e s t , x n e w ) Line(x_nearest, x_new) Line(xnearest,xnew):两个点之间的直线距离(欧氏距离)
  • CollisionFree和ObstacleFree:都是判断两个节点之间是否有障碍物
    在这里插入图片描述
    在这里插入图片描述

Kinodynamic-RRT*
在这里插入图片描述
更改Steer()函数以适应机器人导航中的运动或其他约束

Anytime-RRT*
当机器人执行当前轨迹时,继续优化RRT树,讲究一个实时!!
在这里插入图片描述

4 基于采样的先进方法

informed RRT*(启发式)
在这里插入图片描述
在这里插入图片描述
Cross-entropy motion planning
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 实现

OMPL
Moveit with ROS
Tutorials
在这里插入图片描述
在这里插入图片描述


加油😀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417833.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

月薪2W的软件测试工程师,到底是做什么的?

在生活中,我们常常会遇到以下几种窘迫时刻: 准备骑共享单车出行,却发现扫码开锁半天,车子都没有反应;手机导航打车,却发现地图定位偏差很大,司机总是跑错地方;买个水,却…

管理信息系统知识点复习

目录 一、名词解释题1.企业资源规划(ERP)2.面向对象方法:3.电子健康:4.供应链5.数据挖掘6.“自上而下”的开发策略:7.业务流程重组8.面向对象:9.决策支持系统10.聚类11.集成开发环境:12.供应商协同13.数据仓库14.深度学…

多线程编程常见面试题讲解(锁策略,CAS策略,synchronized原理,JUC组件,集合类)

💕"跑起来就有意义"💕 作者:Mylvzi 文章主要内容:多线程编程常见面试题讲解 hello各位朋友们,最近笔者刚刚结束了学校的期末考试,现在回来继续更新啦!!! 今天要学习的是多线程常见面试题讲解,这些内容都是面试中常考的…

【前后端分离与不分离的区别】

Web 应用的开发主要有两种模式: 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期,Web 应用开发主要采用前后端不分离的方式,它是以后端直接渲染模板完成响应为主的一种开发模式。以前后端不…

bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start

总结下后端部署windos iis环境net6版本,500.30问题报错的一种解决方案: 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境,是否已经安装 然后在事件管理器>Windows日志>应用程序,里面查看详细异常记录 在iis下面…

如何进行产品的人机交互设计?

产品的人机交互设计是指通过用户界面和用户体验设计来优化产品与用户之间的交互过程,从而提高产品的易用性、可用性和用户满意度。人机交互设计需要考虑用户的需求、行为模式、心理感受以及技术实现,下面我将介绍如何进行产品的人机交互设计。 首先&…

【微信小程序独立开发 4】基本信息编辑

这一节完成基本信息的编辑和保存 首先完成用户头像的获取 头像选择 需要将 button 组件 open-type 的值设置为 chooseAvatar,当用户选择需要使用的头像之后,可以通过 bindchooseavatar 事件回调获取到头像信息的临时路径。 从基础库2.24.4版本起&…

受电端协议芯片是如何让Type-C接口设备实现快充?

随着科技的不断进步,USB Type-C接口在电子产品中越来越普及。而在这个接口中,Type-c受电端协议芯片起着至关重要的作用。那么,什么是Type-c受电端协议芯片?它又是如何工作的呢?本文将为您揭开Type-c受电端协议芯片的神…

分享行政检察院法律监督模型的构建价值和运用范式

数字检察是检察工作现代化的重要依托。在数字化时代背景下,行政检察监督办案要深入推进检察大数据战略,推动办案模式从“个案为主、数量驱动”向“类案为主、数据赋能”转变,通过数据分析、数据碰撞、数据挖掘发现治理漏洞或者监督线索&#…

day01.基础知识

目录 一.函数与语句 1.1进入C 1.1.1main( )头函数 1.1.2 注释 1.1.3头文件 1.1.4预处理 1.1.5命名空间 1.1.6输入与输出 1.1.7格式化 1.2语句 1.2.1声明语句与变量 1.2.2赋值语句 1.3函数 1.3.1使用有返回值的函数 一.函数与语句 1.1进入C 1.1.1main( )头函数 …

解决一个mysql的更新属性长度问题

需求背景: 线上有一个 platform属性,原有长度为 varchar(10),但是突然需要填入一个11位长度的值;而偏偏这个属性在线上100张表中有50张都存在,并且名字各式各样,庆幸都包含 platform;例如 platf…

深入浅出Spring AOP

第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…