本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车决策与控制》书籍的笔记.
障碍物预测
当环境中出现移动障碍的时候,移动障碍会在未来某些时刻
(
t
1
、
t
2
、
t
3
)
(t_1、t_2、t_3)
(t1、t2、t3)占据已经规划好的路径;如果目标汽车仍然以当前车速匀速行驶,有可能会在未来的某一时刻与移动障碍相碰撞; 
根据移动障碍当前所处位置
(
x
0
o
b
j
,
y
0
o
b
j
)
(x_{0_{obj}},y_{0_{obj}})
(x0obj,y0obj)、速度
(
v
0
o
b
j
,
v
0
o
b
j
)
(v_{0_{obj}},v_{0_{obj}})
(v0obj,v0obj)、加速度
(
a
0
o
b
j
,
a
0
o
b
j
)
(a_{0_{obj}},a_{0_{obj}})
(a0obj,a0obj),可以预测经过时间
t
t
t后移动障碍物所处位置
(
x
t
o
b
j
,
y
t
o
b
j
)
(x_{t_{obj}},y_{t_{obj}})
(xtobj,ytobj):
{
x
t
o
b
j
=
x
0
o
b
j
+
v
x
o
b
j
×
t
+
1
2
×
a
x
o
b
j
×
t
2
y
t
o
b
j
=
y
0
o
b
j
+
v
y
o
b
j
×
t
+
1
2
×
a
y
o
b
j
×
t
2
(32)
{xtobj=x0obj+vxobj×t+12×axobj×t2ytobj=y0obj+vyobj×t+12×ayobj×t2
矩阵形式:
Y
=
[
x
t
o
b
j
y
t
o
b
j
]
,
X
=
[
1
t
t
2
]
,
A
=
[
x
0
o
b
j
v
x
o
b
j
1
2
×
a
x
o
b
j
y
0
o
b
j
v
y
o
b
j
1
2
×
a
y
o
b
j
]
(33)
Y= [xtobjytobj]
Y
=
A
X
(34)
Y=AX\tag{34}
Y=AX(34)
得到
t
t
t时刻移动障碍所处位置
Y
Y
Y后,根据移动障碍轮廓计算其覆盖区域
Q
Q
Q:
Y
⇒
Q
(35)
Y\Rightarrow{Q}\tag{35}
Y⇒Q(35)
障碍物覆盖区域与规划轨迹的交集示意图:

计算
Q
Q
Q与规划路径
S
S
S的交集
Δ
S
\Delta{S}
ΔS:
Δ
S
=
Q
⋂
S
\Delta{S}=Q\bigcap{S}
ΔS=Q⋂S,
Δ
S
\Delta{S}
ΔS与
t
t
t一一对应;
S
−
T
S-T
S−T图生成

S-T图是已经规划完成的路径纵向位移与时间之间的二维关系图;
假如移动障碍物经过了规划路径,那么因为移动障碍物在一段时间内占据了规划路径,在S-T图中会有一块覆盖区域;
图4.24中, S g o a l S_{goal} Sgoal为规划路径的长度,绿色虚线代表目标汽车以当前车速匀速沿规划路径行驶,用时为 t t t,可以发现在某些时刻目标汽车和移动障碍物将会同时出现在期望路径的某个位置,意味着目标汽车将与移动障碍物碰撞;红色实线代表目标汽车从当前时刻开始以最大加速度加速通过期望路径,用时记为 t m i n t_{min} tmin;
S-T栅格化
为了有利于在S-T图中进行路径搜索,需要对S-T图进行离散化、网格化;根据需要确定采样周期和规划路径的路径点间隔,如下图所示:

从当前时刻开始根据采样周期针对未来某一时刻
t
k
t_k
tk计算移动障碍所处位置
Y
k
Y_k
Yk,其中
k
k
k为
1
~
c
1~c
1~c的自然数,
c
c
c的值根据移动障碍物离开规划路径的时刻确定;
t
k
t_k
tk和
t
k
+
1
t_{k+1}
tk+1之间的时间差为采样周期;
X
k
=
[
1
t
k
t
k
2
]
,
Y
k
=
[
x
t
k
y
t
k
]
,
k
∈
(
1
,
c
)
且
c
∈
N
(36)
X_k= [1tkt2k]
Y
k
=
A
X
k
,
Y
k
⇒
Q
k
,
Δ
S
k
=
Q
k
⋂
S
x
y
(37)
Y_k=AX_k,Y_k\Rightarrow{Q_k},\Delta{S_k}=Q_k\bigcap{S_{xy}}\tag{37}
Yk=AXk,Yk⇒Qk,ΔSk=Qk⋂Sxy(37)
最终得到
Δ
S
k
,
Δ
S
k
\Delta{S_k},\Delta{S_k}
ΔSk,ΔSk中包含在时刻
t
k
t_k
tk移动障碍在采样后的期望路径点上的投影;将
t
k
t_k
tk与
Δ
S
k
\Delta{S_k}
ΔSk相对应的标记在网格化后的S-T图上,即为S-T搜索图;
创建目标时刻点
创建S-T搜索图的目的在于为搜索算法提供搜索空间,从 t a t_a ta与 t m i n t_{min} tmin中选择较小的值记为 T t m i n T_{t_{min}} Ttmin,从 T t m i n T_{t_{min}} Ttmin开始向后等间隔产生一组时刻点,这些时刻点(包括 T t m i n T_{t_{min}} Ttmin)用 T t r ( r ∈ N ) 且 r ≠ 0 T_{t_r}(r\in{N})且r≠0 Ttr(r∈N)且r=0表示,数目由移动障碍在S-T图中占据的区域而定; T t r T_{t_r} Ttr称为目标时刻, T t r T_{t_r} Ttr的集合记为 T T T_T TT, T T T_T TT称为目标时刻集;
同时产生与之数量匹配的一组 T s r T_{s_r} Tsr, T s r T_{s_r} Tsr的大小与 S g o a l S_{goal} Sgoal相等,称为目标路径点,这一组 T s r T_{s_r} Tsr的集合记为 T S T_S TS,称为目标路径点集; T T T_T TT与 T S T_S TS中的元素一一对应,且对应了S-T图上 T S T_S TS线上的一组点,这组点称为目标时刻点;
搜索产生路径
结合上游行为决策输出的信息,速度规划可以灵活设置障碍物体周边的代价,达到调整速度方案的目的;当上游决定针对物体 a a a进行抢先决策时,在S-T图上物体 a a a运动路径上方的网格的代价可以调成偏小;同时,为了避免任何潜在的碰撞,所有动态障碍物体的路径经过的网格的代价都要调大;
基于路径搜索算法针对每一个S-T候选目标点,在S-T禁忌搜索空间中搜索产生从起点到目标点的路径,如下图所示:

速度平滑
通过路径搜索算法在S-T禁忌搜索图中找到一条从起点到目标点的路径时,由于对原有S-T图的离散采样,得到的路径也是曲折且离散;为了获得平滑的路径曲线,利用多项式回归分析对离散路径点进行拟合,此外,QP算法亦可用于速度平滑过程;
速度规划轨迹平滑结果如下图所示:

多项式回归介绍
统计学中定量地找出两种或两种以上变量之间的对应关系称为回归分析;
根据自变量的个数、因变量的类型和回归线的形状等信息将回归分析的方法分为:线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归等;
按照自变量和因变量之间的关系类型,回归分析分为:线性回归分析和非线性回归分析;研究一个因变量与一个或多个自变量间多项式的回归分析方法,称为多项式回归;如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归;多项式回归的优势:仅仅通过改变自变量的次数构建多项式去逼近数据点,不存在其他复杂的函数;
一元
m
m
m次多项式回归方程:
y
^
=
b
0
+
b
1
x
+
b
2
x
2
+
⋯
+
b
m
x
m
(38)
\hat{y}=b_0+b_1x+b_2x^2+\dots+b_mx^m\tag{38}
y^=b0+b1x+b2x2+⋯+bmxm(38)
二元二次多项式回归方程:
y
^
=
b
0
+
b
1
x
1
+
b
2
x
2
+
b
3
x
1
2
+
b
4
x
2
2
+
b
5
x
1
x
2
(39)
\hat{y}=b_0+b_1x_1+b_2x_2+b_3x_1^2+b_4x_2^2+b_5x_1x_2\tag{39}
y^=b0+b1x1+b2x2+b3x12+b4x22+b5x1x2(39)
对回归方程的拟合函数建立损失函数,用于评价拟合程度的好坏,损失函数的值越小,则拟合程度越好;当损失函数为最小值时,则对应的参数 θ \theta θ为最优参数,即此时拟合达到最优;
在回归分析中常用最小二乘法构建损失函数,最小二乘法亦称最小平方法,是通过求拟合函数值与给定数据之间平方和最小的方式,使得函数逼近给定数据,得到最优的函数方程;
求最小损失函数值的方式有两类:一类是利用最大似然和最小二乘法等对损失函数求导且令导数为零,直接得到解析解;另一类是基于迭代算法,迭代优化求解;第一类方法要求解逆矩阵,对于数据量小的问题可以快速有效得到解析解,但对数据量大的问题求解逆矩阵需要消耗大量计算内存;
多项式回归在速度平滑中的应用
以基于5次曲线的多项式为例,对其对应5次多项式的系数进行迭代寻优,从而获取平滑后的速度曲线:
在对S-T图中的路径点进行5次曲线拟合得到速度规划方案时,需要考虑目标汽车在 t t t为0时当前时刻目标汽车的速度值和加速度值及S-T图中创建的目标时刻点;即利用5次曲线对S-T图中速度规划路径点的拟合,是一个包含等式约束的优化问题;
当通过路径搜索算法在S-T图中搜索产生路径后,可以获取一组路径点
(
t
i
,
s
i
)
(
i
−
0
,
1
,
2
,
…
,
m
)
(t_i,s_i)(i-0,1,2,\dots,m)
(ti,si)(i−0,1,2,…,m);用于速度规划路径点的5次拟合函数为:
s
(
t
)
=
k
0
+
k
1
t
+
k
2
t
2
+
k
3
t
3
+
k
4
t
4
+
k
5
t
5
s(t)=k_0+k_1t+k_2t^2+k_3t^3+k_4t^4+k_5t^5
s(t)=k0+k1t+k2t2+k3t3+k4t4+k5t5
构建损失函数:
J
(
k
0
,
k
1
,
k
2
,
k
3
,
k
4
,
k
5
)
=
1
2
m
∑
i
=
1
m
(
h
k
(
t
i
)
−
s
i
)
2
J(k_0,k_1,k_2,k_3,k_4,k_5)=\frac{1}{2m}\sum_{i=1}^m(h_k(t_i)-s_i)^2
J(k0,k1,k2,k3,k4,k5)=2m1i=1∑m(hk(ti)−si)2
在速度规划中,目标汽车在轨迹上所处的位置用
s
s
s表示,速度用
s
′
s'
s′表示,加速度用
s
′
′
s''
s′′表示,则在时刻
t
t
t,目标汽车的车速为:
s
′
(
t
)
=
k
1
+
2
k
2
t
+
3
k
3
t
2
+
4
k
4
t
3
+
5
k
5
t
4
s'(t)=k_1+2k_2t+3k_3t^2+4k_4t^3+5k_5t^4
s′(t)=k1+2k2t+3k3t2+4k4t3+5k5t4
目标汽车加速度为:
s
′
′
(
t
)
=
2
k
2
+
6
k
3
t
+
12
k
4
t
2
+
20
k
5
t
3
s''(t)=2k_2+6k_3t+12k_4t^2+20k_5t^3
s′′(t)=2k2+6k3t+12k4t2+20k5t3
已知
t
=
0
t=0
t=0时初始状态下目标汽车在规划轨迹上所处位置、汽车速度、汽车加速度为已知量,即:
s
(
0
)
=
k
0
=
s
t
=
0
,
s
′
(
0
)
=
k
1
=
s
t
=
0
′
,
s
′
′
(
0
)
=
2
k
2
=
s
t
=
0
′
′
s(0)=k_0=s_{t=0},s'(0)=k_1=s'_{t=0},s''(0)=2k_2=s''_{t=0}
s(0)=k0=st=0,s′(0)=k1=st=0′,s′′(0)=2k2=st=0′′
目标时刻点信息,即存在:
s
(
t
r
)
=
k
0
+
k
1
t
r
+
k
2
t
r
2
+
k
3
t
r
3
+
k
4
t
r
4
+
k
5
t
r
5
=
s
t
s(t_r)=k_0+k_1t_r+k_2t_r^2+k_3t_r^3+k_4t_r^4+k_5t_r^5=s_t
s(tr)=k0+k1tr+k2tr2+k3tr3+k4tr4+k5tr5=st
联立可得:
{
k
0
=
s
t
=
0
k
1
=
s
t
=
0
′
k
2
=
1
2
s
t
=
0
′
′
k
3
=
s
t
t
r
3
−
s
t
=
0
t
r
3
−
s
t
=
0
′
t
r
2
−
s
t
=
0
′
′
2
t
r
−
k
4
t
r
−
k
5
t
r
2
{k0=st=0k1=s′t=0k2=12s″t=0k3=stt3r−st=0t3r−s′t=0t2r−s″t=02tr−k4tr−k5t2r
损失函数表示为关于
k
4
,
k
5
k_4,k_5
k4,k5的表达式,即:
J
(
k
4
,
k
5
)
=
1
2
m
∑
i
=
1
m
(
h
k
(
t
i
)
−
s
i
)
2
J(k_4,k_5)=\frac{1}{2m}\sum_{i=1}^m(h_k(t_i)-s_i)^2
J(k4,k5)=2m1i=1∑m(hk(ti)−si)2
k
4
,
k
5
k_4,k_5
k4,k5的梯度分别为:
∂
∂
k
4
J
(
k
4
,
k
5
)
=
∂
∂
k
4
1
2
m
∑
i
=
1
m
(
h
k
(
t
i
)
−
s
i
)
2
=
1
m
1
2
m
∑
i
=
1
m
[
(
h
k
(
t
i
)
−
s
i
)
(
t
i
4
−
t
r
t
i
3
)
]
\frac{\partial}{\partial{k_4}}J(k_4,k_5)=\frac{\partial}{\partial{k_4}}\frac{1}{2m}\sum_{i=1}^m(h_k(t_i)-s_i)^2=\frac{1}{m}\frac{1}{2m}\sum_{i=1}^m[(h_k(t_i)-s_i)(t_i^4-t_rt_i^3)]
∂k4∂J(k4,k5)=∂k4∂2m1i=1∑m(hk(ti)−si)2=m12m1i=1∑m[(hk(ti)−si)(ti4−trti3)]
∂ ∂ k 5 J ( k 4 , k 5 ) = ∂ ∂ k 5 1 2 m ∑ i = 1 m ( h k ( t i ) − s i ) 2 = 1 m 1 2 m ∑ i = 1 m [ ( h k ( t i ) − s i ) ( t i 5 − t r t i 3 ) ] \frac{\partial}{\partial{k_5}}J(k_4,k_5)=\frac{\partial}{\partial{k_5}}\frac{1}{2m}\sum_{i=1}^m(h_k(t_i)-s_i)^2=\frac{1}{m}\frac{1}{2m}\sum_{i=1}^m[(h_k(t_i)-s_i)(t_i^5-t_rt_i^3)] ∂k5∂J(k4,k5)=∂k5∂2m1i=1∑m(hk(ti)−si)2=m12m1i=1∑m[(hk(ti)−si)(ti5−trti3)]
梯度下降寻优过程是不断更新 k 4 , k 5 k_4,k_5 k4,k5;
求最小损失函数值的过程:
k
4
=
k
4
+
α
1
m
∑
i
=
1
m
[
(
h
k
(
t
i
)
−
s
i
)
(
t
i
4
−
t
r
t
i
3
)
]
k
5
=
k
5
+
α
1
m
∑
i
=
1
m
[
(
h
k
(
t
i
)
−
s
i
)
(
t
i
5
−
t
r
t
i
3
)
]
k4=k4+α1mm∑i=1[(hk(ti)−si)(t4i−trt3i)]k5=k5+α1mm∑i=1[(hk(ti)−si)(t5i−trt3i)]
当损失函数值收敛于允许误差之内时,认为找到最优解,此时得到的
k
4
,
k
5
k_4,k_5
k4,k5可以最终确定对给定的路径点拟合程度最好的拟合函数方程;