免费网络电话软件/河南网站seo靠谱
本文将讲解PRM,RRT,RRT*自动驾驶规划算法原理,不正之处望读者指正
0 前言
机器人运动规划的基本任务:从开始位置到目标位置的运动
(1)如何躲避构型空间出现的障碍物
(2)如何满足机器人本身在机械、传感方面的速度、加速度等限制
基于采样的运动规划算法就是解决如何躲避构型空间出现的障碍物。
配置空间
机器人规划的配置空间概念:一个空间包含所有机器人自由度的机器人配置,描述为 C − s p a c e C-space C−space
机器人配置:表示对机器人上点的位置的描述
机器人自由度:规划的时候用最少的坐标数量去表示机器人配置
机器人配置空间:一个空间包含所有机器人自由度的机器人配置,描述为C-space
机器人的位姿在C-space中描述为一个点
机器人配置空间的意义:
在工作空间中进行规划,机器人有不同的形状和大小,需要根据不同的形状大小去做碰撞检测,是费时费力的。
在配置空间中做规划
机器人在C-space中表示一个点,障碍物做特殊的处理,把工作空间中的障碍物变成配置空间中的障碍物C-obstacle,这个工作是在运动规划前完成的,一次完成的工作
。
障碍物按照机器人尺寸进行膨胀,上面机器人被设置成了一个点,只要点在障碍物外面,就不会发生碰撞
C-space = C-obstacle + C-free
经过配置空间的处理,路径规划变成了在C-free中找到起点到终点的路径寻找
1 概率路线图(PRM)
1.1 核心思想
(1)学习预处理阶段
- 在配置空间中随机采样足够密集的点
- 如果可以相互到达,连接附近的点
(2)查询搜索阶段
采用图搜索算法对G搜索,如果能找到起始点S到终点G的路线,存在可行路径
1.2 PRM主要步骤
(1)采样足够密集的点学习地图结构
(2)对采样的点碰撞检查,只保留在C-free中的采样点
(3)每个点通过直线连接到最近的邻居
(4)删除碰撞连接
(5)无碰撞连接被保留为边构造图
(6)添加起点s和终点g到Graph中
(7)利用图搜索算法A*/Dijstra在路线图里面搜索出一条最优路径
1.3 算法流程
PRM算法流程
1 learning-phase阶段:
V V V:构建的图的所有顶点的集合
E E E:图中所有边的集合
2 采样点个数为n
3 通过某种采样策略,不同分布得到采样点
4 以采样点为中心, r r r为半径,在这个圆范围内的邻居节点,把它记录到 U U U中
5 把采样点加入到顶点集 V V V中
6 遍历邻居节点集 U U U的每个节点
7-8 定义一些规则滤除一些节点和边
7 采样点 x r a n d x_{rand} xrand和已有的节点处在相同的邻接元素下,跳过
8 碰撞检测,检测 x r a n d x_{rand} xrand和 u u u是不是发生碰撞,如果Free,就把 x r a n d x_{rand} xrand和 u u u连成的边加入到 E E E中
9 重复n次之后,就得到了一个完整的图 G = ( V , E ) G = (V,E) G=(V,E)
最后应用图搜索算法在G上找到一条最优路径
sPRM算法与PRM算法的区别:
只要采样到某个节点,就把以r为半径圆里面所有的节点都进行一个连接,边比PRM多,搜索消耗的资源更大
选择节点之间的连接方式:
(1)k近邻PRM
选择采样点周围最近的k个邻居
U ← k N e a r e s t ( G = ( V , E ) , v , k ) U\gets kNearest(G=(V,E),v,k) U←kNearest(G=(V,E),v,k)
(2)有界维度PRM
就是以常规的PRM算法为基础,如果圆里面采样点过多,就找采样点的k个邻居取交集
U ← N e a r ( G , x r a n d , r ) ∩ k N e a r e s t ( G = ( V , E ) , v , k ) U\gets Near(G,x_{rand},r)\cap kNearest(G=(V,E),v,k) U←Near(G,xrand,r)∩kNearest(G=(V,E),v,k)
(3)可变半径PRM
把r为半径的圆作为采样节点个数n的函数,采样点较少情况下,r可以取大一点,采样点足够多的时候,r取小一点
PRM*算法流程
d d d:维度
n n n:采样节点个数
1.4 PRM算法的优点和缺点
优点:
概率完备性,如果运行时间足够长(或者采集足够多的点),如果有解一定是最优解
缺点:
(1)在整个状态空间上构造图,需要连接特定的开始和目标,可能浪费一些不必要的资源
(2)使用直线连接不符合车辆运动学约束
(3)抽样方法的完备性很弱,即使空间存在合理的路径,由于抽样参数的设置,也可能无法找到路径。因为随机抽样,所以该方法稳定性也不好,对于同样的问题,前后两次解不一样,在严格要求稳定性的场合不适用
采样点的数量和采样点存在通路的最大距离是路径规划成功的关键
2 RRT
2.1 RRT核心思想和特点
RRT是一种通过随机构建空间填充树来有效搜索非凸,高维空间的算法。
核心思想:RRT 算法首先将起点初始化为随机树的根节点,然后在机器人的可达空间中随机生成采样点,从树的根节点逐步向采样点扩展节点,节点和节点之间的连线构成了整个随机树,当某个节点与目标点的距离小于设定的阈值时,即可认为找到可行路径。
RRT的特点就是能够快速有效地搜索高维空间,通过状态空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划
2.2 算法流程
1 将 x i n i t x_{init} xinit加入到顶点集 V V V中
2 采样n次
3 随机采样得到 x r a n d x_{rand} xrand
4 图中距离 x r a n d x_{rand} xrand最近的节点 x n e a r e s t x_{nearest} xnearest
5 连接 x r a n d x_{rand} xrand和 x n e a r e s t x_{nearest} xnearest,之间的节点 x n e w x_{new} xnew
6-7 只有通过碰撞检测,才会把 x n e w x_{new} xnew加入顶点集 V V V,连接 x n e a r e s t x_{nearest} xnearest和 x n e w x_{new} xnew
2.3 RRT优缺点
优点:
(1)简单找到起点到终点的路径,比PRM更高效,该算法通过尽可能少地探索环境,来实现有效的单一路径规划,对未知环境适应能力强
(2)RRT 算法通过随机树向未观察的空间区域生长,并且不会回归到已经探索过的区域,这实现了对空间的快速探索
(3)搜索方法不是维持固定的栅格结构,而是在运行中构建随机树,通过随机树内部的节点的连接找到路径。
缺点:
(1)不满足概率完备性,只能连接最近的节点
(2)需要对输入空间进行离散化,采样次数太少,则生成的路径将表现出较差的性能,采样次数太多则会增加整个规划过程的计算量,降低路径规划的实时性
(3)RRT算法生成的路径存在冗余的节点,增加机器人实际运行中的路程
2.4 RRG
RRT的变体,具有概率完备性
核心思想:
不要只连接 x n e w x_{new} xnew和 x n e a r e s t x_{nearest} xnearest
尝试连接到半径内的所有顶点
最后需要接入图搜索算法寻找一条最优路径,违背了RRT的初衷,没有把构造图和搜索步骤合二为一
2.5 基于运动学的RRT
区别在于5 使用基于运动学的方法来引导两个节点
3 RRT*
3.1 核心思想
(1)相比于RRG算法,维护树结构而不是图,会从图中删除多余的边
(2)相比于RRT算法,添加了“rewire"操作(每次采样到新的节点,会把以他为圆心,半径为r的圆内其他节点作为一个考量,对这些节点做一些修剪的操作)确保通过最小成本路径到达顶点
3.2 RRT*算法流程
前半部分与RRT相同
后半部分
(1)连接以r为半径的圆的所有顶点,在集合中选择cost最小的去连接
(2)得到了 x n e a r x_{near} xnear,依次遍历每一个节点,判断累计成本最小的,将 x n e a r x_{near} xnear标记为 x m i n x_{min} xmin:保证 x n e w x_{new} xnew本身的最优性
(3)对树做修剪:每次采样到 x n e w x_{new} xnew之后,周围其他节点都会做一次检查,判断是否能找到cost最小的路径
4 CL-RRT
核心思想:
(1)相比于对车辆输入进行采样的标准的RRT,CL-RRT对控制器的输入进行采样
(2)通过前向模拟得到动态可行轨迹
(3)对于城市场景,优化算法策略:采样策略、节点选择策略
转向控制器:Pure-Pursuit Controller
速度控制器:PI Controller
采样策略:
n r 、 n θ n_r、n_\theta nr、nθ:具有高斯分布的随机变量
σ r \sigma_r σr:径向标准差
σ θ \sigma_\theta σθ:圆周方向标准差
根据车辆位置和道路规则改变这些参数
Node选择策略:
(1)RRT试图将样本连接到树中最近的节点,当RRT应用于转弯能力有限的车辆时,需要进行拓展
(2)CL-RRT算法使用节点和采样点之间的Dubins路径长度作为距离度量
Reeds-Shepp曲线和Dubins曲线
相关文章:

基于采样的自动驾驶规划算法 - PRM,RRT,RRT*,CL-RRT
本文将讲解PRM,RRT,RRT*自动驾驶规划算法原理,不正之处望读者指正 0 前言 机器人运动规划的基本任务:从开始位置到目标位置的运动 (1)如何躲避构型空间出现的障碍物 (2)如何满足机器…...

CGAL的D维范围树和线段树
范围树和线段树是两种数据结构,用于高效地处理和查询数据。 范围树(Range Tree)是一种二叉树,它通过递归地将每个节点分割成两个子节点来存储一个点集。每个节点表示一个范围,并且存储该范围内所有点的最小和最大值。范…...

005.HCIA 传输层
传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP (Transmission Control Protocol)和用户数据包协议UDP (User Datagram Protocol)。 1、相关概念 a. 传输层的端口 端口范围:0-65535 知名端口:0-1023&…...

LLM之RAG实战(八)| 使用Neo4j和LlamaIndex实现多模态RAG
人工智能和大型语言模型领域正在迅速发展。一年前,没有人使用LLM来提高生产力。时至今日,很难想象我们大多数人或多或少都在使用LLM提供服务,从个人助手到文生图场景。由于大量的研究和兴趣,LLM每天都在变得越来越好、越来越聪明。…...

【SpringCloud笔记】(10)消息总线之Bus
Bus 前言 戳我了解Config 学习Config中我们遇到了一个问题: 当我们修改了GitHub上配置文件内容,微服务需要配置动态刷新并且需要手动向客户端发送post请求刷新微服务之后才能获取到GitHub修改过后的内容 假如有多个微服务客户端3355/3366/3377…等等…...

超酷的爬虫可视化界面
大家好,本文主要介绍使用tkinter获取本地文件夹、设置文本、创建按钮下拉框和对界面进行布局。 1.导入tkinter库 导入tkinter的库,可以使用ttkbootstrap美化生成的界面 ttkbootstrap官网地址:https://ttkbootstrap.readthedocs.io/en/late…...

【kafka消息里会有乱序消费的情况吗?如果有,是怎么解决的?】
文章目录 什么是消息乱序消费了?顺序生产,顺序存储,顺序消费如何解决乱序数据库乐观锁是怎么解决这个乱序问题吗 保证消息顺序消费两种方案固定分区方案乐观锁实现方案 前几天刷着视频看见评论区有大佬问了这个问题:你们的kafka消…...

【PID精讲12】基于MATLAB和Simulink的仿真教程
文章目录 写在前面一、基于Simulink的仿真1. 新建Simulink模型2. 保存Simulink模型3. 建模4. 运行二、基于MATLAB的仿真1. 编码2. 运行3. 调整曲线格式4. 导出图窗写在前面 第11讲介绍的连续系统的数字PID仿真是基于 Matlab的 M 语言实现的,对于初学者或者工程应用人员来说,…...

手机无人直播:解放直播的新方式
现如今,随着科技的迅猛发展,手机已经成为我们生活中不可或缺的一部分。除了通讯、娱乐等功能外,手机还能够通过直播功能将我们的生活实时分享给他人。而针对传统的直播方式,使用手机进行无人直播成为了一种全新的选择。 手机无人…...

ios 之 数据库、地理位置、应用内跳转、推送、制作静态库、CoreData
第一节:数据库 常见的API SQLite提供了一系列的API函数,用于执行各种数据库相关的操作。以下是一些常用的SQLite API函数及其简要说明:1. sqlite3_initialize:- 初始化SQLite库。通常在开始使用SQLite之前调用,但如果没有调用&a…...

Django(三)
1.快速上手 确保app已注册 【settings.py】 编写URL和视图函数对应关系 【urls.py】 编写视图函数 【views.py】 启动django项目 命令行启动python manage.py runserverPycharm启动 1.1 再写一个页面 2. templates模板 2.1 静态文件 2.1.1 static目录 2.1.2 引用静态…...

vscode括号颜色突然变成白色的了,怎么解决
更新版本后发现vscode的各种括号都变成了白色,由于分色括号已经使用习惯,突然变成白色非常不舒服,尝试多次后,为大家提供一下几种解决方式,希望能帮到同样受到此种困惑的你: 第一种: 首先打开…...

测试服务器带宽(ubuntu)
apt install python3 python3-pippip3 install speedtest-clispeestest-cli...

【WPF】使用Behavior以及ValidationRule实现表单校验
文章目录 使用ValidationRule实现检测用户输入EmptyValidationRule 非空校验TextBox设置非空校验TextBox设置非空校验并显示校验提示 结语 使用ValidationRule实现检测用户输入 EmptyValidationRule是TextBox内容是否为空校验,TextBox的Binding属性设置ValidationRu…...

ArcGIS渔网的多种用法
在ArcGIS中有一个渔网工具,顾名思义,可以用来创建包含由矩形像元所组成网络的要素类。不太起眼,但它的用途却有很多,今天跟大家分享一篇关于渔网的多种用途。 1.马赛克地图制作 2.基于网格的设施密度统计制作马赛克地图 准备材…...

C++ 中使用 std::map 的一个示例
std::map 是一个容器,可以用来存储键值对,其中键是唯一的,每个键都映射到一个值 #include <iostream> #include <map>int main() {// 声明了一个 std::map<std::string, int> 类型的变量 myMap,它可以将字符串…...

python虚拟环境及其在项目实践中的应用
文章目录 1.问题的提出1.什么是python虚拟环境2.如何创建2.1第1步-为共享同一虚拟环境的项目创建共同的父目录2.2第2步-在父目录下创建虚拟python环境2.3在父目录下创建各个项目文件夹 1.问题的提出 假设我正在开发若干python项目,这里假定项目名分别为Project1&am…...

普中STM32-PZ6806L开发板(烧录方式)
前言 有两种方式, 串口烧录和STLink方式烧录;串口烧录 步骤 开发板USB转串口CH340驱动板接线到USB连接PC使用自带工具普中自动下载软件.exe烧录程序到开发板 ST Link方式 这种方式需要另外进行供电, 我买的如下,当年用于调试STM8的,也可…...

基于单片机设计的指纹锁(读取、录入、验证指纹)
一、前言 指纹识别技术是一种常见的生物识别技术,利用每个人指纹的唯一性进行身份认证。相比于传统的密码锁或者钥匙锁,指纹锁具有更高的安全性和便利性,以及防止钥匙丢失或密码泄露的优势。 基于单片机设计的指纹锁项目是利用STC89C52作为…...

HarmonyOS - 基础组件绘制
文章目录 所有组件开发 tipsBlankTextImageTextInputButtonLoadingProgress 本文改编自:<HarmonyOS第一课>从简单的页面开始 https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667360160710997 所有组件 在 macOS 上,组…...

AR智慧校园三维主电子沙盘系统研究及应用
一 、概述 易图讯科技(www.3dgis.top)自主研发的智慧校园三维主电子沙盘系统,采用B/S架构模式,采用自主可控高性能WebGIS可视化引擎,支持多用户客户端通过网络请求访问服务器地图和专题数据,提供地理信息数据、专题数据的并发访问…...

web前端项目-七彩夜空烟花【附源码】
web前端项目-七彩动态夜空烟花【附源码】 本项目仅使用了HTML,代码简单,实现效果绚丽,且本项目代码直接运行即可实现,无需图片素材,接下来让我们一起实现一场美丽的烟花秀叭 运行效果:鼠标点击和移动可控制…...

在k8s中将gitlab-runner的运行pod调度到指定节点
本篇和前面的 基于helm的方式在k8s集群中部署gitlab 具有很强的关联性,因此如果有不明白的地方可以查看往期分享: 基于helm的方式在k8s集群中部署gitlab - 部署基于helm的方式在k8s集群中部署gitlab - 备份恢复基于helm的方式在k8s集群中部署gitlab - 升…...

1.解决父组件传数据给子组件太慢,导致子组件获取不到合适数据渲染出错问题2.vue中props传递异步数据,子组件用watch监听
vue中props传递异步数据,子组件用watch监听...

SpringMVC之获取请求参数和域对象共享数据
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...

IntelliJ IDEA Community(社区版)下载及安装自用版
IntelliJ IDEA Community(社区版)下载及安装自用版 估计是个开发都逃脱不了用IDEA的命运吧,这么好的软件,白嫖了好多年。感恩。 现在很多公司已经不让用商业版的破解版了,所以这里讲的是社区版。 区别: 商…...

【C语言:编译、预处理详解】
文章目录 1.编译2.预处理2.1宏定义2.1.1预定义符号2.1.2#define定义常量2.1.3#define定义宏2.1.4do-while-zero2.1.5宏的注意事项2.1.6宏与函数的对比 2.2条件编译2.3文件包含 3.offsetoff4.#与##4.1. #号4.2 ##号 1.编译 我们都知道,一个程序如果想运行起来要经过…...

【宇宙猜想】AR文创入驻今日美术馆、北京天文馆等众多展馆,在AR互动中感受科技魅力!
近日,由「宇宙猜想」推出的AR系列文创产品先后入驻今日美术馆、北京天文馆、国家自然博物馆、上海天文馆、国家海洋馆、中华手工展馆等各大馆场并与其展开相关合作。 「宇宙猜想」致力于创造虚拟空间价值,用AR技术与文创产品碰撞出新的火花,为…...

前端面试题html
HTML DOCTYPE有什么作用? DOCTYPE是一种指示浏览器以何种HTML或XHTML规范来解析文档的声明。它能够告知浏览器网页文档使用的标记语言的类型以及版本,从而确保浏览器能够正确地展示网页内容。DOCTYPE声明通常位于HTML文档的开头,是HTML文档…...

AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
篇头 最近写文章,反复多次折腾AOSP代码,因通过网络repo sync aosp代码,能一次顺利下载的概率很低,以前就经常遇到,但从未总结,导致自己也要回头检索方法,所以觉得可以总结一下,涉及…...