混合A*算法详解(一)路径搜索

描述
为了学习一下混合A*算法,我前面介绍了车辆运动学及非完整约束、差速轮及阿克曼运动学模型、Dubins曲线和RS曲线,现在终于可以看一下混合A*算法的相关内容了。

原文名称:Practical Search Techniques in Path Planning for Autonomous Driving

关于非完整性约束:https://blog.csdn.net/qq_42568675/article/details/116116994

我之前也写了几篇文章,链接如下:
机器人运动学中的非完整约束与运动模型推导
机器人常见的差速轮模型与阿克曼模型运动学方程解析
车辆路径规划之Dubins曲线与RS曲线简述

简介
这篇文章描述了一种实用的路径规划算法,适用于在未知环境(在线检测到障碍物)中运行的自动驾驶汽车。这种算法分两个主要步骤:第一步是使用一种应用于车辆3D运动状态空间的变体A*搜索算法,但通过修改状态更新规则,将车辆的连续状态捕获到A*的离散节点中,从而保证运动学上可行的路径;第二步是通过数值非线性优化来提高解决方案的质量,从而得到局部(并经常是全局)最优解。这种路径规划算法在DARPA城市挑战赛中得到了验证,其中自动驾驶汽车需要自由地在停车场中导航,并在遇到障碍物时进行在线重新规划。该算法在执行U型转弯等复杂的通用路径规划任务时表现出了无懈可击的性能,具有典型的全周期重新规划时间在50-300ms之间。此外,该算法还具有很好的扩展性,可以轻松地与其他高级算法集成,如用于局部路径规划的RRT*算法和用于全局路径规划的分层图搜索算法等。这种算法在实时性和鲁棒性方面表现出色,可以应用于各种自动驾驶汽车和其他移动机器人平台。

介绍和相关工作
解决问题被明确为:在未知环境中运行的自主车辆的路径规划问题。进行了如下的假设:假设机器人具有足够的感知和定位能力,并必须在在线时重新规划,同时逐步构建障碍图。这种场景在一定程度上受到了DARPA城市挑战赛的启发,其中车辆需要在停车场等环境中自由导航。文本中提到的路径规划算法是由斯坦福赛车队的机器人Junior在Urban Challenge中使用的算法。Junior在完成复杂的通用路径规划任务中表现出色,包括在停车场导航、执行U型转弯、处理堵塞的道路和交叉口等任务,以及在PC上执行的全周期重新规划时间为50-300ms。

需要车本身拥有定位能力(知道车辆实时位姿),并且能够实时感知障碍物信息(位置及类别)
Junior的图如下:

对于自由导航区的实际路径规划器开发,主要挑战之一在于机器人的控制空间和轨迹空间是连续的,从而导致连续变量优化的问题变得复杂。文章列举了一些同行的研究成果,这里略过。

混合A*算法建立在上述现有工作的基础上,由两个主要阶段组成。第一步是使用连续坐标中的启发式搜索,保证计算轨迹的运动可行性。虽然没有理论最优性保证,但实际上,第一步通常会生成位于全局最优解邻域内的轨迹。第二步使用共轭梯度(CG)下降来局部改善解决方案的质量,生成至少局部最优的路径,但通常也会达到全局最优解。

另一个实际挑战是设计一个路径上的成本函数,以产生所需的驾驶行为。困难在于我们希望获得的路径在长度上接近最优,但同时又平滑且与障碍物保持舒适的距离。惩罚接近障碍物的一种常见方法是使用潜在场(Andrews和Hogan 1983;Khatib 1986;Pavlov和Voronin 1984;Miyazaki和Arimoto 1985)。潜在场的一个缺点是它们会在狭窄通道中创建高潜力区域,从而使这些通道变得实际上无法通行。为了解决这个问题,我们引入了一个潜力场,它基于工作空间的几何形状重新调整场,从而允许在狭窄通道中进行精确导航,同时也可以有效地将机器人推离在开阔区域的障碍物。

潜力场的方法避免规划进入看似走向终点的死胡同,并且尽可能远离障碍物

混合A搜索
方法的第一阶段使用了一种变体的的A* 算法,该算法应用于车辆的3D运动状态空间,但是具有修改后的状态更新规则,可以在离散搜索节点中捕获连续状态数据。与传统的A* 一样,搜索空间(x,y,θ)被离散化,但与传统的A*只允许访问单元格的中心不同,我们的混合状态A*将每个网格单元格与车辆的连续3D状态相关联,如图2所示。

图2解释一下。左图是A* 算法,它的状态量就是网格中心,这样就只有(x,y)。中间是 Field D(Ferguson和Stentz 2005)和Theta(Nash等人2007)提出的方法,允许连接到每个格子的角点,同时每个格子之间可以用任意路径的线连接。混合A* 算法用连续状态来连接格子(仔细看会发现连接线可以是曲线了),格子的分数是它关联的连续状态的损失。

如上图所述,由于其合并了在离散空间中占据相同单元的连续坐标状态(由于坐标连续,实际上一个格子内有无数个坐标点,但我们现在只能通过某一点来代表车辆到达了某个格子),因此我们的混合状态A*算法不能保证找到最小代价解决方案。但是,由此产生的路径是可驾驶的(而不是像标准A*那样分段线性的)。此外,在实践中,混合状态A*的解决方案通常位于全局最优解的邻域内,使我们能够通过我们算法的第二阶段(使用梯度下降来局部改进路径,如下所述)渐进地达到全局最优解。

点击混合A*算法详解(一)路径搜索 - 古月居可查看全文

 

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

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

相关文章

Mac解决command not found:mvn 保姆级

1.背景 mac电脑已经安装了jdk1.8。如果不清楚自己jdk安装位置的可以到idea查看。但是命令行执行 mvn 会报 command not found 2.解决方案 默认安装的 jdk 是没有配置环境变量,因此需要手动配置 通常如果是默认安装则路径都会一样直接复制即可,只需更…

图论第5天

127.单词接龙 需要cout看一下过程。 #include <iostream> #include <queue> #include <stack> #include <unordered_map> #include <unordered_set> #include <vector> using namespace ::std;class Solution { public:int ladderLength(…

Vue Router 4.x 如何隐式给路由传参params

Vue Router 官方说明文档的路由传参&#xff1a;https://router.vuejs.org/zh/guide/essentials/navigation.html 1、params 方式传参 此方式在4.0版本后就不能隐式的传参了&#xff0c;比如想在路由里加入username参数&#xff0c;则必须先在路由配置里&#xff0c;给你当前…

驱动开发之设备树语法

0.设备树由来 通过前面platform实验&#xff0c;使用platform总线&#xff0c;device与driver需要匹配才可以&#xff0c;device主要是存储一些硬件信息的&#xff0c;传递给driver使用。这样就会导致大量的硬件信息在linux内核源码里面&#xff0c;arch/arm/mach-xxx 和 arch…

undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv

这里写自定义目录标题 ImportError: //python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN3c104impl8GPUTrace13gpuTraceStateEERROR conda.cli.main_run:execute(49): 这样的问题往往都是版本不匹配导致的 pytorch的版本&#xff0c;m…

【C++】类和对象1.0

本鼠浅浅介绍一些C类和对象的知识&#xff0c;希望能得到读者老爷们的垂阅&#xff01; 目录 1.面向过程和面向对象 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1.类的访问限定符 4.2.封装 5.C中struct和class的区别 6.类域 7.类的实例化 8.类对象模型 8.1.类…

线性代数|机器学习-P5特征值和特征向量

文章目录 1. 特征值和特征向量1.1 特征向量1.2 向量分解 2. 矩阵相似2.1 特征值求解法-相似2.2 特殊特征值2.3 反对称矩阵 3.对称矩阵 1. 特征值和特征向量 1.1 特征向量 假设有一个n行n列的方阵A&#xff0c;有 n 个不相同的特征值为 λ \lambda λ,特征向量为 x 1 , x 2 , …

(2022,扩散模型,评分函数,数据流形的内在维度,SVD)使用扩散模型估计数据流形的维度

Your diffusion model secretly knows the dimension of the data manifold 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 引言 2. 相关工作 3. 背景&#xff1a;基于评…

MySQL JDBC连接串中sslMode含义、与useSSL、requireSSL的关系

目录 引言版本SSL参数含义与默认值对应关系梳理详细含义-中英文对比sslModeuseSSLrequireSSLverifyServerCertificatetrustCertificateKeyStoreTypetrustCertificateKeyStoreUrltrustCertificateKeyStorePasswordfallbackToSystemKeyStoreclientCertificateKeyStoreTypeclientC…

【YOLOv5/v7改进系列】引入Slimneck-GSConv

一、导言 GSConv旨在平衡模型的准确度与速度&#xff0c;针对自动驾驶车辆中目标检测任务设计。从类脑研究中得到的直观理解是&#xff0c;具有更多神经元的模型能够获得更强的非线性表达能力。但是&#xff0c;不容忽视的是生物大脑处理信息的强大能力和低能耗远远超过计算机…

C#知识|封装典型的SQLServer数据库查询方法。

哈喽,你好啊,我是雷工! 前边学习封装了增删改的方法封装: 《C#知识|通用数据访问类SQLHelper的编写》; 本节继续学习将两种典型的查询方法封装成类。 下边为学习笔记。 01 封装单一返回结果的封装 在查看封装后的代码之前,可以先看下封装前代码的写法: 《C#知识|通过A…

C++ 20新特性之结构化绑定

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 什么是结构化绑定 在C 20出现之前&#xff0c;当我们需要访问一个结构体或类的多个成员时&#xff0c;通常使用.或->操作符。对于复杂的数据…

二、Nginx目录结构与基本运行原理

目录 一、目录结构 二、运行原理 一、目录结构 我们使用tree 命令查看nginx的目录。如果tree 命令失效&#xff0c;需要安装tree工具 [rootlocalhost local]# yum install -y tree[rootlocalhost /]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # PO…

C语言 | Leetcode C语言题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; int sumNumbers(struct TreeNode* root) {if (root NULL) {return 0;}int sum 0;struct TreeNode* nodeQueue[2000];int numQueue[2000];int leftQueue 0, rightQueue 0;nodeQueue[rightQueue] root;numQueue[rightQueue] root->v…

Vue——初识组件

文章目录 前言页面的构成何为组件编写组件组件嵌套注册 效果展示 前言 在官方文档中&#xff0c;对组件的知识点做了一个很全面的说明。本篇博客主要写一个自己的案例讲解。 vue 官方文档 组件基础 页面的构成 说到组件之前&#xff0c;先大致说明下vue中页面的构成要素。 在…

手写数据集minist基于pytorch分类学习

1.Mnist数据集介绍 1.1 基本介绍 Mnist数据集可以算是学习深度学习最常用到的了。这个数据集包含70000张手写数字图片&#xff0c;分别是60000张训练图片和10000张测试图片&#xff0c;训练集由来自250个不同人手写的数字构成&#xff0c;一般来自高中生&#xff0c;一半来自工…

MTU相关随笔

一、MTU的概念 MTU&#xff08;最大传输单元&#xff09;&#xff1a;用来通知对方所能接受数据服务单元的最大尺寸&#xff0c;说明发送方能够接受的有效载荷大小。MTU是包或帧的最大长度&#xff0c;一般以字节记&#xff0c;如果过大在碰到路由器时会被拒绝转发&#xff0c…

SpringBoot项目本地运行正常,jar包运行时前端报错403:No mapping for......

SpringBoot项目本地运行正常&#xff0c;jar包运行时前端报错403&#xff1a;No mapping for… 提示&#xff1a;在部署jar包到云服务器上之前&#xff0c;一定要在本地运行jar包&#xff0c;查看前端代码是否运行正常&#xff0c;若报错的话可以节省很多时间 方式&#xff1a;…

SQL 如何获取A列相同但是B列不同的数据项

用户表里有两个字段&#xff1a;部门和职位。一个部门可能对应多个职位&#xff0c;多个部门也可能都有同一职位。比如&#xff1a; 部门 职位 财务 部长 财务 副部长 财务 会计 财务 职员 编辑 部长 编辑 副部长 编辑 主编 编辑 副主编 现在想通过筛选&#xff0c;获取职位名称…

友顺科技(UTC)分立器件与集成IC产品选型和应用

友顺科技股份有限公司成立于1990年&#xff0c;是全球领先的集成电路与功率半导体厂商 ,集团总部位于台北&#xff0c;生产基地位于福州、厦门。 友顺科技具有完整模拟组件产品线&#xff0c;其中类比IC涵盖各种稳压器、PWM控制IC, 放大器、比较器、逻辑IC、Voltage Translato…