【移动机器人运动规划】02 —— 基于采样的规划算法

文章目录

  • 前言
    • 相关代码整理:
    • 相关文章:
  • 基本概念
  • 概率路线图(Probabilistic Road Map)
    • 基本流程
      • 预处理阶段
      • 查询阶段
    • 优缺点(pros&cons)
    • 一些改进算法
    • Lazy collision-checking
  • Rapidly-exploring Random Tree
    • 算法伪代码
    • 一些改进算法
      • KD-tree
      • Bidirectional RRT / RRT Connect
  • Optimal sampling-based path planning methods
    • Rapidly-exploring Random Tree*
      • Kinodynamic-RRT*
      • Anytime-RRT*
  • Advanced Sampling-based Methods
    • Informed RRT*
      • 流程
    • Cross-entropy motion planning
  • 其他变种
  • 实践
    • 作业思路
    • MATLAB
      • RRT
      • RRT*
      • Goal-bias RRT*

前言

本文部分内容参考了深蓝学院的移动机器人运动规划,依此做相关的笔记与整理。之前的文章也有对基于采样的算法进行过介绍,所以本文并不着重介绍这类算法的基本概念,主要是对之前文章的一些补充。

相关代码整理:

  1. https://gitee.com/lxyclara/motion-plan-homework/
  2. https://github.com/KailinTong/Motion-Planning-for-Mobile-Robots/blob/master
  3. https://gitee.com/aries-wu/Motion-plan/blob/main/
  4. 链接: https://pan.baidu.com/s/1UtVHRxDq771LfSGK_21wgQ?pwd=rhtp 提取码: rhtp

相关文章:

自动驾驶路径规划——基于概率采样的路径规划算法(PRM)https://blog.csdn.net/sinat_52032317/article/details/127177278
自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)https://blog.csdn.net/sinat_52032317/article/details/127197120

基本概念

规划完备性概念

  • Complete Planner: always answers a path planning query correctly in bounded time
  • Probabilistic Complete Planner: if a solution exists, planner will eventually find it, using random sampling (e.g. Monte Carlo sampling)
  • Resolution Complete Planner: same as above but based on a deterministic sampling (e.g sampling on a fixed grid).【采样更确定】

概率路线图(Probabilistic Road Map)

之前的这篇博客已经有过介绍以及代码示例:自动驾驶路径规划——基于概率采样的路径规划算法(PRM)

基本流程

一般可以分为两个阶段:预处理阶段(Learing phase/preprocess phase)和查询阶段(query phase)。

预处理阶段

  • 初始化。设 G ( V , E ) G(V,E) G(V,E)为一个无向图,其中顶点集 V V V代表无碰撞的顶点集,连线集 E E E代表无碰撞路径。初始状态为空。
  • 构型采样。从构型空间中采样一个无碰撞的点 a ( i ) a(i) a(i)并加入到顶点集 V V V 中。
  • 领域计算。定义距离 ρ ρ ρ,对于已经存在于顶点集 V V V中的点,如果它与 a ( i ) a(i) a(i) 的距离小于 ρ ρ ρ,则将其称作点 a ( i ) a(i) a(i)的邻域点。
  • 边线连接。将点 a ( i ) a(i) a(i)与其领域点相连,生成连线 τ τ τ
  • 碰撞检测。检测连线 τ τ τ 是否与障碍物发生碰撞,如果无碰撞,则将其加入到连线集 E E E 中。
  • 结束条件。当所有采样点(满足采样数量要求)均已完成上述步骤后结束,否则重复2-5。
    在这里插入图片描述

查询阶段

采用AStar或Dijkstra等算法从起点到终点进行搜索。
在这里插入图片描述

优缺点(pros&cons)

更详细的特点总结在之前的博客中已经阐述过了,这里只列出几点关键的。

优点:

  • 概率完备性
  • 应对高维空间规划效率高
  • 不易陷入局部最小值

缺点:

  • 还未考虑边界值问题(运动学约束)
  • 分为两阶段式的算法冗长。

一些改进算法

Lazy collision-checking

改进点:
在采点建图时不做碰撞检测处理,在后续Search阶段才进行碰撞检测处理。若检测到碰撞,删除路径中碰撞的点与边,重构路线图,再次进行搜索,直到找到一条路径。

以下是示意图
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Rapidly-exploring Random Tree

之前的这篇博客已经有过介绍以及代码示例:自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

算法伪代码

在这里插入图片描述

一些改进算法

KD-tree

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

利用kd-tree查找最近的节点(每次找中位数)
在这里插入图片描述在这里插入图片描述

Bidirectional RRT / RRT Connect

Bidirectional RRT / RRT Connect之前的这篇博客已经有过介绍:自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

Optimal sampling-based path planning methods

Rapidly-exploring Random Tree*

这部分同样可以参考自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

算法伪代码:
在这里插入图片描述

Kinodynamic-RRT*

考虑机器人的运动学约束
在这里插入图片描述
论文:Kinodynamic RRT*: Optimal Motion Planning for Systems with Linear Differential Constraints
https://arxiv.org/abs/1205.5088
在这里插入图片描述

Anytime-RRT*

在机器人运动过程中,一直在更新RRT*

在这里插入图片描述
Anytime Motion Planning using the RRT*https://ieeexplore.ieee.org/document/5980479

Advanced Sampling-based Methods

Informed RRT*

Informed RRT*: Optimal sampling-based path planning focused via direct sampling of an admissible ellipsoidal heuristic
https://ieeexplore.ieee.org/abstract/document/6942976

在这里插入图片描述

流程

当生成路径之后,以红色的点到绿色的点这段路径的长度(红色部分)为半长轴的两倍(2a),以红色点和绿色点作为焦点,生成椭圆。在椭圆的范围内进行采样与规划,重新生成路径后再次重复以上步骤。informed RRT*提升了规划速度,减少CPU运算时间,同时路径更为平滑。
在这里插入图片描述

Cross-entropy motion planning

Cross-entropy motion planninghttps://ieeexplore.ieee.org/document/6301069

首先得到一个路径
然后以路径中的每个点作为一个高斯模型的中心,在多高斯模型中采样,得到多条路径。
然后对多条路径做均值,重新构建多高斯模型。在这里插入图片描述在这里插入图片描述在这里插入图片描述

其他变种

• Lower Bound Tree RRT (LBTRRT)[a]
• Sparse Stable RRT[b]
• Transition-based RRT (T-RRT)[c]
• Vector Field RRT[d]
• Parallel RRT (pRRT)[e]
• Etc.[f]

[1] An Overview of the Class of Rapidly-Exploring Random Trees
[2] http://msl.cs.uiuc.edu/rrt/
[a] https://arxiv.org/pdf/1308.0189.pdf
[b] http://pracsyslab.org/sst_software
[c] http://homepages.laas.fr/jcortes/Papers/jaillet_aaaiWS08.pdf
[d] https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6606360
[e] https://robotics.cs.unc.edu/publications/Ichnowski2012_IROS.pdf
[f] https://github.com/zychaoqun

实践

[1] https://ompl.kavrakilab.org/
[2] https://moveit.ros.org/
[3] https://industrial-training-master.readthedocs.io/en/melodic/_source/session4/Motion-Planning-CPP.html

作业思路

[1] 第3章作业思路讲解1
[2] 第3章作业思路讲解2

MATLAB

RRT

在这里插入图片描述

RRT*

在这里插入图片描述

Goal-bias RRT*

在这里插入图片描述

PS:相关代码整理完后附上

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构建稳健的PostgreSQL数据库:备份、恢复与灾难恢复策略

在当今数字化时代,数据成为企业最宝贵的资产之一。而数据库是存储、管理和保护这些数据的核心。PostgreSQL,作为一个强大的开源关系型数据库管理系统,被广泛用于各种企业和应用场景。然而,即使使用了最强大的数据库系统&#xff0…

Unity Shader:常用的C#与shader交互的方法

俗话说久病成医,虽然不是专业技术美术,但代码写久了自然会积累一些常用的shader交互方法。零零散散的,总结如下: 1,改变UGUI的材质球属性 有时候我们需要改变ui的一些属性,从而实现想要的效果。通常UGUI上…

Kafka的配置和使用

目录 1.服务器用docker安装kafka 2.springboot集成kafka实现生产者和消费者 1.服务器用docker安装kafka ①、安装docker(docker类似于linux的软件商店,下载所有应用都能从docker去下载) a、自动安装 curl -fsSL https://get.docker.com | b…

有哪些好用的AI绘画网站?

随着人工智能技术的发展,人工智能绘画工具逐渐成为数字艺术领域的热门话题。人工智能绘画工具是利用深度学习和其他技术来模拟绘画过程和效果的工具,可以帮助用户快速创作高质量的艺术作品。除了Midjourney、除了openai等流行的AI绘画工具外,…

使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

K3s vs K8s:轻量级对决 - 探索替代方案

在当今云原生应用的领域中,Kubernetes(简称K8s)已经成为了无可争议的领导者。然而,随着应用规模的不断增长,一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题,一个名为K3s的…

python 常见数据类型和方法

不可变数据类型 不支持直接增删改 只能查 str 字符串 int 整型 bool 布尔值 None None型特殊常量 tuple 元组(,,,)回到顶部 可变数据类型,支持增删改查 list 列表[,,,] dic 字典{"":"","": ,} set 集合("",""…

「Qt」常用事件介绍

🔔 在开始本文的学习之前,笔者希望读者已经阅读过《「Qt」事件概念》这篇文章了。本文会在上篇文章的基础上,进一步介绍 Qt 中一些比较常用的事件。 0、引言 当我们想要让控件收到某个事件时做一些操作,通常都需要重写相应的事件处…

Python---Numpy

文章目录 1.Numpy是什么?2.ndarray2.1 什么是ndarray?2.2 ndarray的属性2.3 ndarray的类型 3.Numpy基本操作3.1 生成0或1的数组3.2 从现有数组生成数组拓展:浅拷贝和深拷贝 3.3 生成固定范围的数组3.4 生成随机数组3.4.1 正态分布3.4.2 均匀分布 3.5 形…

5款无广告的超实用软件,建议收藏!

​ 大家好,我又来了,今天向大家推荐几款软件,它们有个共同的特点,就是无广告、超级实用,大家看完之后,可以自己去搜索下载试用。 1.重复文件清理——Duplicate Cleaner ​ Duplicate Cleaner是一款用于找出硬盘中重复文件并删除的工具。它可以通过内容或文件名查找重复文档、…

多语言gRPC开发入门与避坑指南

目录 gRPC相关介绍 什么是gPRC gPRC的优点 gPRC的缺点 gPRC定位 协议缓冲区(Protocol Buffers) 四种调用方式 gRPC开发三大步骤 第一步:定义和编写proto服务文件 第二步:proto文件转化为gRPC代码 第三步:调…

IDEA中maven项目失效,pom.xml文件橙色/橘色

IDEA中maven项目失效,pom.xml文件橙色/橘色 IDEA中Maven项目失效 IDEA中创建的maven项目中的文件夹都变成普通格式,pom.xml变成橙色 右键点击橙色的pom.xml文件,选择add as maven project maven项目开始重新导入相应依赖,恢复…

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇

QT图形视图系统 - 终篇 接上一篇,我们需要继续完成以下的效果; 先上个效果图: 修改背景,使之整体适配 上一篇我们绘制了标尺,并且我们修改了放大缩小和对应的背景,整体看来,我们的滚动条会和…

单篇笔记曝光248万+,素颜、寸头…小红书女性种草新趋势分析!

最近,小红书上刮起一阵素颜、寸头,拒绝美丽绑架的风潮,他们称之为“脱美役”,即脱离美丽枷锁,做自己,接纳原本的自己。这是女性觉醒的又一阵风,品牌要如何跟上这波种草新趋势呢? 单篇…

村田授权代理:共模扼流线圈针对汽车专用设备高频噪声的降噪对策

车载市场正不断扩充ADAS、自动驾驶、V2X、车载信息系统等的应用。由于此类应用要处理庞大的信息,因此为了执行处理,内部处理信号的处理速度亦不断高速化。另一方面,由于部件数量增多,安装密度增大,因此要求部件小型化。…

JVM之垃圾回收器

1.如何判断对象可以回收 1.1 引用计数法 什么是引用计数器法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 …

芯旺微冲刺IPO,车规级MCU竞争白热化下的“隐忧”凸显

在汽车智能化和电动化发展带来的巨大蓝海市场下,产业链企业迎来了一波IPO小高潮。 日前,上海芯旺微电子技术股份有限公司(以下简称“芯旺微”)在科创板的上市申请已经被上交所受理,拟募资17亿元,用于投建车…

【如何提高在浏览器时的专注力!去广告和新闻!】如何使用浏览器时看不到任何新闻以及广告【浏览器去除广告和新闻】

如何使用浏览器时看不到任何新闻以及广告 1. 使用chrome浏览器或者其他浏览器都可以2. 使用bing搜索3. 去广告 1. 使用chrome浏览器或者其他浏览器都可以 2. 使用bing搜索 bing 3. 去广告

【bug】记录一次使用Swiper插件时loop属性和slidersPerView属性冲突问题

简言 最近在vue3使用swiper时,突然发现loop属性和slides-per-view属性同时存在启用时,loop生效,下一步只能生效一次的bug,上一步却是好的。非常滴奇怪。 解决过程 分析属性是否使用错误。 loop是循环模式,布尔型。 …

Qt展示动态波形

Qt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述 接入串口,配置串口顺序进行接收数据;数据分成两个串口分别传入,使用多线程并发接入;时域数据有两个通道(I,Q),分别以实…