Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths
fastplanner2
- 摘要
- 相关工作
- 基于梯度的路径优化
- 拓扑路径规划
- 路径制导轨迹优化
- A. 优化失效分析
- B. 问题公式化
- 拓扑路径搜索
- A. 拓扑等价关系
- B. 拓扑路径图
- C. 路径缩短和修剪
- 实时拓扑路径规划
这篇论文是港科大开源的无人机运动规划fast planner的第二版,这里写下我对这篇工作的理解。
摘要
基于梯度的方法(GTO)容易陷入局部最优,本文就是提出一个新的基于GTO的方法来解决这个问题。
相关工作
基于梯度的路径优化
GTO是一种主要的路径生成算法,把路径生成看作一个最小化目标函数的非线性优化问题。
拓扑路径规划
用拓扑路径来进行规划
路径制导轨迹优化
A. 优化失效分析
GTO规划的失败和不好的初始路径有关。如下图所示,在欧式符号距离场(ESDF)中,梯度会拉动路径让它离开障碍物,但是如果路径穿越“山脊”或者“山谷”,梯度会是两个完全相反的方向,让路径规划出现问题。
对于这种情况,仅仅靠ESDF的梯度并不够,需要额外的信息。
B. 问题公式化
文中提出的PGO方法是对上面GTO的改进,它把路径用B样条来表示。对于PGO方法,分为两步,第一个阶段产生一个过渡的预热轨迹(warmup trajectory),然后对这个warmup trajectory的平滑度和净空度再进行优化。两个阶段如下图:
a图的绿色是初始B样条轨迹,橙色的是几何引导路径,几何引导路径把初始轨迹拉到没有碰撞的地方形成warmup 路径(蓝色),然后b图中,对warmup路径再进一步进行平滑度和净空度的优化,得到红色最终轨迹。这个几何引导路径通过A或者RRT等传统方法就可以得到,本文用的是采样的方法得到这条引导路径。
第一阶段的目标函数是:
这里 f s f_s fs是平滑度的约束,具体在第一版的fast planner里有描述:
f g f_g fg是引导路径和B样条路径之间的距离的惩罚函数:
这里的 Q i Q_i Qi是B样条的控制点, G i G_i Gi是几何引导路径(就是上面图蓝色线)上对应的点,通过均匀采样得到。这个时候的路径周围的梯度变化都比较平滑,就可以用标准的GTO算法来优化轨迹了。
第二阶段是用B样条曲线对warmup的路径进一步优化,来得到一个安全、平滑、动态可行的路径,这个阶段的目标函数是:
f c f_c fc是碰撞约束,和障碍物近的时候就变得很大。 f a f_a fa和 f v f_v fv分别是对加速度和速度的惩罚,细节都在第一版fast planner的paper里。
拓扑路径搜索
上面讲了用一个几何引导路径得到了一条相对最优的路径,但是这条路径可能并不是最好的。本文提出了一个采样的方法来寻找几条不同的路径来引导上面PGO。
A. 拓扑等价关系
这部分主要是关于路径的等效性,以前的VD算法计算复杂度太大,文章提出了一个均一可视变形方法(UVD)来有效地捕获大量有用的路径,对于路径等效性的检查非常高效。UVD算法流程:
这里路径等效性的定义就是:对于两条路径,如果起点和终点相同,而且两条路径上对应的采样点,譬如采样点对 Q i Q_i Qi和 G i G_i Gi,每个采样点对之间的连线都没有碰撞,那么这两条路径就等价。譬如下图:
B. 拓扑路径图
这节是引入两种点来构造一个UVD地图,分别叫做guard和connector,guard用来探索新的区域。开始的时候,在起点 s s s和终点 g g g分别构建两个guard点。connector点用来连接两个guard点形成一条路径,或者取代原来的connector点来形成一条更短的路径。整个算法被限制在 t m a x t_{max} tmax的执行时间内和 N m a x N_{max} Nmax采样次数内。在生成UVD地图后,采用深度优先算法来寻找 s s s和 g g g之间的路径。具体如下图所示:
任何两个guard节点之间是看不到的,也就是它们的连线是碰撞的。每次在地图上采样一个点,如果这个点另外的任何一个guard都看不到,那么这个点就记作一个新的guard点。然后继续采样,如果一个采样点刚好可以被两个guard点看到,那么就把这个点记作connector,然后把这个connector和这两个guard点连起来。连接好以后做两个事:如果这是一条全新的拓扑路径,那么就保留,否则判断两条拓扑路径的长度,把长的那条去掉。
C. 路径缩短和修剪
像下面这个图所示:
通过算法1找到的部分路径很曲折,譬如橙色的那条路径,这节的内容就是让路径更平滑,也就是为上面Alg.1算法找到的所有拓扑路径 P r P_r Pr找到一条拓扑相等的捷径 P s P_s Ps来替代。具体如下图:
整个流程是:先把Alg.1找到的路径 P r P_r Pr拆分成几个离散的的点 P d P_d Pd,每次循环中,如果 P d P_d Pd里的点 p d p_d pd和 P s P_s Ps里的最后一个点之间看不到,然后就找到那个阻挡视线的占据体素,把它往外推,然后加到 P s P_s Ps点集合里去。这个循环一直进行直到最后一个点。这个算法具体如下所示:
实时拓扑路径规划
第4节中的算法输出了一组有效的路径,可以指导轨迹优化。我们将它们与PGO进行适当的集成,以便实时重新规划。如果检查到碰撞就调用一次拓扑路径地图重建的算法,之后就是缩短路径和剪枝,再之后每条拓扑路径调用PGO算法优化一遍。
值得注意的是,UVD类路径的等效路径会随着障碍物的增加呈指数增长。所以我们每次只选几条路径,譬如 K m a x K_{max} Kmax条,然后对于长度大于最短路径 r m a x r_{max} rmax倍的路径我们也会丢弃掉。
Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths相关推荐
- 【论文阅读】RAPTOR: Robust and Perception-Aware Trajectory Replanning for Quadrotor Fast Flight
[论文阅读]<RAPTOR: Robust and Perception-Aware Trajectory Replanning for Quadrotor Fast Flight> 发表 ...
- An overview of gradient descent optimization algorithms
转载自:http://sebastianruder.com/optimizing-gradient-descent/ 梯度下降优化及其各种变体.1.随机梯度下降(SGD) 2.小批量梯度下降(mini ...
- 点云配准论文复现:Robust generalized point cloud registration with orientational data based on expectation ma
参考论文 Min Z, Wang J, Meng M Q H. Robust generalized point cloud registration with orientational data ...
- Gradient Based Bilinear Demosaic
1. 简介 微软在2004年发表的这篇High-Quality Linear Interpolation for Demosaicing of Bayer-Patterned Color Images ...
- Differentially Private Deep Learning with Iterative Gradient Descent Optimization
motivation:梯度下降中不均衡的敏感度:不够紧的隐私界限. methods:新的扰动梯度下降优化算法PIGDO,并证明该算法满足差分隐私:提出一种改进的MMA方法来进行隐私分析,与原始mome ...
- Gradient Transfer Optimization Model:基于梯度转移优化模型的红外与可见光图像融合
目录
- 【深度学习系列】(二)--An overview of gradient descent optimization algorithms
- 入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient
入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient 入门神经网络优化算法(二):Adaptive Optimiz ...
- 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架(这也符合我理想中的无人机,而且他们这说明这种室内避障无人机是可以做得很小的。)
这也符合我理想中的无人机,而且他们这说明这种室内避障无人机是可以做得很小的. 摘自:https://mp.weixin.qq.com/s/xzY3GOLzd4fgy7Ff-cSigg 在小树林飞也能又 ...
最新文章
- python3.6.2安装教程-CentOS 6.5中安装Python 3.6.2的方法步骤
- css知识点笔记-常用属性
- FileZilla的下载与安装以及简单使用(Ubuntu和Windows之间互传文件需要下载——客户端)
- SpringBoot @Async加在实现接口类的非接口方法上获取Bean异常
- Coriant助力Aureon部署100Gbps光纤网络
- 在FAANG面试中破解堆算法
- bettertouchtool闪退_BetterTouchTool for Mac 3.238 无闪退 触控板增强工具
- 协同过滤算法_推荐系统(5):协同过滤算法的基本思想
- DotDensityRenderer
- Eclipse编译时函数报错:Undefined reference to 'pthread_create'
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(二)
- java 汉字 正则_java正则表达式验证汉字
- snmp - 简单网络管理协议
- FlashFXP 破解版下载地址
- 学到了林海峰,武沛齐讲的Day14完
- python调用sin_Python sin() 函数 - Python 教程 - 自强学堂
- 0.91英寸和0.96英寸OLED驱动区别
- OpenFaaS实战之八:自制模板(maven+jdk8),美团java面试算法题
- MyBaitsPlus快速入门,java进阶书籍推荐
- L3-011 直捣黄龙
热门文章
- 我待JAVA如初恋,JAVA虐我千百遍,如何彻底卸载JAVA
- 2020年关于Linux的知识技术合集(基础入门到高级进阶)
- 超酷的计步器APP(一)——炫酷功能实现,自定义水波纹特效、自定义炫酷开始按钮、属性动画的综合体验
- 如何使用计算机闹铃,电脑闹钟小工具、电脑闹钟小工具怎么用
- 水平和因素是什么_血脂是什么?高血脂对身体有何危害?一篇长文为你详解
- 数值计算复习笔记之(一)误差定义
- 【web3py】{AttributeError}‘AttributeDict‘ object has no attribute ‘baseFeePerGas‘
- 解决The code generator has deoptimised the styling of xxxx.js as it exceeds the max of 500kb
- STM32——I2C通信
- 微软NT验证登录(类似sharepoint 登录方式)