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地图,分别叫做guardconnector,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相关推荐

  1. 【论文阅读】RAPTOR: Robust and Perception-Aware Trajectory Replanning for Quadrotor Fast Flight

    [论文阅读]<RAPTOR: Robust and Perception-Aware Trajectory Replanning for Quadrotor Fast Flight> 发表 ...

  2. An overview of gradient descent optimization algorithms

    转载自:http://sebastianruder.com/optimizing-gradient-descent/ 梯度下降优化及其各种变体.1.随机梯度下降(SGD) 2.小批量梯度下降(mini ...

  3. 点云配准论文复现: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 ...

  4. Gradient Based Bilinear Demosaic

    1. 简介 微软在2004年发表的这篇High-Quality Linear Interpolation for Demosaicing of Bayer-Patterned Color Images ...

  5. Differentially Private Deep Learning with Iterative Gradient Descent Optimization

    motivation:梯度下降中不均衡的敏感度:不够紧的隐私界限. methods:新的扰动梯度下降优化算法PIGDO,并证明该算法满足差分隐私:提出一种改进的MMA方法来进行隐私分析,与原始mome ...

  6. Gradient Transfer Optimization Model:基于梯度转移优化模型的红外与可见光图像融合

    目录

  7. 【深度学习系列】(二)--An overview of gradient descent optimization algorithms

  8. 入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient

    入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient 入门神经网络优化算法(二):Adaptive Optimiz ...

  9. 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架(这也符合我理想中的无人机,而且他们这说明这种室内避障无人机是可以做得很小的。)

    这也符合我理想中的无人机,而且他们这说明这种室内避障无人机是可以做得很小的. 摘自:https://mp.weixin.qq.com/s/xzY3GOLzd4fgy7Ff-cSigg 在小树林飞也能又 ...

最新文章

  1. python3.6.2安装教程-CentOS 6.5中安装Python 3.6.2的方法步骤
  2. css知识点笔记-常用属性
  3. FileZilla的下载与安装以及简单使用(Ubuntu和Windows之间互传文件需要下载——客户端)
  4. SpringBoot @Async加在实现接口类的非接口方法上获取Bean异常
  5. Coriant助力Aureon部署100Gbps光纤网络
  6. 在FAANG面试中破解堆算法
  7. bettertouchtool闪退_BetterTouchTool for Mac 3.238 无闪退 触控板增强工具
  8. 协同过滤算法_推荐系统(5):协同过滤算法的基本思想
  9. DotDensityRenderer
  10. Eclipse编译时函数报错:Undefined reference to 'pthread_create'
  11. 【NLP】揭秘马尔可夫模型神秘面纱系列文章(二)
  12. java 汉字 正则_java正则表达式验证汉字
  13. snmp - 简单网络管理协议
  14. FlashFXP 破解版下载地址
  15. 学到了林海峰,武沛齐讲的Day14完
  16. python调用sin_Python sin() 函数 - Python 教程 - 自强学堂
  17. 0.91英寸和0.96英寸OLED驱动区别
  18. OpenFaaS实战之八:自制模板(maven+jdk8),美团java面试算法题
  19. MyBaitsPlus快速入门,java进阶书籍推荐
  20. L3-011 直捣黄龙

热门文章

  1. 我待JAVA如初恋,JAVA虐我千百遍,如何彻底卸载JAVA
  2. 2020年关于Linux的知识技术合集(基础入门到高级进阶)
  3. 超酷的计步器APP(一)——炫酷功能实现,自定义水波纹特效、自定义炫酷开始按钮、属性动画的综合体验
  4. 如何使用计算机闹铃,电脑闹钟小工具、电脑闹钟小工具怎么用
  5. 水平和因素是什么_血脂是什么?高血脂对身体有何危害?一篇长文为你详解
  6. 数值计算复习笔记之(一)误差定义
  7. 【web3py】{AttributeError}‘AttributeDict‘ object has no attribute ‘baseFeePerGas‘
  8. 解决The code generator has deoptimised the styling of xxxx.js as it exceeds the max of 500kb
  9. STM32——I2C通信
  10. 微软NT验证登录(类似sharepoint 登录方式)