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

news2024/9/28 11:16:39

文章目录

  • 前言
    • 相关代码整理:
    • 相关文章:
  • 基本概念
  • 概率路线图(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.coloradmin.cn/o/838026.html

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

相关文章

性能分析记录

4实例压测TPS浮动在200-300 1.TPS浮动200-300,ART浮动的可能性是10-20ms,链路复杂是可接受的,链路简单则需要分析原因。 1)缓存没命中,对某些账号缓存没命中,或缓存失效后导致隔段时间耗时升高。 2&…

机器学习入门之 pandas

pandas 有三种数据结构 一种是 Series 一种是 Dataframe import pandas as pd import numpy as np score np.random.randint(0,100,[10,5])score[0,0] 100Datascore pd.DataFrame(score)subject ["语文","数学","英语","物理&quo…

孙哥撕毁协议侵占“火币”商标,在港吃官司胜算几何?

李林与孙哥的“火币”使用权之争正在进入新的法律阶段:消息人士透露,X-Spot有限公司(实控人李林)起诉火必-Huobi Global Limited(实控人孙宇晨)违反合同约定侵权使用中文‘火币’、‘火幣’商标一案&#x…

【redis】能ping通虚拟机但是端口无法访问

问题 虚拟机上有redis,能ping通虚拟机的ip,但是idea连不上虚拟机里的redis,telnet已启动的redis6379端口失败 基本情况 虚拟机网络模式是NAT模式,linux防火墙firewalld已关闭,没有iptables,主机和虚拟机…

东南亚跨境电商必看,使用代理IP洞察市场先机-IPIDEA全球HTTP

东南亚连续第三年成为全球电子商务增长最快的地区,预计到2025年,东南亚电商的市场规模将会达到2,340亿美元。虽然起步较晚,但随着移动互联网和数字支付的普及,东南亚跨境市场迅速崛起,呈现出蓬勃的发展态势。 人口基数…

Consul屏蔽api

consul 没有设置密码 需要屏蔽api:/v1/internal/ui/nodes?dc&token 防止信息泄露 配置config.json {"http_config": {"block_endpoints": ["/v1/internal/ui/nodes"]} }启动consul时使用该配置: consul agent -de…

模块化原理:source-map

1. webpack打包基本配置 1.安装webpack与webpack-cli npm i webpack webpack-cli 2.配置 "build":"webpack" 3. 新建webpack.config.js const path require(path); module.exports {// mode: "development",// 默认production(什么…

2023年土木、建筑与环境工程国际会议(ICCAEE 2023) | EI Compendex, Scopus双检索

会议简介 Brief Introduction 2023年土木、建筑与环境工程国际会议(ICCAEE 2023) 会议时间:2023年11月17日-19日 召开地点:中国广州 大会官网:ICCAEE 2023-2023 International Conference on Civil, Architectural and Environmental Enginee…

常见的设计模式(超详细)

文章目录 单例模式饿汉式单例模式懒汉式单例模式双重检索单例模式 工厂模式简单工厂模式工厂(方法)模式抽象工厂模式 原型模式代理模式 单例模式 确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。 饿汉式单例模式 饿汉式单…

读书笔记-《ON JAVA 中文版》-摘要21第十九章 类型信息-2]

文章目录 第十九章 类型信息7. 动态代理8. Optional类9. 接口和类型10. 本章小结 第十九章 类型信息 7. 动态代理 代理是基本的设计模式之一。一个对象封装真实对象,代替其提供其他或不同的操作—这些操作通常涉及到与“真实”对象的通信,因此代理通常…

Shell脚本学习-for循环结构4

案例1: 批量创建10个系统账号chang01~chang10,并设置密码(密码不能相同)。(密码随机8位字符) 脚本: #!/bin/bashfor i in seq -w 10 douseradd chang$i &&\echo "root$i" …

网络——初识网络

网络基础 文章目录 网络基础计算机网络产生的背景认识网络协议网络协议初识协议分层OSI七层模型TCP/IP四层模型网络传输基本流程协议报头 认识IP地址认识MAC地址ifconfig查看主机地址ifconfig查看主机地址 计算机网络产生的背景 独立模式:计算机之间相互独立 早期的…

Windows安装JDK和JRE的方法

原文网址:Windows安装JDK和JRE的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Windows安装JDK和JRE(Java8)的方法。 下载 下载入口:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html jdk-8…

docker compose一键部署lnmt环境

创建docker compose 目录 [rootlocalhost ~]# mkdir -p /compose_lnmt 编写nginx的dockerfile文件 创建目录 [rootlocalhost compose_lnmt]# mkdir -p nginx 编写nginx配置文件 [rootlocalhost nginx]# vim nginx.conf user root; #运行身份#nginx自动设置进程…

socket server服务器开发常见的并发模型

两种高效的事件处理模式 服务器程序通常需要处理三类事件:I/O 事件、信号及定时事件。有两种高效的事件处理模式:Reactor和 Proactor,同步 I/O 模型通常用于实现Reactor 模式,异步 I/O 模型通常用于实现 Proactor 模式。 无论是 …

MySQL正则表达式检索数据

目录 一、使用正则表达式进行基本字符匹配 1.使用regexp关键字 2.使用正则表达式 . 二、进行OR匹配 1.为搜索两个串之一,使用 | 2.匹配几个字符之一[] 3.匹配范围 4.匹配特殊字符 过滤数据允许使用匹配、比较、通配符操作来寻找数据,但是随…

Maven依赖爆红的几种解决思路

说明:本文介绍Maven依赖爆红,排查错误的几种思路; 思路一:删除本地仓库.lastupdate文件; 找到本地maven仓库,全局搜索.lastupdate文件,把搜索出来的文件全部删除。.lastupdate后缀名的文件&am…

基础实验篇 | uORB消息读写与自定义实验(二)

导读 uORB是PX4/Pixhawk系统中非常重要且关键的模块之一,是用于无人机模块间通信的协议机制。本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验全流程(二)。 基础实验篇 | uORB消息读写与自定义实验(二) 01 RflySim平台的uORB消息读写…

分析Python招聘数据,可视化展示招聘信息详情

前言 一. 数据来源分析 1. 明确需求 明确采集网站以及数据内容 数据: 职位信息 网址: https://we.51job.com/pc/search?keywordpython&searchType3&sortType0&metro2. 抓包分析 通过开发者工具进行抓包分析 I. 打开开发者工具: F12 / 右键点击检查选择networ…

Windows下JDK安装与环境变量配置

文章目录 每日一句正能量前言安装步骤配置环境变量验证环境变量是否配置成功后记 每日一句正能量 生命,就像一场永无休止的苦役,不要惧怕和拒绝困苦,超越困苦,就是生活的强者。任何经历都是一种累积,累积的越多,人就越成熟;经历的越多,生命就越有厚度。 本来不想写JDK的安装的&…