经典文献阅读之--EGO-Planner(无ESDF的四旋翼局部规划器)

0. 简介

作为局部规划器而言,当机器人或无人机想要避开动态障碍物时。局部规划器就显得尤为重要了。其中基于梯度的规划器被广泛用于四旋翼无人机的局部规划,其中欧几里得符号距离场(ESDF)对于评估梯度幅度和方向至关重要。然而,由于轨迹优化过程仅覆盖了ESDF更新范围的一个非常有限的子空间,因此计算这样一个场具有很大的冗余性。《EGO-Planner: An ESDF-free Gradient-based Local Planner for Quadrotors》一文提出了一种无ESDF的基于梯度的规划框架,它显著地减少了计算时间。其中主要改进是,惩罚函数中的碰撞项是通过比较碰撞轨迹和无碰撞引导路径来制定的。所得的障碍物信息只有在轨迹遇到新的障碍物时才会被存储,使规划器只提取必要的障碍物信息。然后,如果轨迹违反了动态可行性,我们将延长时间分配。引入了一个各向异性曲线拟合算法来调整轨迹的高阶导数,同时保持原始形状。基准比较和现实世界的实验验证了其稳健性和高性能。源码我们可以在Github上找到。

1. 主要贡献

这种方法是第一个实现基于梯度的本地规划而不需要ESDF的。与现有的最先进算法相比,所提出的方法通过省略ESDF维护,生成具有可比较平滑性和侵略性的安全轨迹,但计算时间比现有的方法要低一个数量级以上。我们在仿真和实际环境中进行了全面测试,以验证我们的方法。这篇文章的主要贡献包括:
1)我们提出了一种新颖且强大的基于梯度的四旋翼本地规划方法,它直接从障碍物中评估和投影梯度信息,而不是使用预先构建的ESDF。
2)我们提出了一种轻量级但有效的轨迹细化算法,通过使用各向异性误差惩罚来制定轨迹拟合问题,生成更平滑的轨迹。
3)我们将所提出的方法集成到一个完全自主的四旋翼系统中,并发布我们的软件供社区参考。
在这里插入图片描述

图1:仅在很小的ESDF更新范围内进行优化的轨迹

2. 避障力估计(衡量指标,主要的贡献点)

本文中,决策变量是B样条曲线的控制点 Q Q Q,每个 Q Q Q都独立地具有其自身的环境信息。最初,给出一个满足终端约束的朴素B样条曲线 Φ Φ Φ,而不考虑碰撞。然后,优化过程开始。在每次迭代中检测到碰撞段后,将生成一条无碰撞路径 Γ Γ Γ。然后,对于每个碰撞段的控制点 Q i Q_i Qi,将分配一个锚点 p i j p_{ij} pij在障碍物表面上,带有相应的斥力方向向量 v i j v_{ij} vij,如图3a所示。记 i ∈ N + i∈\mathbb{N}_+ iN+为控制点的索引, j ∈ N j∈\mathbb{N} jN { p , v } \{p,v\} {pv}对的索引。注意,每个 { p , v } \{p,v\} {pv}对仅属于一个特定的控制点。为简洁起见,我们省略了 i j ij ij的下标,而不会引起歧义。本文中详细的 { p , v } \{p,v\} {pv}对生成过程总结在算法1中,并在图3b中说明。然后,将 Q i Q_i Qi到第 j j j个障碍物的距离定义为:
在这里插入图片描述
为了避免在前几次迭代中轨迹逃离当前障碍物之前重复生成 { p , v } \{p,v\} {pv}对,我们采用一个标准,只有当当前 Q i Q_i Qi满足所有有效 j j j d i j > 0 d_{ij} > 0 dij>0时,才将其所在的障碍物视为新发现的。此外,该标准只允许将对最终轨迹有贡献的必要障碍物纳入优化中。因此,操作时间显著减少。 为了将必要的环境意识融入本地规划器中,我们需要明确构建一个目标函数,使轨迹远离障碍物。ESDF提供了这个重要的碰撞信息,但代价是沉重的计算负担。

此外,如图2所示,基于ESDF的规划器很容易陷入局部最小值,并由于ESDF提供的信息不足或错误而无法避开障碍物。为避免这种情况,始终需要另外一个前端提供无碰撞的初始轨迹。上述方法在提供避免碰撞的重要信息方面优于ESDF,因为明确设计的斥力可以在各种任务和环境中相当有效。此外,所提出的方法对无碰撞初始化没有要求。

在这里插入图片描述

在这里插入图片描述

图2:轨迹陷入局部最小值,这是非常常见的情况,因为相机没有看到障碍物的后面。

在这里插入图片描述

3:a)穿过障碍物的轨迹Φ为控制点生成了几个 { p , v } \{p,v\} {pv}对。 p p p是障碍物表面上的点, v v v是从控制点指向 p p p的单位向量。b)与切向量 R i R_i Ri垂直的平面 Ψ Ψ Ψ Γ Γ Γ相交形成一条线 l l l,从中确定 { p , v } \{p,v\} {pv}对。c)距离场定义的切片可视化, d i j = ( Q i − p i j ) ⋅ v i j d_{ij} = (Q_i - p_{ij})·v_{ij} dij=(Qipij)vij。颜色表示距离,箭头是相同的梯度,等于 v v v p p p在零距离平面上。

3. 基于梯度的轨迹优化

3.1 问题形式化

在本文中,轨迹由一个均匀的B样条曲线 Φ Φ Φ参数化,它由其次数 p b p_b pb N c N_c Nc个控制点 { Q 1 , Q 2 , … , Q N c } \{Q_1,Q_2,…,Q_{N_c}\} {Q1Q2QNc}和一个结点向量 { t 1 , t 2 , … , t M } \{t_1,t_2,…,t_M\} {t1t2tM}唯一确定,其中 Q i ∈ R 3 Q_i∈\mathbb{R}^3 QiR3 t m ∈ R t_m∈\mathbb{R} tmR M = N c + p b M = N_c + p_b M=Nc+pb。 为了轨迹评估的简便和高效,我们方法中使用的B样条是均匀的,这意味着每个结点与其前身之间的时间间隔为 Δ t = t m + 1 − t m \Delta t= t_{m+1} - t_m Δt=tm+1tm。本文中的问题形式化基于当前最先进的四旋翼局部规划框架Fast-Planner [14]。

B样条具有凸包性质。该性质表明,B样条曲线的单个跨度仅由 p b + 1 p_b + 1 pb+1个相邻控制点控制,并位于这些点的凸包内。例如,跨度在 ( t i , t i + 1 ) (t_i,t_{i+1}) (titi+1)内的点位于由 { Q i − p b , Q i − p b + 1 , … , Q i } \{Q_{i - p_b},Q_{i - p_{b + 1}},…,Q_i\} {QipbQipb+1Qi}形成的凸包内。 另一个性质是,B样条的第 k k k导数仍然是一个次数为pb-k的B样条。由于 Δ t \Delta t Δt仅与 Φ Φ Φ相关,因此速度 V i V_i Vi,加速度 A i A_i Ai和Jerk J i J_i Ji曲线的控制点由以下公式获得:
在这里插入图片描述
我们遵循文献[15]的工作,计划控制点 Q ∈ R 3 Q∈\mathbb{R}^3 QR3在不同平滑输出的降维空间中。然后,优化问题的表述如下:
在这里插入图片描述
其中 J s J_s Js是平滑度惩罚项, J c J_c Jc是碰撞检测, J d J_d Jd表示可行性。 λ s λ_s λs λ c λ_c λc λ d λ_d λd是每个惩罚项的权重。

3.1.1 平滑性惩罚项

在[2]中,平滑性惩罚项被定义为轨迹的二次导数(加速度、跳跃度等)的平方在时间积分上的结果。在[10]中,只考虑轨迹的几何信息,而不考虑时间分配。在本文中,将这两种方法结合起来,惩罚平方加速度和跳跃度,而不进行时间积分。由于凸包属性的好处,将B样条轨迹的二阶和三阶导数的控制点最小化就足以减少整个曲线上的这些导数。因此,平滑性惩罚函数被定义为最小化高阶导数,使整个轨迹平滑。

3.1.2 碰撞惩罚项

碰撞惩罚项将控制点推离障碍物,采用安全间隔 s f s_f sf,并惩罚 d i j < s f d_{ij} < s_f dij<sf的控制点。为了进一步方便优化,我们构造了一个二次连续可微的惩罚函数jc,并在 d i j d_{ij} dij减小时抑制其斜率,得到分段函数。

j c ( i , j ) j_c(i,j) jc(ij)是由 Q i Q_i Qi上的 { p , v } \{p,v\} {pv}j对产生的成本值。对每个 Q i Q_i Qi的成本进行独立评估,并从所有相应的 { p , v } j \{p,v\}_j {pv}j对中累积。因此,如果发现了更多的障碍物,则控制点获得更高的轨迹变形权重。具体来说,添加到第 i i i个控制点的成本值是 j c ( Q i ) = ∑ j = 1 N p j c ( i , j ) j_c(Q_i)=∑^{N_p}_{j=1}j_c(i,j) jc(Qi)=j=1Npjc(ij),其中 N p N_p Np是属于 Q i Q_i Qi { p , v } j \{p,v\}_j {pv}j对的数量。将所有 Q i Q_i Qi的成本组合起来得到总成本 J c J_c Jc,即公式(6)。
在这里插入图片描述

与传统的基于ESDF的方法[2,10]不同,后者通过对场进行三线性插值来计算梯度,我们通过直接计算 J c J_c Jc相对于 Q i Q_i Qi的导数来获得梯度
在这里插入图片描述

3.1.3 可行性惩罚项

通过限制轨迹在每个维度上的高阶导数,即对所有 t t t应用 ∣ Φ r ( k ) ( t ) ∣ < Φ r , m a x ( k ) |Φ^{(k)}_r(t)| <Φ^{(k)}_{r,max} Φr(k)(t)<Φr,max(k),其中 r ∈ x , y , z r∈{x,y,z} rx,y,z表示每个维度。由于凸包特性,限制控制点的导数就足以限制整个B样条。因此,惩罚函数被制定为公式

…详情请参照古月居

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

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

相关文章

ARINC825规范简介

ARINC825规范简介 机载CAN网络通用标准 ARINC825规范全称为机载CAN网络通用标准&#xff08;The General Standardization of CAN for Airborne Use&#xff09;。顾名思义&#xff0c;ARINC825规范是建立在CAN物理网络基础上的高层规范。CAN网络使用共享的双绞电缆传输数据&…

电压放大器在无损探伤中的应用研究

电压放大器是一种常见的电子设备&#xff0c;其主要作用是将低电平信号转换为高电平信号。在无损探伤中&#xff0c;电压放大器被广泛应用于信号增益和分析&#xff0c;以便更好地检测表面或内部缺陷。下面安泰电子Aigtek将详细介绍电压放大器在无损探伤中的应用研究。 电压放大…

二、vue2脚手架-组件化开发

| vue中的图片打包后会转换为base64格式 组件的使用 1.创建组件&#xff1a;component文件夹中创建HelloWorld.vue文件 2.在app.vue中引入组件 组件间的通信/传值&#xff08;常用&#xff09; 一、prop父传子 1.App.vue中的引入组件中创建需要传递的数据 2.在子组件中接…

车厂造手机旗舰版售价6899,不只是个“车钥匙”

大伙应该发现了这两年的一个奇怪现象&#xff1a;造手机的跑去造车&#xff0c;而车厂又跑来造手机。 这也好解释&#xff0c;毕竟别人碗里的更香、别人老氵…板先挑衅是吧&#xff1f; 昨日&#xff0c;蔚来在其创新科技日活动中正式发布了传闻已久的手机产品 NIO Phone 。 …

掌动智能兼容性测试有哪些优势

兼容性测试为企业带来市场竞争优势&#xff0c;并提高用户满意度。在软件开发过程中&#xff0c;将兼容性测试作为一个重要的环节&#xff0c;将为企业的成功和用户满意度打下坚实的基础。那么&#xff0c;掌动智能兼容性测试的具体优势是什么?下面&#xff0c;就来看看具体介…

mdobus ASCII转CAN OPEN JAE1939协议网关

Modbus RTU协议转换网关是一种常见的设备&#xff0c;用于将Modbus RTU协议转换为其他通信协议。而CANopen是一种基于CAN总线的通信协议&#xff0c;主要用于工业自动化和控制系统中。本文将介绍Modbus RTU协议转换网关如何支持CANopen协议&#xff0c;以及该功能的应用场景和优…

【1】ElementUI 组件实际应用===》按钮的使用

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 &#xff0c;视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘…

【JAVA EE】详解单点登录

作者简介 目录 1.概述 2.实现方案 2.1.分散鉴权 2.2.集中鉴权 1.概述 SSO&#xff0c;即进行一次认证&#xff0c;然后就可以访问所有子系统。很明显SSO只是一种具象化的目标而已&#xff0c;目前业内为了实现单点登录、统一鉴权&#xff0c;提出了一系列的打法。比如直接…

Unity3D C# 反射与特性的配合使用

需求分析 情况&#xff1a; 假如我们是一个动物园的管理员&#xff0c;我们需要统计园内的所有动物和动物的行为。 举例&#xff1a; 现在园区内有猫、狗和鸡。猫对应的行为是喵喵喵和卖萌&#xff0c;狗对应狗吠和干饭&#xff0c;鸡对应篮球和打鸣那么这时候我要统计这些&a…

Lyapunov optimization 李雅普诺夫优化

文章目录 正文引言Lyapunov drift for queueing networks 排队网络的Lyapunov漂移Quadratic Lyapunov functions 二次李雅普诺夫函数Bounding the Lyapunov drift 李亚普诺夫漂移的边界A basic Lyapunov drift theorem 一个基本的李雅普诺夫漂移定理 Lyapunov optimization for…

【C++】手撕string(string的模拟实现)

手撕string目录&#xff1a; 一、 Member functions 1.1 constructor 1.2 Copy constructor&#xff08;代码重构&#xff1a;传统写法和现代写法&#xff09; 1.3 operator&#xff08;代码重构&#xff1a;现代写法超级牛逼&#xff09; 1.4 destructor 二、Other mem…

【算法思想】贪心

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

探索ClickHouse——使用Projection加速查询

在测试Projection之前&#xff0c;我们需要先创建一张表&#xff0c;并导入大量数据。 我们可以直接使用指令&#xff0c;从URL指向的文件中获取内容并导入表。但是担心网络不稳定&#xff0c;我们先将文件下载下来。 下载文件 wget wget http://prod.publicdata.landregistr…

项目开发中使用Date和LocalDateTime处理日期

文章目录 项目开发中使用Date和LocalDateTime处理日期Date类型验证数据库表设计&#xff08;年月日情况&#xff09;实体类说明映射文件xml响应展示情况注意事项 LocalDateTime验证数据库设计实体类日期类型动态SQL日期类型响应展示情况 总结 项目开发中使用Date和LocalDateTim…

Windows10/11显示文件扩展名 修改文件后缀名教程

前言 写这篇文章的原因是由于我分享的教程中的文件、安装包基本都是存在阿里云盘的&#xff0c;下载后需要改后缀名才能使用。 但是好多同学不会改。。 Windows 10 随便打开一个文件夹&#xff0c;在上方工具栏点击 “查看”点击 “查看” 后下方会显示更详细的工具栏然后点…

SPA项目之登录注册--请求问题(POSTGET)以及跨域问题

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.ElementUI是什么 &#x1f4a1;…

ubuntu下用pycharm专业版连接AI服务器及其docker环境

一&#xff1a;用pycharm专业版连接AI服务器 1、首先在自己电脑上新建一个文件夹&#xff0c;后续用于映射服务器上自己所要用的项目文件 2、用pycharm专业版打开该文件夹&#xff0c;作为一个项目打开 3、然后在工具->部署->配置 4、配置中形式如下&#xff1a; 点击左…

Docker 入门 (详细命令讲解)

1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程&#xff0c;从另一个镜像运行&#xff0c;并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项&#xff0c;因而在从开发到测试再到生产的整个过程中&#xff0…

五、点击切换、滚动切换、键盘切换

简介 通过事件改变当前展示的信息组件,交互的事件有点击上下切换、鼠标轮动上下切换、键盘上下键切换。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:App.vue、public 一、鼠标点击上下箭头切换 <template><div class="app-background"…

Nodejs基于Vue.js编程语言在线学习平台的设计与实现5y4p2

本编程语言在线学习平台是为了提高用户查阅信息的效率和管理人员管理信息的工作效率&#xff0c;可以快速存储大量数据&#xff0c;还有信息检索功能&#xff0c;这大大的满足了用户和管理员这二者的需求。操作简单易懂&#xff0c;合理分析各个模块的功能&#xff0c;尽可能优…