机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

news2024/11/20 12:38:00

1.How Obstacle Avoidance works

1.1处罚条款

避障是作为整体轨迹优化的一部分来实现的。显然,优化涉及到找到指定成本函数(目标函数)的最小成本解(轨迹)。简单地说:如果一个计划的(未来)姿势违反了与障碍物的期望分离,那么成本函数的成本必须增加。理想情况下,在这些情况下,成本函数值必须是无穷大的,否则优化器可能会更好地完全拒绝这些区域。然而,这将需要优化器处理硬约束(即求解非线性程序)。teb_local_planner放弃了考虑硬约束的能力,以便更好地考虑效率。将硬约束转化为软约束,从而得到具有有限代价的二次罚项。
在这里插入图片描述
上图显示了一个示例处罚条款(针对避障)。到障碍物的允许最小欧几里得距离(参数 m i n o b s t a c l e d i s t min_obstacle_dist minobstacledist)设置为0.2米。因此,0.2米以下的距离会导致非零成本。现在假设优化问题包含更多的成本项。其中一些是相互冲突的,例如时间最优性。因此,优化器可能会考虑到一个小的违规(因此也会考虑到小的惩罚),以最小化整个组合成本函数。这里有两个选项可以调整行为:
1. 调整优化权重(按比例缩放单个成本,此处为参数weight_obstacle)。但是,如果选择过高的值,优化问题就会变得病态,从而导致较差的便利性行为。
2. 通过添加“额外边距”来改变参数。通过在min_obstacle_dist参数中添加一个小的额外裕度,您可以将成本值隐式地增加到0.2m。您可以使用单个参数penalty_ epsilon同时移动所有惩罚项,但要小心,因为这样做会极大地影响优化结果。

1.2 局部最优解

请注意,优化器本身只能找到局部最优的解决方案。想象一下,机器人可能被两个障碍物横向包裹。惩罚项确实是非零的,但优化器会被卡住(达到这个局部最小值),因为将相应的姿势横向移动到其中一个障碍物会进一步增加总成本。您可以使用test_optim_node轻松尝试(请参阅教程设置和测试优化,并关闭同源类规划)。行为应类似于下图中的行为:
在这里插入图片描述
轨迹无法跳过障碍物。即使是姿势本身也被推离障碍物之间的区域(红色箭头)。显然,在实践中应该避免这种情况。因此,同源类规划算法寻求(拓扑)替代解决方案,而可行性检查(见下文)在实际指挥机器人之前拒绝了这样的解决方案。

1.3位势和障碍之间的关联

下图显示了一个常见规划场景的快照:
在这里插入图片描述该场景由一个移动机器人组成,该机器人在前往当前目标时接近多边形障碍物。计划(离散)轨迹由多个机器人姿态组成。规划者的目标是根据所需的时间分辨率(参数dt_ref)来安排每两个连续的姿势。请注意,实际分辨率不是固定/冻结的,因为优化器需要调整转换时间以寻求时间最优性。
对于避障,计划姿势和障碍物之间的距离必须从下方界定。图中的示例轨迹由8个可变姿势组成(起始姿势和目标姿势是固定的)。您可能同意,为了实现无碰撞轨迹,需要进行多次距离计算(优化器多次调用成本函数值的计算)。为了加速优化,实现了专用的关联策略。
对于每个障碍物(点/占用的成本图单元、线、多边形),定位计划轨迹的最接近姿态(见图)。根据参数obstacle_poses_affected的值,还考虑了最近姿态的受影响邻居。在随后的优化步骤中只考虑该选定的姿态子集(这里是3个姿态,因此是3个惩罚项)。分别在no_inner_iterations(参数)之后重复关联过程。在每个外部优化迭代obstacle_poses_affected的值会略微影响障碍物周围轨迹的平滑度。此外,更大的障碍需要更多的连接姿势,以避免不可错过的捷径。您也可以选择一个较高的值(>轨迹长度),以便将所有姿势与每个障碍物连接起来。
注意,机器人足迹模型被考虑用于距离计算,因此对于所需的计算资源至关重要。以下部分对详细信息进行了总结。

2.Robot Footprint Model 机器人足迹模型

出于优化目的,机器人足迹模型近似机器人的2D轮廓。该模型对于距离计算的复杂性以及计算时间至关重要。因此,机器人足迹模型构成了一个专用参数,而不是从通用的costmap_2d参数加载足迹。优化占地面积模型可能与成本图占地面积模型不同(后者用于可行性检查,请参阅下一节)。
封装外形模型是使用参数服务器选择和配置的。您可以将以下参数结构添加到teb_local_planner配置文件中:

TebLocalPlannerROS:
 footprint_model: # types: "point", "circular", "line", "two_circles", "polygon"
   type: "point"
   radius: 0.2 # for type "circular"
   line_start: [-0.3, 0.0] # for type "line"
   line_end: [0.3, 0.0] # for type "line"
   front_offset: 0.2 # for type "two_circles"
   front_radius: 0.2 # for type "two_circles"
   rear_offset: 0.2 # for type "two_circles"
   rear_radius: 0.2 # for type "two_circles"
   vertices: [ [0.25, -0.05], [0.18, -0.05], [0.18, -0.18], [-0.19, -0.18], [-0.25, 0], [-0.19, 0.18], [0.18, 0.18], [0.18, 0.05], [0.25, 0.05] ] # for type "polygon"

默认示意图模型的类型为“点”。注意,封装外形发布到~/teb_markers,并且可以在rviz中可视化(例如用于验证)。
重要提示:对于类似汽车的机器人,姿态[0,0]位于后轴(旋转轴)!
以下段落描述了所有不同的类型:
(1)迹线类型:点
机器人被建模为单个点。对于这种类型,需要最少的计算时间。
(2)迹线类型:圆形
机器人被建模为一个具有给定半径~/footprint_model/radius的简单圆。距离计算类似于点型机器人的计算,但有了例外,机器人的半径被添加到每个函数调用的参数min_obstacle_dist中。你可以通过选择一个点型机器人并事先将半径添加到最小障碍物距离来消除这种额外的添加。

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

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

相关文章

python manage.py makemigrations报错key error

django 运行 python manage.py makemigrations 报错 KeyError 解决:不知道原因, 删除了migration记录就可以了

异或运算.

相同为0,不同为1。 1 ^ 10 0 ^ 00 1 ^ 01 0 ^ 11性质: 0 ^ N N N ^ N 0交换、结合 a ^ b b ^ a; (a ^ b) ^ c a ^ (b ^ c); 因此异或全部的元素的结果就是那个只出现1次的元素。 实现两个值的交换,而不必使…

如何选择优质的静动态住宅代理IP提供商?用前必看

当前,当网络隐私和数据安全备受关注时,住宅代理的使用已成为不可或缺的资源。从网络抓取者和营销人员到安全爱好者和在线安全爱好者,住宅代理在执行任何在线活动时提供基本的匿名性。 然而,并非所有住宅代理提供商都是相同的&…

coreldraw2019安装包下载安装步骤教程

安装之前一定要退出杀毒软件,所有的杀毒软件都要退出。无论360,腾讯管家,或者电脑自带的安全中心,要不然会阻止安装。 第一步:打开安装包 CorelDRAW2019win下载如下:https://wm.makeding.com/iclk/?zoneid55678 Co…

企业著作权数据的价值:探索企业作品著作权API的应用

引言 随着知识经济的崛起,企业的知识产权和著作权保护变得愈发重要。企业拥有大量的著作权作品,包括文档、软件、设计、创意和更多。这些作品代表了企业的创新和核心价值。为了更好地保护和管理这些资产,企业可以探索企业作品著作权API的应用…

《Operating Systems:Three Easy Pieces》 操作系统导论【二】 虚拟化内存

【Operating Systems:Three Easy Pieces 操作系统导论 】 (九) 抽象:地址空间 早期系统 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始),然后有一…

视频下载小助手儿开通了视频号下载功能

不少人对视频号都有视频下载的需要,但由于平台并不提供该功能,我们视频下载小助手儿,就提供了视频号的视频下载功能。 为什么起名叫下载小助手儿呢? 下载小助手儿更直观让用户了解到他可以下载视频号的视频,但不局限与…

Shopee买家通系统怎么用的?

Shopee买家通系统操作简单方便,可直接根据详细操作文档或操作演示视频进行设置操作。 1、自动批量注册买家号 准备好相应的账号资料后按照软件所需格式填写好之后即可运行注册,运行注册时可以自动输入手机号、自动处理遇到的图形验证、自动接收短信、自…

大模型时代如何拥抱原生AI?“云智一体”千帆改变AI格局

前言 前不久相信很多开发者都被一则“生成未来”视频直播刷屏朋友圈,而直播的正是百度的创始人李彦宏。10月17日,百度世界2023在北京首钢园召开,“大模型带来的智能涌现,这是我们开发AI原生应用的基础。”我们即将进入一个AI原生…

调优zuul1.x(基于arthas)

0. 目录 1. 说在前面2. 关键arthas命令3. 弯路3.1 铺天盖地的宣传下,对于zuul1.x性能信心不足。3.2 zuul1.x 避免开启zuul.debug.request配置,尤其是在性能调优时。3.3 redis的读取存在破20ms的情况。 4. 额外收获4.1 在线动态启停ZuulFilter&#xff1a…

前端页面左右布局,点击左div增加动画过渡效果

效果图如下 以下代码基于Vue2 <template><div class"container"><div class"left-section" :style"{ width: widthLeft vw }" click"toggleRightSection"></div><div class"right-section" :s…

阿里5年经验之谈 —— 接口测试用例如何编写?

接口测试用例如何编写&#xff1f;下面简单给大家讲解一下。 接口测试用例是目前软件开发中不可或缺的一个重要部分&#xff0c;因此编写接口测试用例同样重要。 接口测试用例的作用非常明显&#xff0c;它能够帮助我们了解产品正在考验、调整它如何表现在特定情境之下、产品…

工欲善其事,必先利其器,五款实用的办公软件推荐

​ 你电脑中用的最久的软件是哪些&#xff1f;以下是否有你曾经使用过的软件呢&#xff1f;工欲善其事&#xff0c;必先利其器&#xff0c;今天继续分享五款实用的办公软件。 1.屏幕调节——f.lux ​ f.lux是一款可以根据时间和地点自动调节屏幕亮度和色温的软件&#xff0c;…

除静电感测型离子风棒在无尘车间中的应用

除静电感测型离子风棒是一种能够检测静电并及时释放离子的离子风棒&#xff0c;在无尘车间中应用非常广泛。以下是除静电感测型离子风棒在无尘车间中的应用&#xff1a; 防止静电干扰&#xff1a;在无尘车间中&#xff0c;静电干扰会影响电子元器件和仪器设备的正常工作&#x…

Airpods的电池健不健康不直观,但例行检查很重要!如何检查Airpods的电池健康状况

有几种不同的方法可以检查Airpods的电池健康状况。第一种方法是转到iPhone上的“设置”应用程序&#xff0c;然后选择“电池”在这里&#xff0c;你将看到当前通过蓝牙连接到iPhone的所有设备的列表。 如何在Airpods上检查电池健康状况 从这个列表中选择你的Airpods&#xff0…

Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]

Elasticsearch Relevance Engine—为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解] 今天要介绍的 Elasticsearch Relevance Engine™ (ESRE™)&#xff0c;提供了多项用于创建高度相关的 AI 搜索应用程序的新功能。ESRE 站在 Elastic 这个搜索领域的巨人…

【Linux】从零开始学习Linux基本指令(二)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;Linux入门 &#x1f525;该文章主要了解Linux操作系统下的基本指令。 ⚡️上一篇可以看这里 &#x1f449;【Linux】从零开始学习Linux基本指…

GEE:计算和打印GEE程序的执行时间

作者:CSDN @ _养乐多_ 本文记录了计算和打印程序的执行时间的Google Earth Engine (GEE)代码,并举例说明。 大家在执行GEE代码的时候,有时候为了对比两个不同的脚本,不知道代码执行花费了多少时间。本文记录了打印代码执行时间的函数,并举了一个应用案例说明。可以知道…

如何轻松打造数字人克隆系统+直播系统?OEM教你快速部署数字人SaaS系统源码

数字人做为国内目前最热门的人工智能创业赛道&#xff0c;连BAT都在跑步入局&#xff0c;中小企业更是渴望不渴及。但随着我国数字人头部品牌企业温州专帮信息科技有限公司旗下灰豚AI数字人平台的开源。使得中小企业零门槛可以轻松打造灰豚AI数字人一模一样的平台。灰豚数字人A…

CentOS | 添加普通用户并授权sudo

sudo -i adduser peter passwd peter whereis sudoers nano /etc/sudoers添加一行新用户到root组 ## Allow root to run any commands anywhere root ALL(ALL) ALL peter ALL(ALL) ALL https://blog.csdn.net/qq_41980405/article/details/105291959https://b…