1. 硬约束 & 软约束

通常轨迹优化问题通常会有目标函数,然后我们会为决策变量设置一些约束条件,这些约束条件缩小了可行域的范围,约束条件会存在以下几种可能性:

(1)约束合适,简化了目标函数的求解,去掉了鞍点留下来最值点(正常约束)

(2)约束过多,发现不可能满足所有的约束条件,可行域为空集(过约束)

(3)约束不足,发现可行域太大,搜索算法很费时(欠约束)

对于后两种情况,欠约束一般可以增加约束,过约束怎么办呢?

最直接的想法是:我去掉多余的约束不就行啦! 然后问题来了:去掉哪个?去掉之后不满足可行解怎么办?

针对上面的问题,我们先讨论一下两种约束:

Ø硬约束(hard-constraint):在任何时候都“必须”满足的约束(比方说:动力学,关节硬限位等)

Ø软约束(soft-constraint):一种尽可能满足的“希望”(比方说:关节尽量偏离限位,机器人尽量偏离障碍物等)

换言之,硬约束是严格满足的约束,软约束并不是严格满足而是表达一种“优先”和“偏好”

太抽象了,我们先举个例子吧:《矩阵论》求解矩阵的广义逆

从下图可以看出:

(1)有解,我们如何在解中寻找偏好(软约束)

(2)无解,我们如何把硬约束变为软约束

(3)软约束的一种表达——最小二乘,偏好的一种表达——最小范数

求解硬约束和软约束的方法如下所示:

2. 硬约束

  • 首先是简化模型,此处盗用高飞老师深蓝学院的一点东西:可以将NLP问题转化为凸优化问题,因为有如下优点:

(1) 局部最优解的全局特性 (2) 存在高效的求解算法

而凸优化问题中又有几个特例:LP和QP

注意:QP问题的二次型系数的对称正定性

既然谈到了凸优化的高效求解算法,那么接着给出求解优化问题的计算机工具:

  • 其次是启发式算法与搜索算法

这块太偏数值优化和现代优化了,我当初是看这两本书的,大家可以参考一下,不多介绍

  • 接下来是上一节的Lagrange和Hamilton

3. 软约束

  • 松弛条件与部分约束

这一块其实水很深,简单总结了一下,具体可以参考文献5

  • 其次是罚函数

可以认为硬约束和软约束都是罚函数,只不过思路不一致

硬约束是通过 Lagrange 乘子保证约束严格满足

软约束是通过权重和范数保证约束优先满足(但是,软约束会存在无约束问题的病态性的问题)

软约束的实现手段一般是通过范数来实现的

为了截图,花了六块大洋买了一本电子书,肉疼

而罚函数又分为外点罚函数和内点罚函数:

外点罚函数:最优解序列从可行域外部逼近约束最优化问题的最优解

内点罚函数:最优解序列从可行解内部逼近约束最优化问题的最优解,适宜于不等式约束

外点罚函数如上,内点罚函数如下:

到此为止,大家可以考虑一下一些软约束的实现:如关节极限,障碍物势函数等

  • 最后,也是最重要的:任务优先级

重要的两句话:

任务优先级原则:低任务优先级的执行不应该干扰高任务优先级的执行

任务优先级算法:任务优先级分层,将低优先级任务的解投影到高优先级任务的零空间

具体的例子如下:


~~~祝大家牛年大吉,新年里工作顺顺利利,工资涨涨涨涨;学业进进步步,paper发发发发!

Reference

  1. 高飞. 移动机器人中的运动规划. 深蓝学院. 2019.
  2. Bemporad. Model Preditive Control. 2020.
  3. 郁磊. MATLAB智能算法30个案例分析(第2版). 北京航空航天大学出版社.
  4. 高立. 数值最优化方法. 北京大学出版社.
  5. Bartak R. Modelling soft constraints: A survey[J]. Neural Network World, 2002, 12(5): 421-432
  6. Flacco F, De Luca A, Khatib O. Control of redundant robots under hard joint constraints: Saturation in the null space[J]. IEEE Transactions on Robotics, 2015, 31(3): 637-654.