本博客记录学习李柏老师所著的决策规划技术理论与实践中的关键知识,想以此作为自己学习的框架,方便自己日后回顾。
1 非结构化场景决策规划方法
场景:港口、停车场的泊车附近区域、偏僻道路、野外
特色:障碍物位置杂乱无章
决策规划 = 行为决策 + 轨迹规划
2 泊车轨迹规划任务建模
2.1 泊车轨迹规划任务
任务:要求生成一条时空轨线,使得车辆能够从给定起始姿态运动至既定的终止位姿。这条时空轨线应符合车辆运动规律,且避让环境中的障碍物。
2.2 基于最优控制问题模型的轨迹规划任务描述
首先需要明确的是,车辆不是质点,车辆存在的空间也不属于一维空间,车辆的运动规律更加复杂,环境限制约束的表现形式也更加丰富。但是,最优控制问题仍旧是描述轨迹规划任务最直接、最准确、最通用的方式。无人驾驶的最优控制问题由四部分组成:(1)车辆运动学约束(2)边值约束(3)碰撞躲避约束(4)代价函数多项式
如下所示OCP,求解下面命题可获得时间片段
[
0
,
t
f
]
[0,t_f]
[0,tf]上的控制信号
a
(
t
)
a(t)
a(t),使车辆在最短的时间内从状态
x
=
0
x=0
x=0迁移到
x
=
6
x=6
x=6。
m
i
n
i
m
i
z
e
J
=
t
f
s
.
t
.
d
x
(
t
)
d
t
=
v
(
t
)
d
v
(
t
)
d
t
=
a
(
t
)
∣
v
(
t
)
∣
≤
v
m
a
x
∣
a
(
t
)
∣
≤
a
m
a
x
0
≤
x
(
t
)
≤
6
∀
t
∈
[
0
,
t
f
]
minimize J=t_f \\ s.t. \ \frac{dx(t)}{dt}=v(t) \\ \frac{dv(t)}{dt}=a(t) \\ |v(t)|≤v_{max} \\ |a(t)|≤a_{max} \\ 0≤x(t)≤6 \\ \forall t∈[0,t_f]
minimizeJ=tfs.t. dtdx(t)=v(t)dtdv(t)=a(t)∣v(t)∣≤vmax∣a(t)∣≤amax0≤x(t)≤6∀t∈[0,tf]
2.3 车辆运动学约束
车辆运动学约束:描述车辆在二维平面上的运动能力。
在车速不高的情况下,二自由度模型能够符合实际需求,该模型遵循的假设:
(1)车辆行驶于平坦路面,忽略车辆在垂直于路面方向上的运动
(2)忽略车辆在行驶中受到的空气阻力以及地面侧向摩擦力
(3)车轮与地面始终保持良好的滚动接触
(4)车辆为刚体,忽略车身悬架结构的影响
以后轮为参考点的单车模型:
车辆在惯性坐标系X-Y中的运动过程受到以下微分方程组的制约:
d
d
t
[
x
(
t
)
y
(
t
)
v
(
t
)
ϕ
(
t
)
θ
(
t
)
]
=
[
v
(
t
)
⋅
cos
θ
(
t
)
v
(
t
)
⋅
sin
θ
(
t
)
a
(
t
)
ω
(
t
)
v
(
t
)
⋅
tan
ϕ
(
t
)
/
L
w
]
t
∈
[
0
,
t
f
]
.
\begin{array}{c} \frac{\mathrm{d}}{\mathrm{d} t}\left[\begin{array}{c} x(t) \\ y(t) \\ v(t) \\ \phi(t) \\ \theta(t) \end{array}\right]=\left[\begin{array}{c} v(t) \cdot \cos \theta(t) \\ v(t) \cdot \sin \theta(t) \\ a(t) \\ \omega(t) \\ v(t) \cdot \tan \phi(t) / L_{\mathrm{w}} \end{array}\right] \\ t \in\left[0, t_{f}\right] . \end{array}
dtd
x(t)y(t)v(t)ϕ(t)θ(t)
=
v(t)⋅cosθ(t)v(t)⋅sinθ(t)a(t)ω(t)v(t)⋅tanϕ(t)/Lw
t∈[0,tf].
车辆内在的机械特性对应着状态/控制变量的容许作用区间,一般包括:
−
Φ
max
⩽
ϕ
(
t
)
⩽
Φ
max
v
min
⩽
v
(
t
)
⩽
v
max
a
min
⩽
a
(
t
)
⩽
a
max
−
Ω
max
⩽
ω
(
t
)
⩽
Ω
max
,
t
∈
[
0
,
t
f
]
.
\begin{array}{c} -\Phi_{\max } \leqslant \phi(t) \leqslant \Phi_{\max } \\ v_{\min } \leqslant v(t) \leqslant v_{\max } \\ a_{\min } \leqslant a(t) \leqslant a_{\max } \\ -\Omega_{\max } \leqslant \omega(t) \leqslant \Omega_{\max }, t \in\left[0, t_{f}\right] . \end{array}
−Φmax⩽ϕ(t)⩽Φmaxvmin⩽v(t)⩽vmaxamin⩽a(t)⩽amax−Ωmax⩽ω(t)⩽Ωmax,t∈[0,tf].
对于行驶平稳性要求较高的轨迹规划任务,如需 a ( t ) a(t) a(t)变化平缓,应额外补入关于 a ( t ) a(t) a(t)的微分变量 j e r k ( t ) jerk(t) jerk(t),并对 j e r k ( t ) jerk(t) jerk(t)限幅。
轨迹规划任务的本质是寻找一个非线性系统的某一组控制变量 u ( t ) = [ a ( t ) , w ( t ) ] u(t)=[a(t),w(t)] u(t)=[a(t),w(t)],使得系统在受限条件下实现状态的最优迁移——最优控制问题正是精准、直接描述此类任务的方式
2.4 边值约束
在车辆起始时刻t = 0,应指定车辆所处的运动状态,即
[
v
(
0
)
,
ϕ
(
0
)
,
a
(
0
)
,
ω
(
0
)
,
x
(
0
)
,
y
(
0
)
,
θ
(
0
)
]
=
[
p
1
,
p
2
,
p
3
,
p
4
,
p
5
,
p
6
,
p
7
]
[v(0), \phi(0), a(0), \omega(0), x(0), y(0), \theta(0)]=\left[p_{1}, p_{2}, p_{3}, p_{4}, p_{5}, p_{6}, p_{7}\right]
[v(0),ϕ(0),a(0),ω(0),x(0),y(0),θ(0)]=[p1,p2,p3,p4,p5,p6,p7],其中
[
p
1
,
p
2
,
p
3
,
p
4
,
p
5
,
p
6
,
p
7
]
[p_{1}, p_{2}, p_{3}, p_{4}, p_{5}, p_{6}, p_{7}]
[p1,p2,p3,p4,p5,p6,p7]对应车载传感器记录/推算的当前时刻t=0的运动状态客观实际情况。
在车辆运动的终止时刻
t
f
t_f
tf,也要对车辆运动状态进行限制。在泊车任务中,一般要求车辆最终稳定地停泊下来。
v
(
t
f
)
=
a
(
t
f
)
=
w
(
t
f
)
=
0
v(t_f)=a(t_f)=w(t_f)=0
v(tf)=a(tf)=w(tf)=0,如果明确要求车辆的前轮在终止时刻回正,应施加约束
Φ
(
t
f
)
=
0
\Phi(t_f)=0
Φ(tf)=0。在工程实践中最常见的终止时刻状态约束是要求车辆停泊在某一矩形区域内,相当于间接对
[
x
(
t
f
)
,
y
(
t
f
)
,
θ
(
t
f
)
]
[x(t_f),y(t_f),\theta(t_f)]
[x(tf),y(tf),θ(tf)]提出了限制要求。
① 首先根据后轴中心点(x,y)与各个顶点的相对位置得到各顶点坐标。
A
=
(
A
x
,
A
y
)
=
[
x
+
(
L
w
+
L
f
)
⋅
cos
θ
−
0.5
L
b
⋅
sin
θ
,
y
+
(
L
w
+
L
f
)
⋅
sin
θ
+
0.5
L
b
⋅
cos
θ
]
]
B
=
(
B
x
,
B
y
)
=
[
x
+
(
L
w
+
L
f
)
⋅
cos
θ
+
0.5
L
b
⋅
sin
θ
,
y
+
(
L
w
+
L
f
)
⋅
sin
θ
−
0.5
L
b
⋅
cos
θ
]
C
=
(
C
x
,
C
y
)
=
(
x
−
L
r
⋅
cos
θ
+
0.5
L
b
⋅
sin
θ
,
y
−
L
r
⋅
sin
θ
−
0.5
L
b
⋅
cos
θ
)
D
=
(
D
x
,
D
y
)
=
(
x
−
L
r
⋅
cos
θ
−
0.5
L
b
⋅
sin
θ
,
y
−
L
r
⋅
sin
θ
+
0.5
L
b
⋅
cos
θ
)
\begin{array}{l} \left.A=\left(A_{x}, A_{y}\right)=\left[x+\left(L_{\mathrm{w}}+L_{\mathrm{f}}\right) \cdot \cos \theta-0.5 L_{\mathrm{b}} \cdot \sin \theta, y+\left(L_{\mathrm{w}}+L_{\mathrm{f}}\right) \cdot \sin \theta+0.5 L_{\mathrm{b}} \cdot \cos \theta\right]\right]\\ \begin{array}{c} B=\left(B_{x}, B_{y}\right)=\left[x+\left(L_{\mathrm{w}}+L_{\mathrm{f}}\right) \cdot \cos \theta+0.5 L_{\mathrm{b}} \cdot \sin \theta, y+\left(L_{\mathrm{w}}+L_{\mathrm{f}}\right) \cdot \sin \theta-0.5 L_{\mathrm{b}} \cdot \cos \theta\right] \\ C=\left(C_{x}, C_{y}\right)=\left(x-L_{\mathrm{r}} \cdot \cos \theta+0.5 L_{\mathrm{b}} \cdot \sin \theta, y-L_{\mathrm{r}} \cdot \sin \theta-0.5 L_{\mathrm{b}} \cdot \cos \theta\right) \\ D=\left(D_{x}, D_{y}\right)=\left(x-L_{\mathrm{r}} \cdot \cos \theta-0.5 L_{\mathrm{b}} \cdot \sin \theta, y-L_{\mathrm{r}} \cdot \sin \theta+0.5 L_{\mathrm{b}} \cdot \cos \theta\right) \end{array} \end{array}
A=(Ax,Ay)=[x+(Lw+Lf)⋅cosθ−0.5Lb⋅sinθ,y+(Lw+Lf)⋅sinθ+0.5Lb⋅cosθ]]B=(Bx,By)=[x+(Lw+Lf)⋅cosθ+0.5Lb⋅sinθ,y+(Lw+Lf)⋅sinθ−0.5Lb⋅cosθ]C=(Cx,Cy)=(x−Lr⋅cosθ+0.5Lb⋅sinθ,y−Lr⋅sinθ−0.5Lb⋅cosθ)D=(Dx,Dy)=(x−Lr⋅cosθ−0.5Lb⋅sinθ,y−Lr⋅sinθ+0.5Lb⋅cosθ)
② 建立描述点在矩形内部的一般条件。某点P=(x,y)处于某一矩形内部的约束条件可以一般性地写成如下形式:
{
a
⋅
x
+
b
⋅
y
+
c
1
<
0
−
a
⋅
x
−
b
⋅
y
−
c
2
<
0
m
⋅
x
+
n
⋅
y
+
q
1
<
0
−
m
⋅
x
−
n
⋅
y
−
q
2
<
0
\left\{\begin{array}{c} a \cdot x+b \cdot y+c_{1}<0 \\ -a \cdot x-b \cdot y-c_{2}<0 \\ m \cdot x+n \cdot y+q_{1}<0 \\ -m \cdot x-n \cdot y-q_{2}<0 \end{array}\right.
⎩
⎨
⎧a⋅x+b⋅y+c1<0−a⋅x−b⋅y−c2<0m⋅x+n⋅y+q1<0−m⋅x−n⋅y−q2<0
在给定矩形区域
P
1
P
2
P
3
P
4
P_1P_2P_3P_4
P1P2P3P4顶点坐标的前提下,将终止时刻的区域限制约束建立为:
PointInRect
(
χ
,
P
1
P
2
P
3
P
4
)
,
∀
χ
∈
{
A
(
t
f
)
,
B
(
t
f
)
,
C
(
t
f
)
,
D
(
t
f
)
}
.
\text { PointInRect }\left(\chi, P_{1} P_{2} P_{3} P_{4}\right), \forall \chi \in\left\{A\left(t_{f}\right), B\left(t_{f}\right), C\left(t_{f}\right), D\left(t_{f}\right)\right\} \text {. }
PointInRect (χ,P1P2P3P4),∀χ∈{A(tf),B(tf),C(tf),D(tf)}.
该式是针对状态变量
x
(
t
f
)
,
y
(
t
f
)
,
θ
(
t
f
)
x(t_f),y(t_f),\theta(t_f)
x(tf),y(tf),θ(tf)的非凸非线性约束。注意不要简单地将边值约束
θ
(
t
f
)
=
θ
f
\theta(t_f)=\theta_f
θ(tf)=θf,在稍微复杂的泊车场景中,不能提前预判车辆绕行多少圈才能抵达终止位姿,因此针对
θ
(
t
f
)
=
0
\theta(t_f)=0
θ(tf)=0的限制实际上是
θ
(
t
f
)
=
2
k
π
,
k
∈
Z
\theta(t_f)=2k\pi,k∈Z
θ(tf)=2kπ,k∈Z,为了避免在约束条件中混入整数变量k,将姿态角度的终止时刻点约束写成:
sin
[
θ
(
t
f
)
]
=
sin
θ
f
cos
[
θ
(
t
f
)
]
=
cos
θ
f
\begin{array}{l} \sin \left[\theta\left(t_{f}\right)\right]=\sin \theta_{\mathrm{f}} \\ \cos \left[\theta\left(t_{f}\right)\right]=\cos \theta_{\mathrm{f}} \end{array}
sin[θ(tf)]=sinθfcos[θ(tf)]=cosθf
2.5 碰撞躲避约束
碰撞躲避约束要求车辆在整个运动时域避免与环境中任何静止、移动障碍物发生碰撞。
(1)障碍物的表达形式:凸多边形,即激光雷达反射点云的最小凸包。
(2)某点处于某一凸多边形外部的约束建模,考虑描述点
P
=
(
x
,
y
)
P=(x,y)
P=(x,y)位于具有n个顶点的凸多边形
Q
1
,
Q
2
,
.
.
.
,
Q
n
Q_1,Q_2,...,Q_n
Q1,Q2,...,Qn外部。
if-else 不适合构建通用的约束条件。一旦在最优控制问题中显式地掺入if-else语句,实质上相当于引入了函数导数不连续的隐患,为最优控制问题求解带来巨大困难。
三角面积法:将点P与凸多边形每两个相邻顶点分别组成三角形,并将这些三角形面积叠加,如果面积之和大于凸多边形,则P处于凸多边形外部,否则在轮廓或内部。点P处于凸多边形
Q
1
,
Q
2
,
.
.
.
,
Q
n
Q_1,Q_2,...,Q_n
Q1,Q2,...,Qn外部的约束条件如下:
S
△
P
Q
n
Q
1
+
∑
k
=
1
n
−
1
S
△
P
Q
k
Q
k
+
1
>
S
□
Q
1
Q
2
…
Q
n
,
S_{\triangle P Q_{\mathrm{n}} Q_{1}}+\sum_{k=1}^{n-1} S_{\triangle P Q_{k} Q_{k+1}}>S_{\square Q_{1} Q_{2} \ldots Q_{n}},
S△PQnQ1+k=1∑n−1S△PQkQk+1>S□Q1Q2…Qn,
S
△
P
Q
k
Q
k
+
1
=
1
2
⋅
∣
x
⋅
y
Q
k
+
x
Q
k
⋅
y
Q
(
k
+
1
)
+
x
Q
(
k
+
1
)
⋅
y
−
x
⋅
y
Q
(
k
+
1
)
−
x
Q
k
⋅
y
−
x
Q
(
k
+
1
)
⋅
y
Q
k
∣
.
S_{\triangle P Q_{k} Q_{k+1}}=\frac{1}{2} \cdot\left|x \cdot y_{Q k}+x_{Q k} \cdot y_{Q(k+1)}+x_{Q(k+1)} \cdot y-x \cdot y_{Q(k+1)}-x_{Q k} \cdot y-x_{Q(k+1)} \cdot y_{Q k}\right|.
S△PQkQk+1=21⋅
x⋅yQk+xQk⋅yQ(k+1)+xQ(k+1)⋅y−x⋅yQ(k+1)−xQk⋅y−xQ(k+1)⋅yQk
.
碰撞躲避约束规模庞大、复杂程度高,包含大量对三角函数求取绝对值并将绝对值项加和的复杂操作,具有强非凸非线性,绝对值运算也属于if-else条件建模语句,不利于最优控制问题的求解。事实上,多边形之间的碰撞躲避约束无可避免地会引入if-else语句,因为多边形轮廓在顶点处均有突变。
2.6 代价函数
从符合硬性约束的众多轨迹中选出最令人满意的那一条作为轨迹规划的最终结果。这种筛选轨迹的指标式就是代价函数。
① 期待泊车尽早完成:
J
1
=
t
f
J_1=t_f
J1=tf
② 期待泊车车速尽量按照三角函数波动:
J
2
=
∫
0
t
f
[
v
(
t
)
−
sin
(
t
)
]
2
⋅
d
t
.
J_{2}=\int_{0}^{t_{f}}[v(t)-\sin (t)]^{2} \cdot \mathrm{d} t .
J2=∫0tf[v(t)−sin(t)]2⋅dt.
③ 期待泊车车速变化尽量小:
J
3
=
∫
0
t
f
[
a
(
t
)
−
0
]
2
⋅
d
t
.
J_{3}=\int_{0}^{t_{f}}[a(t)-0]^{2} \cdot \mathrm{d} t .
J3=∫0tf[a(t)−0]2⋅dt.
④ 期待车辆前轮在整个泊车运动过程中转动速度缓慢:
J
4
=
∫
0
t
f
[
ω
(
t
)
−
0
]
2
⋅
d
t
.
J_{4}=\int_{0}^{t_{f}}[\omega(t)-0]^{2} \cdot \mathrm{d} t .
J4=∫0tf[ω(t)−0]2⋅dt.
实际求解的轨迹会在满足硬性约束的前提下尽量将其最小化
⑤ 期待车辆按照某一既定路径行驶:
J
5
=
∫
0
t
f
{
[
x
(
t
)
−
t
)
2
+
(
y
(
t
)
−
sin
t
]
2
}
⋅
d
t
.
J_{5}=\int_{0}^{t_{f}}\left\{[x(t)-t)^{2}+(y(t)-\sin t]^{2}\right\} \cdot \mathrm{d} t .
J5=∫0tf{[x(t)−t)2+(y(t)−sint]2}⋅dt.
⑥ 期待车辆在严格避障基础上进一步做到适当远离障碍物,避免因闭环控制偏差、外界扰动等因素导致碰撞。
将代价函数多项式加权汇总,得到完整的代价函数:
J
=
w
1
∗
J
1
+
w
2
∗
J
2
+
.
.
.
+
w
6
∗
J
6
J=w_1*J_1+w_2*J_2+...+w_6*J_6
J=w1∗J1+w2∗J2+...+w6∗J6
较大的权重意味着在整个代价函数中对该部分的最小化效用更加重视。
完整的最优控制问题:
min J:
s
.
t
.
车辆运动学约束:
d
d
t
[
x
(
t
)
y
(
t
)
v
(
t
)
ϕ
(
t
)
θ
(
t
)
]
=
[
v
(
t
)
⋅
cos
θ
(
t
)
v
(
t
)
⋅
sin
θ
(
t
)
a
(
t
)
ω
(
t
)
v
(
t
)
⋅
tan
ϕ
(
t
)
/
L
w
]
t
∈
[
0
,
t
f
]
.
−
Φ
max
⩽
ϕ
(
t
)
⩽
Φ
max
v
min
⩽
v
(
t
)
⩽
v
max
a
min
⩽
a
(
t
)
⩽
a
max
−
Ω
max
⩽
ω
(
t
)
⩽
Ω
max
,
t
∈
[
0
,
t
f
]
.
边值约束:
[
v
(
0
)
,
ϕ
(
0
)
,
a
(
0
)
,
ω
(
0
)
,
x
(
0
)
,
y
(
0
)
,
θ
(
0
)
]
=
[
p
1
,
p
2
,
p
3
,
p
4
,
p
5
,
p
6
,
p
7
]
v
(
t
f
)
=
a
(
t
f
)
=
w
(
t
f
)
=
0
Φ
(
t
f
)
=
0
PointInRect
(
χ
,
P
1
P
2
P
3
P
4
)
,
∀
χ
∈
{
A
(
t
f
)
,
B
(
t
f
)
,
C
(
t
f
)
,
D
(
t
f
)
}
.
碰撞躲避约束:
S
△
P
Q
n
Q
1
+
∑
k
=
1
n
−
1
S
△
P
Q
k
Q
k
+
1
>
S
□
Q
1
Q
2
…
Q
n
s.t. 车辆运动学约束:\begin{array}{c} \frac{\mathrm{d}}{\mathrm{d} t}\left[\begin{array}{c} x(t) \\ y(t) \\ v(t) \\ \phi(t) \\ \theta(t) \end{array}\right]=\left[\begin{array}{c} v(t) \cdot \cos \theta(t) \\ v(t) \cdot \sin \theta(t) \\ a(t) \\ \omega(t) \\ v(t) \cdot \tan \phi(t) / L_{\mathrm{w}} \end{array}\right] \\ t \in\left[0, t_{f}\right] . \end{array} \\\begin{array}{c} -\Phi_{\max } \leqslant \phi(t) \leqslant \Phi_{\max } \\ v_{\min } \leqslant v(t) \leqslant v_{\max } \\ a_{\min } \leqslant a(t) \leqslant a_{\max } \\ -\Omega_{\max } \leqslant \omega(t) \leqslant \Omega_{\max }, t \in\left[0, t_{f}\right] . \end{array} \\ 边值约束:[v(0), \phi(0), a(0), \omega(0), x(0), y(0), \theta(0)]=\left[p_{1}, p_{2}, p_{3}, p_{4}, p_{5}, p_{6}, p_{7}\right] \\ v(t_f)=a(t_f)=w(t_f)=0 \\ \Phi(t_f)=0 \\ \text { PointInRect }\left(\chi, P_{1} P_{2} P_{3} P_{4}\right), \forall \chi \in\left\{A\left(t_{f}\right), B\left(t_{f}\right), C\left(t_{f}\right), D\left(t_{f}\right)\right\} \text {. } \\碰撞躲避约束:S_{\triangle P Q_{\mathrm{n}} Q_{1}}+\sum_{k=1}^{n-1} S_{\triangle P Q_{k} Q_{k+1}}>S_{\square Q_{1} Q_{2} \ldots Q_{n}}
s.t.车辆运动学约束:dtd
x(t)y(t)v(t)ϕ(t)θ(t)
=
v(t)⋅cosθ(t)v(t)⋅sinθ(t)a(t)ω(t)v(t)⋅tanϕ(t)/Lw
t∈[0,tf].−Φmax⩽ϕ(t)⩽Φmaxvmin⩽v(t)⩽vmaxamin⩽a(t)⩽amax−Ωmax⩽ω(t)⩽Ωmax,t∈[0,tf].边值约束:[v(0),ϕ(0),a(0),ω(0),x(0),y(0),θ(0)]=[p1,p2,p3,p4,p5,p6,p7]v(tf)=a(tf)=w(tf)=0Φ(tf)=0 PointInRect (χ,P1P2P3P4),∀χ∈{A(tf),B(tf),C(tf),D(tf)}. 碰撞躲避约束:S△PQnQ1+k=1∑n−1S△PQkQk+1>S□Q1Q2…Qn