【移动机器人运动规划】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:相关代码整理完后附上

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

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

相关文章

数据结构 10-排序4 统计工龄 桶排序/计数排序(C语言)

给定公司名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。 输入格式: 输入首先给出正整数(≤),即员工总人数;随后给出个整数,即每个员工的工龄,范围在[0, 50]。 输出格式: 按工龄的递…

【Jmeter】配置不同业务请求比例,应对综合场景压测

目录 前言 Jmeter5.0新特性 核心改进 其他变化 资料获取方法 前言 Jmeter 5.0这次的核心改进是在许多地方改进了对 Rest 的支持,此外还有调试功能、录制功能的增强、报告的改进等。 我也是因为迁移到了Mac,准备在Mac上安装Jmeter的时候发现它已经…

Java 中的 7 种重试机制

随着互联网的发展项目中的业务功能越来越复杂,有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务,但是远程服务的健壮性和网络稳定性都是不可控因素。 在测试阶段可能没有什么异常情况,但上线后可能会出…

html学习6(xhtml)

1、xhtml是以xml格式编写的html。 2、xhtml与html的文档结构区别&#xff1a; DOCTYPE是强制性的<html>、<head>、<title>、<body>也是强制性的<html>中xmlns属性是强制性的 3、 元素语法区别&#xff1a; xhtml元素必须正确嵌套xhtml元素必…

Css如何设置透明度

本文章转载于css如何设置透明度_css背景透明度_成长中的向日葵的博客-CSDN博客 第一种方法&#xff1a; 语法“background:rgba(R,G,B,A)”&#xff1b; R,G,B颜色的意思&#xff0c;A代表透明度 A&#xff1a;透明度。取值0~1之间 第二种方法&#xff1a; opacity属性设…

Keil MDK环境下FreeModebus移植踩坑记录

Keil MDK环境下FreeModebus移植踩坑记录 文章目录 Keil MDK环境下FreeModebus移植踩坑记录armcc (arm compiler v5)环境实验一&#xff1a;实验二&#xff1a; armclang (arm compiler v6)环境实验一&#xff1a;实验二&#xff1a;实验三&#xff1a;实验四 总结 armcc (arm c…

安防视频汇聚平台EasyCVR视频广场面包屑侧边栏支持拖拽操作

智能视频监控平台EasyCVR能在复杂的网络环境中&#xff0c;将海量设备实现集中统一接入与汇聚管理&#xff0c;实现视频的处理与分发、录像与存储、按需调阅、平台级联等。 TSINGSEE青犀视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协…

详聊API接口?淘宝API接口在ERP系统中扮演者什么角色?

什么是API&#xff1f; API全称应用程序编程接口&#xff08;Application Programming Interface&#xff09;&#xff0c;是一组用于访问某个软件或硬件的协议、规则和工具集合。电商API就是各大电商平台提供给开发者访问平台数据的接口。目前&#xff0c;主流电商平台如淘宝…

软件安全测试和渗透测试的区别在哪?安全测试报告有什么作用?

软件安全测试和渗透测试在软件开发过程中扮演着不同的角色&#xff0c;同时也有不同的特点和目标。了解这些区别对于软件开发和测试人员来说非常重要。本文将介绍软件安全测试和渗透测试的区别&#xff0c;以及安全测试报告在软件开发和测试过程中的作用。 一、 软件安全测试和…

【JavaEE初阶】Servlet(四) Cookie Session

文章目录 1. Cookie && Session1.1 Cookie && Session1.2 Servlet会话管理操作 1. Cookie && Session 1.1 Cookie && Session Cookie是什么? Cookie是浏览器提供的持久化存储数据的机制.Cookie从哪里来? Cookie从服务器返回给浏览器. 服务…

IntelliJ IDEA 2023.2社区版插件汇总

参考插件帝&#xff1a;https://gitee.com/zhengqingya/java-developer-document 突发小技巧&#xff1a;使用插件时要注意插件的版本兼容性&#xff0c;并根据自己的实际需求选择合适的插件。同时&#xff0c;不要过度依赖插件&#xff0c;保持简洁和高效的开发环境才是最重要…

JdbcTemplate

目录 1、简介 2、开发步骤 2.1、导入坐标 2.2、创建表和类 2.3、创建JdbcTemplate对象 2.4、执行数据库操作 3、解耦 4、增删改查 ⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹…

freeswitch 1.10.10-dev录音早期媒体卡通道的bug分析

最近编译了fs 1.10.10-dev也就是 master版本&#xff08;2023年7月6日&#xff09; 给几个客户升级了一下&#xff0c;发现非常不稳定(每天都有几个通道卡在early状态)&#xff0c;最近才有空来分析原因。 之前跑的是1.10.8 release 版本&#xff0c;从来没出现过这个问题&…

AlmediaDev Style Controls Crack

AlmediaDev Style Controls Crack StyleControls是一个稳定、强大的包(超过100个组件)&#xff0c;它使用经典绘图、系统主题、GDI和VCL样式。该软件包包含扩展标准VCL控件的独特解决方案&#xff0c;还包含许多独特的高级控件&#xff0c;用于创建具有Fluent UI模糊背景的现代…

Windows下QT Creator安装MinGW 32bit编译器

前言 注&#xff1a;本作者是基于FFmpeg开发需要&#xff0c;故在Windows下QT Creator中安装MinGW 32bit编译器&#xff01;其它型号编译器参照此文章基本可以实现&#xff01; 一、下载需要的编译器 1、下载链接 链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/…

C++ - 模版进阶 - array

简介 之前对模版的进行了初步了解和使用&#xff0c;可查看博客&#xff1a;C 初始模板_c模板初始化_chihiro1122的博客-CSDN博客 其实模版除了是一类算法&#xff0c;或者自定义类型的 套用&#xff0c;还有其他功能&#xff0c;和其他的更高阶的使用方法。 之前在实现 各种 …

集成学习算法是什么?如何理解集成学习?

什么是集成学习&#xff1f; 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型&#xff0c;各自独立地学习和作出预测。这些预测最后结合成组合预测&#xff0c;因此优于任何一个单分类的做出预测。 机器学习的两个核心任务 任务一&#xff1…

嵌入式:C高级 Day3

一、整理思维导图 二、判断家目录下&#xff0c;普通文件的个数和目录文件的个数 三、输入一个文件名&#xff0c;判断是否为shell脚本文件&#xff0c;如果是脚本文件&#xff0c;判断是否有可执行权限&#xff0c;如果有可执行权限&#xff0c;运行文件&#xff0c;如果没有可…

YOLOv8 如何进行目标追踪

检测模型 YOLOv8n 追踪效果 YOLOv8 检测-追踪 分割模型 YOLOv8n-seg 追踪效果 YOLOv8 分割-追踪 关键点模型 YOLOv8n-pose 追踪效果 YOLOv8 检测-追踪 原理解析 目标检测是指在图像或视频中定位并识别出一个或多个目标物体的位置和类别。 目标检测算法通常会输出目标的边界框…

ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC

文章目录 ARM64 DC 与 IC 指令 上篇文章&#xff1a;ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 ARM64 DC 与 IC 指令 AArch64指令集中有两条关于缓存维护&#xff08;cache maintenance&#xff09;的指令&#xff0c;分别是IC和DC。 IC 是用于指令缓存操作&…