文章目录

  • 前言
    • 约束
  • 硬约束的轨迹优化
    • Corridor-Based Trajectory Optimization
    • Bezier Curve Optimization
    • Other Options
  • 软约束的轨迹优化
    • Distance-Based Trajectory Optimization
    • 优化方法

前言

可以看看我的这几篇Blog1,Blog2,Blog3。

上次基于Minimum Snap的轨迹生成,有许多优点,比如:

  • 轨迹让机器人可以在某个时间点抵达某个航点。
  • 任何一个时刻,都能数学上求出期望的机器人的位置、速度、加速度、导数。
  • Minimum Snap可以把问题转换为凸优化问题。
    缺点:
  • Mnimum Snap可以控制轨迹一定经过中间的哪些航点,但是控制不了航点与航点之间生成的这个“OverShoot”,这在控制里面称之为超调,其实在此处不是叫超调,只是借用了一下这个概念,方便理解。也就是Minimum Snap没有考虑障碍物的环境信息。下图中的直观展示就是在直线上方,与红色曲线之间的差值部分,就是OverShoot,因为此时红线已经经过红色障碍物了。

    **综上,Minimum Snap轨迹优化方法非常有利于生成生成光滑连续的轨迹的,但是其天然地不利于做避障。**所以,这次的重点就是,如何修改Minimum Snap,使得其可以去做避障。

约束

环境当中的障碍物表示机器人不可通行的区域,其对偶问题就是环境里的可通行的区域。现在想让Minimum Snap不碰到障碍物:

  1. 加一个推力,使得快靠近障碍物的时候,把机器人推回可通行的区域,参考方法软约束的人工势场法。
  2. 在可通行的区域中加约束,也可以把轨迹吸引到可通行区域,比如在红色障碍物下面,加上一个绿色的方框,使得机器人走这条路的时候一定通过这个方框,这就是所谓的硬约束。

一个模型,其目标函数为f(x){f}(x)f(x),有很多的约束条件(等式或者不等式),其中硬约束要求这两类的约束条件一定要在全局的条件下满足的。软约束就是把约束条件全部加到目标函数f(x){f}(x)f(x)里,相当于拉格朗日乘子?

这些约束是被倾向于实现的,而不是严格满足的。因为要减少全局,所以使得h(x)和g(x){h}(x)和{g}(x)h(x)和g(x)的值变小,其实一开始的目的是全局最小,没怎么要求h(x)和g(x){h}(x)和{g}(x)h(x)和g(x)的值,所以就是倾向性的。也称λ1∗g(x)+λ2∗h(x){\lambda}_{1}*g(x)+{\lambda}_{2}*h(x)λ1​∗g(x)+λ2​∗h(x)为损失函数,下面几幅图就是常用的损失函数。


硬约束的轨迹优化

Corridor-Based Trajectory Optimization

把环境中的信息塞入八叉树地图(格子有大有小,不像栅格地图那样规整),之后利用图搜索算法(A*,JPS)进行搜索,就找到了一条飞行走廊,参考图二的蓝色方框,之后由于空余的位置还很多,所以对走廊膨胀,参考黄色的部分,在膨胀过后的飞行走廊生成分段连续的多项式表示的无人机轨迹。12维到4维同样是利用之前的微分平坦性。

与之前不同的是,在Minimum Snap当中,一段段轨迹之间是有WayPoint的(连续性约束,必须要经过定好的WayPoint),现在的WayPoint是存在在前后两个方块的交界处,只需要通过交界处的走廊就行。



如红色的阴影面积。

那么问题来了,如何使一段多项式的轨迹一定位于这个Cube里面?

  1. 将时间T{T}T进行离散,加约束,使得每一个点都在x,y{x},{y}x,y的边界之内,不过这样就要将T{T}T离散成很多份,会使得这个凸优化问题有非常多约束同时非常难解。
  2. 采用段与段之间的连接点先施加一个约束,可以保证两端轨迹的中间部分一定经过重叠部分,但没保证不在重叠部分的轨迹不会跑到飞行走廊外面。但是无法直接施加上的,不然很多约束。

    采用后验的迭代检测。

    与之前的Minimum Snap相比,其连接点是不可以移动的,但是在这里,连接点是可以在方框内自由移动的,因此就算一开始给的时间不是特别好,例如用速度曲线去分配时间,不好的话其迭代检测会自动的去分配时间,进而去优化连接点。


Bezier Curve Optimization

Bezier曲线一定是可以与某个多项式函数有映射的关系的。

以下是B曲线的一些性质。

B曲线总是能通过起始点,并且会终止于最后一个点。

各个性质的应用。


Other Options

来自因特尔实验室的一篇文章,也是前端找Path(RRT Star),在找Path之前会对环境按照方块的大小对障碍物进行膨胀,这个环境膨胀不光是防止碰撞的膨胀,还会把环境进行更多保守的膨胀,之后有了Path会有很多点,在很多点上再继续构造一个个小方块。

以下是利用在无人机编队的轨迹优化。

相当于规划安全距离。


软约束的轨迹优化

Distance-Based Trajectory Optimization

软约束是对机器人产生一个力,使得机器人远离障碍物。最直观的展现方式就是距离描述。
一些硬约束的缺陷如下,对传感器噪点敏感等;软约束就能通过推力而产生一条光滑的轨迹,其优势就是自然的产生光滑的轨迹。软约束也有缺陷,是倾向满足而不是严格满足。


以上推导参考上篇Blog的Minimum Snap推导

ESDF是距离场(参考人工势场法的思想,障碍物较远,惩罚就趋于0;障碍物较近,惩罚呈指数上升。)

优化方法

下降优化方法(容易陷入局部最小值)

线性搜索优化

梯度下降法(同样容易陷入局部最小值)

牛顿方法(不光只看梯度)

Leven法,就是一阶法与二阶法的折中。

软约束、硬约束、Minimum Snap的轨迹优化方法相关推荐

  1. 6软硬约束下的轨迹优化

    Introduction Minimum snap trajectory optimization Minimum snap这种方法只限制轨迹应该会通过的中间路径点(中继点),collision ch ...

  2. 【附源码和详细的公式推导】Minimum Snap轨迹生成,闭式求解Minimum Snap问题,机器人轨迹优化,多项式轨迹路径生成与优化

    该篇博客内容较多,工作量也很大,难免在理解上表达上有错误,如有发现烦请指教.如有问题在博客中留言,或者github的仓库中提Issues都行,看到后我会尽快回复. Minimum Snap源代码:Mi ...

  3. (四)路径规划算法---QP解决Minimum Snap轨迹优化问题

    QP解决Minimum Snap轨迹优化问题 文章目录 QP解决Minimum Snap轨迹优化问题 1. 多项式的次数确定 2. Minimum Snap案例分析 2.1 轨迹的多项式表达 2.2 ...

  4. 干货 | 足式机器人运动控制发展方向——轨迹优化

    " 运动控制技术的进步使得足式机器人的运动能力更强,而近来轨迹优化作为主流学术研究方向,能够为足式机器人运动控制的发展提供可能的指引.本期技术干货,我们邀请到了小米工程师徐喆,向我们介绍足式 ...

  5. 非自回归也能预训练:基于插入的硬约束生成模型预训练方法

    论文标题: POINTER: Constrained Text Generation via Insertion-based Generative Pre-training 论文作者: Yizhe Z ...

  6. 【约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )

    文章目录 一. ConstraintLayout 简介 1. 引入 约束 布局 ( 1 ) 约束性布局 作用 和 简介 2. 约束 简介 ( 1 ) 约束个数要求 ( 2 ) 约束设置 与 显示位置 ...

  7. MYSQL:约束?添加约束?删除约束?以及一些其他修饰?

    MySQL中的约束,添加约束,删除约束,以及其他的一些修饰: 一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) ...

  8. linux命令 - ln - 创建和删除软、硬链接

    linux命令 - ln - 创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件 ...

  9. 谷歌不支持调用摄像头麦克风_向来只软不硬的谷歌,要对你的手机来狠的

    来源:差评 不知道差友们还有没有印象. 前阵子谷歌刚发布首个 Android 11 Developer Preview ( 开发者预览版 )的时候,托尼就充当过一次吃螃蟹的勇士( 其实是手头手机多 ~ ...

  10. 威联通+nas+mysql_小白玩NAS 篇一:威联通QNAS虚拟机安装软路由+硬路由(无线AP)

    小白玩NAS 篇一:威联通QNAS虚拟机安装软路由+硬路由(无线AP) 2019-04-01 20:46:00 86点赞 749收藏 128评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就 ...

最新文章

  1. 邀您参与 | 阿里巴巴如何扩展 K8s 调度器支持 AI 和大数据任务?
  2. JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结
  3. 树莓派 python 无人机_DIY一个基于树莓派和Python的无人机视觉跟踪系统
  4. 2018-2019 20165204 20165216 20165220 实验四 外设驱动程序设计
  5. 【Flink】Flink如何传递JVM参数给JobManager和TaskManager
  6. 集设作品灵感|App夜间模式如何设计?
  7. linux中which命令详解,Linux下which命令使用详解(转)
  8. 一点对 KL 散度的理解
  9. linux下mysql的忘记root密码的解决办法
  10. lisp语言画地物符号_地形图中的地物符号说明汇总
  11. abb机器人指令手册_ABB机器人加速度设置
  12. 新手搭建一个网站(详细完整版)
  13. 基于jquery读取csv
  14. 全国社会组织信用信息公式平台(试运行)爬虫记录
  15. 深度:融360还是一家有价值的公司吗?
  16. halo_回顾:Halo 3与糖尿病抗争
  17. python 将url 相对地址转绝对地址
  18. 计算机网络之Dos、DDos攻击
  19. OSI七层——物理层介绍和安全
  20. Debian10更换软件源

热门文章

  1. 【软考系统架构设计师】2019年下系统架构师案例分析历年真题
  2. python怎么调用类中的函数_类中的python函数调用
  3. 制作u盘winpe启动盘_U盘PE启动盘制作方法
  4. Linux 系统中如何恢复已删除的文件?
  5. WinRAR密码破解(精)
  6. 中文语音合成软件Ekho(余音)的使用教程
  7. 盛京剑客系列25:极简估值教程——第一讲速判估值与PEG的推导
  8. oracle如何判断节假日,oracle function 用于判断是否为节假日
  9. 助力操作系统国产化:Testin云测试服贸会首发鸿蒙系统测试平台
  10. 爬虫笔记——urllib实战之淘宝零食板块爬取