第一章第二节:凸优化
自动驾驶规划目标:算出一条满足约束的最优轨迹
”最优“指标:平滑、舒适、尽可能短且耗时少
约束:轨迹连续、无碰撞、交通规则、车辆动力学
衡量轨迹质量 往往用cost function表示
对于轨迹 s = f ( t ) = a 0 + a 1 t + a 2 t 2 + . . . + a 2 t 5 s=f(t)=a_0+a_1t+a_2t^2+...+a_2t^5 s=f(t)=a0+a1t+a2t2+...+a2t5 (其中a0-a5都是未知常数)----注意轨迹如果这样设定了说明已经满足初始点与T时间点的位置、速度、加速度约束了。
cost function
J
=
w
1
f
˙
2
+
w
2
f
¨
2
J=w_1 \dot f^2+w_2\ddot f^2
J=w1f˙2+w2f¨2+
w
3
w_3
w3\dddot
f
2
f^2
f2
可以把五次函数求导代入这个公式里面~(J越小,意味着越平滑舒适,当然也要满足各种约束)
数学问题:求解cost function在约束下的最小值问题
(而且以上举例还是一个变量,在我们这里,cost function有6个变量a0-a5
即使你求出极值点,但极值点很多没很难判断which最小,且一般都有约束,约束复杂,是许多小区间的并,处理起来困难
所以一般求复杂函数在约束下的最小值问题都采用迭代法,快一点!
常见的迭代算法有:
- 牛顿法《数值分析》(基于一阶、二阶导
- 梯度下降(基于一阶导
- 高斯牛顿法 《视觉slam 14讲》(改进的牛顿法,计算简单 速度更快
稍微讲一下梯度下降法:按照梯度的反方向迭代。如:求一点x的导数,导数为负,则x向正方向变化,直到收敛:导数很小,下一步移动就很小。
梯度下降法要么收敛到极小值点
如果求带约束的极值问题,若在约束空间内函数单调,即在约束空难内没有极值点,梯度下降法最终收敛到约束边界上
迭代法的缺点:(对初值敏感,有可能收敛到局部最小值
适合迭代法的好问题:凸优化
凸优化必有两个性质:
(1)cost function只有一个极值点,且为极小值 (这么说不严谨,cost function是单调函数也可以)(凸函数)
(2)约束空间是一块完整、不破碎的空间(凸空间)
求凸函数在凸空间的最小值问题称为凸优化
凸优化问题–适合用迭代方法求解 带约束的极值问题
凸优化与自动驾驶:在自动驾驶的静态+动态避障约束空间都不是凸的(凸问题直接迭代就能得到全局最小值,而规划是非凸问题,空间破碎就很依赖初值,迭代就很容易到局部最优
(注意这里的车速算一种解,解非凸,其实也就是cost function非凸)
如何求解非凸问题的最小值?
目前为止没有完美的解答,求解非凸问题的主要思路是找非凸问题中的凸结构
eg1:凸函数 非凸空间
把连续的约束空间离散成一个个点
这样处理需要:采样数量足够