本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车决策与控制》书籍的笔记.
路径-速度分解法将路径规划与速度规划分开进行,百度Apollo中的EM算法,分别应用了动态规划算法进行路径规划和二次规划算法进行速度规划,算法架构如下图所示:

基本算法介绍
启发式搜索算法
A ∗ A^* A∗算法
A ∗ A^* A∗算法是一种启发式搜索算法,基于深度优先算法(Depth First Search,DFS)和广度优先算法(Breadth First Search,BFS)的一种融合算法,按照一定原则确定如何选取下一个结点;
启发式搜索算法指:从起点出发,先寻找起点相邻的栅格,判断它是否是最好的位置,基于这个最好的栅格再往外向其相邻的栅格扩展,找到一个此时最好的位置,通过这样一步步逼近目标点,减少盲目的搜索,提高可行性和搜索效率;
深度优先搜索算法思想:搜索算法从起点开始进行搜索(初始状态下待搜索区域内所有结点均未被访问),与周围所有邻点进行比较,选择其中距离终点最近的点进行存储,然后再以该邻点为基础对比周围未被访问的所有邻点,仍然选择距离终点最近的邻点存储;若访问结点到达终点或访问完所有结点仍未到终点,则视为搜索失败,成功搜索所存储的结点连接而成的路径即为起点到终点的路径;
广度优先搜索算法思想:从起始点出发依次访问与它相连接的邻点,访问完毕后再从这些邻点出发访问邻点的邻点,但要保证先被访问的邻点的邻点要比后访问的邻点的邻点先访问,直至图中所有已被访问的结点的邻点都被访问到;如果此时图中尚有未被访问的结点,则需要选取一个尚未被访问的结点作为一个新的结点,继续搜索访问,直到图中所有的结点都被访问一遍为止;
深度优先算法优先选择离目标点最近的结点,广度优先算法选择离初始点最近的点;基于深度优先算法,能以最快的速度找到一条连接起始点到目标点的路径,但不能保证路径的最优性;广度优先搜索算法则必然能找到最短的路径,但由于需要遍历所有的结点,计算复杂度更大; A ∗ A^* A∗算法基于启发函数构建代价函数,既考虑了新结点距离初始点的代价,又考虑了新结点与目标点距离的代价;
A
∗
A^*
A∗算法中包含了开启列表(OPEN表)和关闭列表(CLOSE表);在OPEN表中存放的是还没有访问到的结点,CLOSE表中存放的是已访问的结点;算法首先将起点放入开启列表中进行扩展,然后对开启列表中的结点进行路径评分,从而给出从小到大的排列;路径评分需要一个代价函数判断出该结点是否为OPEN表中代价最小的结点,在算法中,采用的代价函数:
F
=
G
+
H
F=G+H
F=G+H
其中:
G
G
G为当前结点到起始点的距离;
H
H
H为当前结点到目标点的距离,
F
F
F为两者的距离和;
OPEN表对列表中的结点根据
F
F
F值进行从小到大的排列,将
F
F
F值最小的结点从OPEN中删除,将其添加到CLOSE表中;最开始只有起点一个结点,因此起点被放入CLOSE表中,并将起点设为当前结点;通过当前结点搜索当前结点邻近的结点,如果该结点所扩展的结点不在OPEN表中,则将这些结点添加到OPEN表中,之后对添加到OPEN表中的结点进行排序,选出
F
F
F值最小的结点,选该结点作为当前结点,并扩展其邻近结点;如果所扩展的结点在OPEN表中,以当前结点为父结点,重新计算
G
G
G值,且和之前的
G
G
G值进行比较,从而找出最小
G
G
G值进行更新,并重新计算
F
F
F值,再次排序,按照上述步骤循环,直至将目标点添加到OPEN表中,此时搜索算法结束;根据父结点一直找到起点,即可得到搜索到的最佳路径。

Dijkstra算法
随机采样算法
基于随机采样的运动规划算法的基本思路:通过对状态空间均匀随机采样来构建一个连通图,当初始、目标状态都在图中或都可以连接到图中时,问题得到解决;基于随机采样的算法不需要对状态空间自由区域进行显式建模,由碰撞检测来验证轨迹的可行性;
典型的基于随机采样的算法:概率路图法(Probabilistic Road Map,PRM)和快速随机扩展树法(Rapidly Random Tree,RRT);
PRM构建

RRT的构建

DP算法
DP(Dynamic Programming)算法称为动态规划算法;
DP路径算法基本思路:基于给定的一条中心路径(Reference Line,参考线)和车道边界条件,每隔一定间隔的纵向距离(称为不同级上的 S S S值)对道路进行均匀采样(与中心点的横向偏移值称为 L L L值),这样得到采样点( W a y p o i n t Waypoint Waypoint,这些采样点称为航迹点)数组;
道路中心线用于建造 S − L S-L S−L坐标系, S S S代表沿中心线方向, L L L代表与中心线正交的方向;
DP算法是一种聚合重复的计算过程,分解得到的子问题是相互重叠的,子问题依赖于子子问题,子子问题又进一步依赖下一级的子子问题,这样不断循环直至抵达不需要再分解的初始条件;
S
−
L
S-L
S−L轨迹可表示为:
t
r
a
j
e
c
t
o
r
y
=
l
(
s
)
≈
(
l
1
,
l
2
,
l
3
,
…
,
l
n
)
(12)
trajectory=l(s)≈(l_1,l_2,l_3,\dots,l_n)\tag{12}
trajectory=l(s)≈(l1,l2,l3,…,ln)(12)
计算复杂度为:
O
(
k
n
)
O(k^n)
O(kn);
最优化过程为:
m
i
n
C
o
s
t
(
l
n
∣
l
n
−
1
)
=
m
i
n
C
o
s
t
(
l
n
−
1
)
+
C
o
s
t
(
l
n
−
1
,
l
n
)
(13)
min{Cost}(l_n|l_{n-1})=min{Cost}(l_{n-1})+Cost(l_{n-1},l_n)\tag{13}
minCost(ln∣ln−1)=minCost(ln−1)+Cost(ln−1,ln)(13)
m i n C o s t ( l n ) = m i n k n ( m i n C o s t ( l n − 1 ) + C o s t ( l n − 1 , l n ) ) (14) min{Cost(l_n)}=min_{k_n}(minCost(l_{n-1})+Cost(l_{n-1},l_n))\tag{14} minCost(ln)=minkn(minCost(ln−1)+Cost(ln−1,ln))(14)
计算复杂度为: O ( k 2 n ) O(k^{2n}) O(k2n);
基于DP算法,通过将汽车行驶过程中前方一定长度区域分解为可采样的诸多分段路径,对其进行撒点采样并逐级优化目标函数,即可得到一条可通行的规划路径;
路径规划过程的优化目标函数可以考虑以下因素进行构建:与道路中心线的偏差、路径曲率与曲率连续性、与障碍物应保持的合理距离、路径曲率符合汽车运动特性等;
局部路径平滑
样条曲线和QP算法在路径平滑中的应用:
三阶B样条曲线的研究
汽车侧向运动的动力学模型传递函数近似表示为:
G
m
(
s
)
=
b
1
s
2
+
b
2
s
+
b
3
s
3
(
s
+
a
1
)
(
s
+
a
2
)
(15)
G_m(s)=\frac{b_1s^2+b_2s+b_3}{s^3(s+a_1)(s+a_2)}\tag{15}
Gm(s)=s3(s+a1)(s+a2)b1s2+b2s+b3(15)
进一步将动力学模型约束系统简化为:
1
/
s
3
1/s^3
1/s3,依据此简化结果进行轨迹规划,
G
m
(
s
)
G_m(s)
Gm(s)中的剩余部分通过自主汽车底层侧向跟踪控制模块进行补偿;关于B样条性质的一个结论:
k
+
1
k+1
k+1阶B样条曲线是形如下式的线性系统的一条轨迹:
d
k
d
t
k
y
(
t
)
=
u
(
t
)
(16)
\frac{d^k}{dt^k}y(t)=u(t)\tag{16}
dtkdky(t)=u(t)(16)
三阶B样条曲线在路径平滑中的应用
利用B样条曲线平滑路径需要样条曲线通过给定的路径点,即路径点不能作为B样条曲线的控制点,要作为型值点被样条曲线穿过,但B样条曲线是通过控制点坐标来构建参数方程的,这需要通过型值点坐标来求解控制点坐标;通过型值点求解控制点的方式称为反算;
在B样条曲线中反算的目的在于利用B样条曲线对已知点进行插值,步骤依次为:利用型值点求解控制点、利用控制点构造B样条曲线方程、利用B样条曲线方程计算插值点;
假设当前得到的路径点为 Q i ( i = 1 , 2 , 3 , … , n ) Q_i(i=1,2,3,\dots,n) Qi(i=1,2,3,…,n),求三阶B样条曲线的控制点 P i ( i = 0 , 1 , 2 , … , n + 1 ) P_i(i=0,1,2,\dots,n+1) Pi(i=0,1,2,…,n+1);因为曲线段与段间首尾连接,即第 i i i段曲线的终点同时是第 i + 1 i+1 i+1段曲线的起点,且三阶B样条曲线二阶导数连续,光滑连接,因此每个型值点可看作每段三阶B样条曲线的起点;
三阶B样条曲线的型值点与控制点的位置存在如下关系:
p
i
(
t
=
0
)
=
P
i
−
1
+
4
P
i
+
P
i
+
1
6
=
Q
i
,
i
=
1
,
2
,
…
,
n
(17)
p_i(t=0)=\frac{P_{i-1}+4P_i+P_{i+1}}{6}=Q_i,i=1,2,\dots,n\tag{17}
pi(t=0)=6Pi−1+4Pi+Pi+1=Qi,i=1,2,…,n(17)
由上式得到
n
n
n个方程,但从
P
0
P_0
P0到
P
i
+
1
P_{i+1}
Pi+1有
n
+
2
n+2
n+2个未知数,因此需要将起点和终点两个边界条件考虑进去解出所有的未知数;
对于B样条曲线边界处理,此要求曲线过
Q
1
Q_1
Q1和
Q
n
Q_n
Qn,即
P
1
=
Q
1
,
P
n
=
Q
n
P_1=Q_1,P_n=Q_n
P1=Q1,Pn=Qn,可得线性方程组:
[
6
0
1
4
1
…
1
4
1
0
6
]
[
P
1
P
2
⋮
P
n
−
1
P
n
]
=
6
[
Q
1
Q
2
⋮
Q
n
−
1
Q
n
]
(18)
[60141…14106] [P1P2⋮Pn−1Pn]= 6[Q1Q2⋮Qn−1Qn]\tag{18}
⎣
⎡601411…4106⎦
⎤⎣
⎡P1P2⋮Pn−1Pn⎦
⎤=6⎣
⎡Q1Q2⋮Qn−1Qn⎦
⎤(18)
还需要增加
P
0
=
2
P
1
−
P
2
P_0=2P_1-P_2
P0=2P1−P2和
P
n
+
1
=
2
P
n
−
P
n
−
1
P_{n+1}=2P_n-P_{n-1}
Pn+1=2Pn−Pn−1两个条件,即曲线起点和终点分别与
P
0
P
1
、
P
n
P
n
−
1
P_0P_1、P_nP_{n-1}
P0P1、PnPn−1相切,这样构造的三阶B样条曲线在两端曲率为零;
QP算法在路径平滑中的应用
使用QP算法(二次规划算法)需要限制条件:曲率和曲率连续性、贴近中心线、避免碰撞;
路径定义在Station-Lateral坐标系中;参数
s
s
s的取值范围为汽车的当前位置到默认规划路径的长度;将路径划分为
n
n
n段,每段路径用一个多项式来表示,每个样条段
i
i
i都有沿着参考线的累加距离
d
i
d_i
di;每段的路径默认用5阶多项式表示:
l
=
f
i
(
s
)
=
a
i
0
+
a
i
1
⋅
s
+
a
i
2
⋅
s
2
+
a
i
3
⋅
s
3
+
a
i
4
⋅
s
4
+
a
i
5
⋅
s
5
(
0
≤
s
≤
d
i
)
(19)
l=f_i(s)=a_{i0}+a_{i1}·s+a_{i2}·s^2+a_{i3}·s^3+a_{i4}·s^4+a_{i5}·s^5(0≤s≤d_i)\tag{19}
l=fi(s)=ai0+ai1⋅s+ai2⋅s2+ai3⋅s3+ai4⋅s4+ai5⋅s5(0≤s≤di)(19)
定义每个样条段优化目标函数:
c
o
s
t
=
∑
i
=
1
n
(
ω
1
⋅
∫
0
d
i
f
i
′
(
s
)
2
d
s
+
ω
2
⋅
∫
0
d
i
f
i
′
′
(
s
)
2
d
s
+
ω
3
⋅
∫
0
d
i
f
i
′
′
′
(
s
)
2
d
s
)
(20)
cost=\sum_{i=1}^n\left(\omega_1·\int_0^{d_i}f'_i(s)^2ds+\omega_2·\int_0^{d_i}f''_i(s)^2ds+\omega_3·\int_{0}^{d_i}f'''_i(s)^2ds\right)\tag{20}
cost=i=1∑n(ω1⋅∫0difi′(s)2ds+ω2⋅∫0difi′′(s)2ds+ω3⋅∫0difi′′′(s)2ds)(20)
将最小化优化目标函数的过程转换为最小化QP公式的过程,OP公式参考:
{
min
1
2
⋅
x
T
⋅
H
⋅
x
+
f
T
⋅
x
s
t
L
B
≤
x
≤
U
B
A
e
q
x
≤
b
e
q
A
x
≥
b
(21)
{min12·xT·H·x+fT·xst LB≤x≤UBAeqx≤beqAx≥b\tag{21}
⎩
⎨
⎧min21⋅xT⋅H⋅x+fT⋅xst LB≤x≤UBAeqx≤beqAx≥b(21)
其中:
将优化目标函数转换为QP公式实例:
f
i
(
s
)
=
∣
1
s
s
2
s
3
s
4
s
5
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
f_i(s)=|1\space s\space s^2\space s^3 \space s^4\space s^5|·|ai0ai1ai2ai3ai4ai5|
fi(s)=∣1 s s2 s3 s4 s5∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣
f i ′ ( s ) = ∣ 0 1 2 s 3 s 2 4 s 3 5 s 4 ∣ ⋅ ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ f'_i(s)=|0\space 1\space 2s\space 3s^2 \space 4s^3\space 5s^4|·|ai0ai1ai2ai3ai4ai5| fi′(s)=∣0 1 2s 3s2 4s3 5s4∣⋅∣ ∣ai0ai1ai2ai3ai4ai5∣ ∣
f i ′ ( s ) 2 = ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ ⋅ ∣ 0 1 2 s 3 s 2 4 s 3 5 s 4 ∣ ⋅ ∣ 0 1 2 s 3 s 2 4 s 3 5 s 4 ∣ ⋅ ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ f'_i(s)^2=|a_{i0}\space a_{i1}\space a_{i2}\space a_{i3} \space a_{i4}\space a_{i5}|·|012s3s24s35s4|·|0 \space 1\space 2s \space 3s^2\space 4s^3\space 5s^4| ·|ai0ai1ai2ai3ai4ai5| fi′(s)2=∣ai0 ai1 ai2 ai3 ai4 ai5∣⋅∣ ∣012s3s24s35s4∣ ∣⋅∣0 1 2s 3s2 4s3 5s4∣⋅∣ ∣ai0ai1ai2ai3ai4ai5∣ ∣
∫ 0 d i f i ′ ( s ) 2 d s = ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ ⋅ ∫ 0 d i ∣ 0 1 2 s 3 s 2 4 s 3 5 s 4 ∣ ⋅ ∣ 0 1 2 s 3 s 2 4 s 3 5 s 4 ∣ d s ⋅ ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ \int_0^{d_i}f'_i(s)^2ds=|a_{i0}\space a_{i1}\space a_{i2}\space a_{i3} \space a_{i4}\space a_{i5}|·\int_{0}^{d_i}|012s3s24s35s4|·|0 \space 1\space 2s \space 3s^2\space 4s^3\space 5s^4|ds ·|ai0ai1ai2ai3ai4ai5| ∫0difi′(s)2ds=∣ai0 ai1 ai2 ai3 ai4 ai5∣⋅∫0di∣ ∣012s3s24s35s4∣ ∣⋅∣0 1 2s 3s2 4s3 5s4∣ds⋅∣ ∣ai0ai1ai2ai3ai4ai5∣ ∣
可得:
∫
0
d
i
f
i
′
(
s
)
2
d
s
=
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
⋅
∣
0
0
0
0
0
0
0
d
i
d
i
2
d
i
3
d
i
4
d
i
5
0
d
i
2
4
3
d
i
3
6
4
d
i
4
8
5
d
i
5
10
6
d
i
6
0
d
i
3
6
4
d
i
4
9
5
d
i
5
12
6
d
i
6
15
7
d
i
7
0
d
i
4
8
5
d
i
5
12
6
d
i
6
16
7
d
i
7
20
8
d
i
8
0
d
i
5
10
6
d
i
6
15
7
d
i
7
20
8
d
i
8
25
9
d
i
9
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
\int_{0}^{d_i}f'_i(s)^2ds=|a_{i0}\space a_{i1}\space a_{i2}\space a_{i3} \space a_{i4}\space a_{i5}|· |0000000did2id3id4id5i0d2i43d3i64d4i85d5i106d6i0d3i64d4i95d5i126d6i157d7i0d4i85d5i126d6i167d7i208d8i0d5i106d6i157d7i208d8i259d9i| ·|ai0ai1ai2ai3ai4ai5|
∫0difi′(s)2ds=∣ai0 ai1 ai2 ai3 ai4 ai5∣⋅∣
∣0000000didi2di3di4di50di234di346di458di5610di60di346di459di5612di6715di70di458di5612di6716di7820di80di5610di6715di7820di8925di9∣
∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣
得到一个6阶的矩阵表示5阶样条插值的衍生开销;
平滑过程应考虑的约束条件:初始点约束、终点约束、平滑点约束、点采样边界约束;
初始点约束:假设第一个点为: ( s 0 , l 0 ) (s_0,l_0) (s0,l0),其中 l 0 l_0 l0表示横向的偏移,对应的一阶、二阶导数为: l 0 ′ 、 l 0 ′ ′ l'_0、l''_0 l0′、l0′′;规划路径的起始点衍生开销可由 f i ( s ) 、 f i ′ ( s ) 、 f i ′ ′ ( s ) f_i(s)、f'_i(s)、f''_i(s) fi(s)、fi′(s)、fi′′(s)计算得到;
将上述约束转换为QP约束等式,使用等式: A e q x = b e q A_{eq}x=b_{eq} Aeqx=beq;
转换的具体步骤:
f
i
(
s
0
)
=
∣
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
=
l
0
f_i(s_0)= |1 s0 s20 s30 s40 s50|·|ai0ai1ai2ai3ai4ai5|=l_0
fi(s0)=∣
∣1 s0 s02 s03 s04 s05∣
∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣=l0
f i ′ ( s 0 ) = ∣ 0 1 2 s 0 3 s 0 2 4 s 0 3 5 s 0 4 ∣ ⋅ ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ = l 0 ′ f'_i(s_0)=|0\space 1\space 2s_0\space 3s_0^2 \space 4s_0^3\space 5s_0^4|·|ai0ai1ai2ai3ai4ai5|=l'_0 fi′(s0)=∣0 1 2s0 3s02 4s03 5s04∣⋅∣ ∣ai0ai1ai2ai3ai4ai5∣ ∣=l0′
f i ′ ′ ( s 0 ) = ∣ 0 0 2 3 × 2 s 0 4 × 3 s 0 2 5 × 4 s 0 3 ∣ ⋅ ∣ a i 0 a i 1 a i 2 a i 3 a i 4 a i 5 ∣ = l 0 ′ ′ f''_i(s_0)=|0\space 0\space 2\space 3\times2s_0\space 4\times3s_0^2 \space 5\times4s_0^3|·|ai0ai1ai2ai3ai4ai5|=l''_0 fi′′(s0)=∣0 0 2 3×2s0 4×3s02 5×4s03∣⋅∣ ∣ai0ai1ai2ai3ai4ai5∣ ∣=l0′′
其中: i i i是包含的样条段 s 0 s_0 s0的索引值;
终点约束:终点
(
s
e
,
l
e
)
(s_e,l_e)
(se,le)应当按照起始点计算方法生成约束条件,将起始点和终点组合在一起,得出约束条件为:
∣
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
0
1
2
s
0
3
s
0
2
4
s
0
3
5
s
0
4
0
0
2
6
s
0
12
s
0
2
20
s
0
3
1
s
e
s
e
2
s
e
3
s
e
4
s
e
5
0
1
2
s
e
3
s
e
2
4
s
e
3
5
s
e
4
0
0
2
6
s
e
12
s
e
2
20
s
e
3
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
=
∣
l
0
l
0
′
l
0
′
′
l
e
l
e
′
l
e
′
′
∣
|1s0s20s30s40s50012s03s204s305s400026s012s2020s301ses2es3es4es5e012se3s2e4s3e5s4e0026se12s2e20s3e| ·|ai0ai1ai2ai3ai4ai5|= |l0l′0l″0lel′el″e|
∣
∣100100s010se10s022s02se22se2s033s026s0se33se26ses044s0312s02se44se312se2s055s0420s03se55se420se3∣
∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣=∣
∣l0l0′l0′′lele′le′′∣
∣
平滑结点约束:该约束的目的是使样条的结点更加平滑;假设两个段 s e g k seg_k segk和 s e g k + 1 seg_{k+1} segk+1互相连接,且 s e q k seq_{k} seqk按结点的累计值 s s s为 s k s_k sk,计算约束的等式为: f k ( s k ) = f k + 1 ( s 0 ) f_k(s_k)=f_{k+1}(s_0) fk(sk)=fk+1(s0);
计算的具体步骤为:
∣
1
s
k
s
k
2
s
k
3
s
k
4
s
k
5
∣
⋅
∣
a
k
0
a
k
1
a
k
2
a
k
3
a
k
4
a
k
5
∣
=
∣
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
∣
⋅
∣
a
k
+
1
,
0
a
k
+
1
,
1
a
k
+
1
,
2
a
k
+
1
,
3
a
k
+
1
,
4
a
k
+
1
,
5
∣
|1 sk s2k s3k s4k s5k|· |ak0ak1ak2ak3ak4ak5|= |1 s0 s20 s30 s40 s50|· |ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5|
∣
∣1 sk sk2 sk3 sk4 sk5∣
∣⋅∣
∣ak0ak1ak2ak3ak4ak5∣
∣=∣
∣1 s0 s02 s03 s04 s05∣
∣⋅∣
∣ak+1,0ak+1,1ak+1,2ak+1,3ak+1,4ak+1,5∣
∣
同样,可以为下述等式计算约束等式:
f
k
′
(
s
k
)
=
f
k
+
1
′
(
s
0
)
,
f
k
′
′
(
s
k
)
=
f
k
+
1
′
′
(
s
0
)
,
f
k
′
′
′
(
s
k
)
=
f
k
+
1
′
′
′
(
s
0
)
f'_k(s_k)=f'_{k+1}(s_0),f''_k(s_k)=f''_{k+1}(s_0),f'''_k(s_k)=f'''_{k+1}(s_0)
fk′(sk)=fk+1′(s0),fk′′(sk)=fk+1′′(s0),fk′′′(sk)=fk+1′′′(s0)
点采样边界约束:在路径上均匀地取 m m m个点,检查这些点上的障碍物边界;将这些约束转换为QP约束不等式,使用不等式: A x ≥ b Ax≥b Ax≥b;
先基于道路宽度和周围的障碍物找到点
(
s
j
,
l
j
)
(s_j,l_j)
(sj,lj)的下边界
l
l
b
,
j
l_{lb,j}
llb,j,且
j
∈
[
0
,
m
]
j\in[0,m]
j∈[0,m];计算约束的不等式为:
∣
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
⋮
⋮
⋮
⋮
⋮
⋮
1
s
m
s
m
2
s
m
3
s
m
4
s
m
5
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
≥
∣
l
l
b
,
0
l
l
b
,
1
⋮
l
l
b
,
m
∣
|1s0s20s30s40s501s0s20s30s40s50⋮⋮⋮⋮⋮⋮1sms2ms3ms4ms5m|· |ai0ai1ai2ai3ai4ai5|≥ |llb,0llb,1⋮llb,m|
∣
∣11⋮1s0s0⋮sms02s02⋮sm2s03s03⋮sm3s04s04⋮sm4s05s05⋮sm5∣
∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣≥∣
∣llb,0llb,1⋮llb,m∣
∣
上边界约束:
∣
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
1
s
0
s
0
2
s
0
3
s
0
4
s
0
5
⋮
⋮
⋮
⋮
⋮
⋮
1
s
m
s
m
2
s
m
3
s
m
4
s
m
5
∣
⋅
∣
a
i
0
a
i
1
a
i
2
a
i
3
a
i
4
a
i
5
∣
≤
∣
l
u
b
,
0
l
u
b
,
1
⋮
l
u
b
,
m
∣
|1s0s20s30s40s501s0s20s30s40s50⋮⋮⋮⋮⋮⋮1sms2ms3ms4ms5m|· |ai0ai1ai2ai3ai4ai5|≤ |lub,0lub,1⋮lub,m|
∣
∣11⋮1s0s0⋮sms02s02⋮sm2s03s03⋮sm3s04s04⋮sm4s05s05⋮sm5∣
∣⋅∣
∣ai0ai1ai2ai3ai4ai5∣
∣≤∣
∣lub,0lub,1⋮lub,m∣
∣
确定上述约束条件后,最小化QP目标函数后得到的曲线即为平滑后的路径;
基于汽车运动学和动力学的轨迹优化

根据二自由度转向模型可得汽车稳态横摆角速度增益为:
w
r
δ
=
u
/
L
1
+
K
u
2
(22)
\frac{w_r}{\delta}=\frac{u/L}{1+Ku^2}\tag{22}
δwr=1+Ku2u/L(22)
稳态横摆角速度为:
w
r
=
u
δ
L
(
1
+
K
u
2
)
(23)
w_r=\frac{u\delta}{L(1+Ku^2)}\tag{23}
wr=L(1+Ku2)uδ(23)
其中:
K
=
m
L
2
(
a
k
2
−
b
k
1
)
K=\frac{m}{L^2}\left(\frac{a}{k_2}-\frac{b}{k_1}\right)
K=L2m(k2a−k1b),
m
m
m为目标汽车质量,
a
a
a为目标汽车质心距离前轴的距离,
b
b
b为目标汽车距离后轴的距离,
L
L
L为目标汽车轴距,即
a
a
a和
b
b
b之和,
k
1
k_1
k1为前轮侧偏刚度,
k
2
k_2
k2为后轮侧偏刚度,
u
u
u为目标汽车在车身坐标系下沿
x
x
x轴方向的速度分量,
δ
\delta
δ为前轮转角;
稳态时汽车转弯半径
R
R
R为:
R
=
u
w
r
=
L
(
1
+
K
u
2
)
δ
(24)
R=\frac{u}{w_r}=\frac{L(1+Ku^2)}{\delta}\tag{24}
R=wru=δL(1+Ku2)(24)
假设目标汽车当前时刻所处位置为
(
X
0
,
Y
0
)
(X_0,Y_0)
(X0,Y0),航向角为
θ
0
\theta_0
θ0,经过时间
t
t
t后,目标汽车所处位置为
(
X
t
,
Y
t
)
(X_t,Y_t)
(Xt,Yt),航向角为
θ
t
\theta_t
θt,则目标汽车航向角的变化量
θ
\theta
θ为:
θ
=
w
r
⋅
t
(25)
\theta=w_r·t\tag{25}
θ=wr⋅t(25)

图4.20中未来
t
t
t时间后目标汽车所处位置在
x
x
x轴和
y
y
y轴上的增量为
Δ
x
、
Δ
y
\Delta{x}、\Delta{y}
Δx、Δy,则:
Δ
x
=
R
sin
θ
=
L
(
1
+
K
u
2
)
δ
sin
(
u
δ
L
(
1
+
K
u
2
)
t
)
Δ
y
=
R
−
R
cos
θ
=
L
(
1
+
K
u
2
)
δ
(
1
−
cos
(
u
δ
L
(
1
+
K
u
2
)
t
)
)
(26)
Δx=Rsinθ=L(1+Ku2)δsin(uδL(1+Ku2)t)Δy=R−Rcosθ=L(1+Ku2)δ(1−cos(uδL(1+Ku2)t))\tag{26}
Δx=Rsinθ=δL(1+Ku2)sin(L(1+Ku2)uδt)Δy=R−Rcosθ=δL(1+Ku2)(1−cos(L(1+Ku2)uδt))(26)
在
t
t
t时刻后,目标汽车所处位置为:
{
X
t
=
X
0
+
Δ
x
Y
t
=
Y
0
+
Δ
y
(27)
{Xt=X0+ΔxYt=Y0+Δy\tag{27}
{Xt=X0+ΔxYt=Y0+Δy(27)
航向角为:
θ
t
=
θ
0
+
θ
(28)
\theta_t=\theta_0+\theta\tag{28}
θt=θ0+θ(28)
可积分的运动约束与几何约束在物理实质上没有区别,合称为完整约束;不可积的运动约束即不能化为几何约束的运动约束,在物理实质上不同于几何约束,称为非完整约束;
无人驾驶系统速度项无法通过积分变换转化为系统对应的空间位置,使得系统的控制变量个数少于系统位姿自由度,因此无人驾驶系统是一个典型的非完整性约束系统;由于无人驾驶系统是一个受非完整性约束的非线性系统,因此汽车进行路径规划的时候不仅仅要满足几何约束和运动学约束,还要满足汽车动力学约束;
在车速一定的情况下,汽车行驶轨迹的曲率与汽车的侧向加速度成正比,汽车在实际运动过程中产生的侧向加速度受多个因素限制,如:发动机动力水平、轮胎特性、地面附着系数等,且为了乘坐人员提供舒适的驾乘体验,侧向加速度不宜过大,且越小越好,因此侧向加速度
a
l
a
t
a_{lat}
alat存在如下约束:
∣
a
l
a
t
∣
≤
a
m
a
x
_
l
a
t
(29)
|a_{lat}|≤a_{max\_{lat}}\tag{29}
∣alat∣≤amax_lat(29)
其中:
a
m
a
x
_
l
a
t
a_{max\_lat}
amax_lat为最大侧向加速度;
a
l
a
t
=
u
2
R
=
u
2
δ
L
(
1
+
K
u
2
)
δ
=
a
l
a
t
L
(
1
+
K
u
2
)
u
2
−
a
m
a
x
_
l
a
t
L
(
1
+
K
u
2
)
u
2
≤
δ
≤
a
m
a
x
_
l
a
t
L
(
1
+
K
u
2
)
u
2
(30)
alat=u2R=u2δL(1+Ku2)δ=alatL(1+Ku2)u2−amax_latL(1+Ku2)u2≤δ≤amax_latL(1+Ku2)u2\tag{30}
alat=Ru2=L(1+Ku2)u2δδ=alatu2L(1+Ku2)−amax_latu2L(1+Ku2)≤δ≤amax_latu2L(1+Ku2)(30)
由上式可知,前轮转角与汽车侧向加速度正相关,前轮转角与方向盘转角的关系由转向系传动比决定;一定车速下方向盘转角越大,侧向加速度越大,侧向加速度的约束可以转化为一定车速下对方向盘转角范围的约束,同时由于受转向系统机械结构的限制,方向盘转角变化连续且有界;
根据上一时刻前轮的实际转角为参考,在其一定范围内均匀离散产生一组 ( n 个 ) (n个) (n个)转角,但要确保转角在要求的范围内,由这一组转角再推断经过 m m m个规划周期汽车的位置;
通过下式计算指标
w
w
w来评价每条局部路径与规划路径的接近程度:
w
=
∑
i
=
1
m
[
(
x
g
t
−
x
l
t
)
2
+
(
y
g
t
−
y
l
t
)
2
]
(31)
w=\sum_{i=1}^m[(x_g^t-x_l^t)^2+(y_g^t-y_l^t)^2]\tag{31}
w=i=1∑m[(xgt−xlt)2+(ygt−ylt)2](31)
然后从这一组
w
1
,
w
2
,
w
3
,
…
,
w
n
w_1,w_2,w_3,\dots,w_n
w1,w2,w3,…,wn中找出最小的
w
w
w所对应的局部路径,即为最优局部路径;