1.1 自动驾驶的概念
1.自动驾驶
自动驾驶:自动驾驶就是算出一条满足约束的最优路径,该路径会发送给控制模块
2.自动驾驶的约束
(1)轨迹的连续性
(2)无碰撞
(3)遵守交通规则
(4)车辆动力学
3.Cost function
衡量轨迹的质量经常用 Cost Function 表示,它是一个五次多项式
s
=
f
(
t
)
=
a
0
+
a
0
t
+
.
.
.
.
+
a
5
t
5
s = f(t) = a_{0}+ a_{0}t+ .... +a_{5}t^{5}
s=f(t)=a0+a0t+....+a5t5
其中 a0,a1 … 都是未知常数
costFunction J = w 1 f ˙ 2 + w 2 f ¨ 2 + w 3 f ′ ¨ 2 \text { costFunction } J=w 1 \dot{f}^{2}+w_{2} \ddot{f}^{2}+w_{3} \ddot{f'}^{2} costFunction J=w1f˙2+w2f¨2+w3f′¨2
所以轨迹的求解过程可以转换为求 cost function 的最小值,在高中学习中求多项式 y = f(x) 在范围 [a,b]的最小值:
但是使用这种方法求解最值对于有多个极值或者比较复杂的函数是非常耗时的,所以在自动驾驶中使用计算更加简单的 “迭代法” 进行求解,常用的迭代法有 “梯度下降”
1.凸优化
1.凸优化的定义
假设要优化一个函数 f(x),这个函数在自动驾驶中就是 cost function,该函数是一个凸函数。该函数有不等式约束,该不等式约束也是凸函数,与此同时还存在等式约束,该约束是线性约束,那么 f(x) 就是凸优化问题。
凸优化问题存在几个特性:
(1)凸空间:约束空间是一个完整,不破碎的空间(凸空间,非凸空间)
(2)如果我们找到了全部最优解,那么这个解也是全局最优解
cost function 只有一个极值点,且为极小值
那么一个好的“问题”对于初值一定是不敏感的,并且全局只存在一个极小值,这种问题就被称为 “凸优化”
凸多边形:凸多边形是指多边形的内角都小于180度,且任意两点间的线段完全位于多边形内部或边上的多边形
凹多边形:凹多边形至少有一个内角大于180度,或者等价地,多边形中至少有一条内对角线位于多边形的外部
2.自动驾驶中的凸优化
1.为什么规划轨迹不是凸优化
如下图所示,我们需要避让一棵树,但是因为树的阻碍导致避让空间是不连续的,而凸空间是要求必须连续,所以轨迹预测是非凸问题
解决非凸问题的方法是找到非凸结构中的凸结构
2.如何解决非凸空间的极小值
在非凸空间中寻找初始值是非常关键的,我们常常采用启发式算法,该算法是在约束空间中随机找到离散的函数位,比大小,找到最小的作为迭代的初值,如下图所示:
我们现在约束中随机找到几个离散点,然后找到其中的极小值作为初始值,那么最终求出来的就是离散约束空间的最优解
3.二次规划
二次规划问题(Quadratic Programming,QP)是一种非线性规划问题,它的目标函数为二次函数,约束条件和线性规划问题的约束条件一样,都是线性等式或线性不等式
在下图中假设虚线的圆弧是一个个的凸函数,灰色是凸空间,那么对于 f0(x) 来说他的极小值点就是
x
∗
x^{*}
x∗