本文是学习了深蓝科技相关课程与阅读了相关文献后,整理所得。
论文为A computationally efficient motio primitive for quadrocopter trajectory generation。
Lattice Planner算法的根本目标就是从车辆当前的位置,结合地图、定位、障碍物等信息,通过采样并搜索出一条设定的目标 cost function 值最小的一组坐标。这就和BVP问题很相像了,都是知道起始状态信息和最终信息(部分也可以),求解出满足要求的多阶曲线。如下图所示,
初始时刻为t=0,终点时刻t=T,起点终点信息知道后,目标就是找到一条五次样条曲线使得车辆在满足约束条件和目标cost方程的情况下找到一条满足的路径。设最终的样条曲线方程为
x
(
t
)
=
c
5
t
5
+
c
4
t
4
+
c
3
t
3
+
c
2
t
2
+
c
1
t
+
c
0
x(t)=c_{5}t^{5}+c_{4}t^{4}+c_{3}t^{3}+c_{2}t^{2}+c_{1}t+c_{0}
x(t)=c5t5+c4t4+c3t3+c2t2+c1t+c0
给定的初始位置和终点位置分别为a和b,则有下式,
[
a
b
0
0
0
0
]
=
[
0
0
0
0
0
1
T
5
T
4
T
3
T
2
T
1
0
0
0
0
1
0
5
T
4
4
T
3
3
T
2
2
T
1
0
0
0
0
2
0
2
20
T
3
12
T
2
6
T
2
0
0
]
[
c
5
c
4
c
3
c
2
c
1
c
0
]
\begin{bmatrix} a \\ b \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{bmatrix}= \begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 1 \\ T^5 & T^4 & T^3 & T^2 & T & 1 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 5T^4 & 4T^3 & 3T^2 & 2T & 1 & 0 \\ 0 & 0 & 0 & 2 & 0 & 2 \\ 20T^3 & 12T^2 & 6T & 2 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} c_{5} \\ c_{4} \\ c_{3} \\ c_{2} \\ c_{1} \\ c_{0} \\ \end{bmatrix}
⎣⎢⎢⎢⎢⎢⎢⎡ab0000⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡0T505T4020T30T404T3012T20T303T206T0T202T220T1100110020⎦⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎡c5c4c3c2c1c0⎦⎥⎥⎥⎥⎥⎥⎤
可以看出上述方程可以有很多个解,但是在我们给定了一个目标方程后,满足目标的最优解就只有一个。
在OBVP方法中,我们已经给定了初始位置和终点位置,再加上一个目标方程,我们就可以得到一个可以求解出最有输入控制量的方程。
论文中的 objective function只考虑了jerk的平方(jerk是加速度的加速度),那么问题就只和车辆的位置、速度和加速度相关了,控制系统的输入为jerk,状态控制为位置,速度,加速度和jerk的函数,
Objective Function,使得jerk的平方和为最小值,
J
∑
=
∑
k
=
1
3
J
K
,
J
k
=
1
T
∫
0
T
j
k
(
t
)
2
d
t
J_{\sum}=\displaystyle\sum_{k=1}^3J_{K}, \\ \space \\ J_{k}=\frac{1}{T}\int^{T}_{0}j_{k}(t)^{2}dt
J∑=k=1∑3JK, Jk=T1∫0Tjk(t)2dt
State Function:
S
t
a
t
e
:
S
k
=
(
p
k
,
v
k
,
a
k
)
I
n
p
u
t
:
u
k
=
j
k
State:S_{k}=(p_{k},v_{k},a_{k}) \\ \space \\ Input: u_{k}=j_{k}
State:Sk=(pk,vk,ak) Input:uk=jk
SystemModel:
S
˙
k
=
f
s
(
s
k
,
u
k
)
=
(
v
k
,
a
k
,
j
k
)
\dot{S}_{k}=f_{s}(s_{k},u_{k})=(v_{k},a_{k},j_{k})
S˙k=fs(sk,uk)=(vk,ak,jk)
对于上述问题,论文中使用庞特里亚金最小值原理求解,此原理的基本内容为;
s
˙
∗
=
f
(
s
∗
(
t
)
,
u
∗
(
t
)
)
,
g
i
v
e
n
:
s
∗
(
t
)
=
s
(
0
)
λ
(
t
)
i
s
t
h
e
s
o
l
u
t
i
o
n
o
f
:
λ
˙
(
t
)
=
−
∇
s
H
(
s
∗
(
t
)
,
u
∗
(
t
)
,
λ
(
t
)
)
w
i
t
h
t
h
e
b
o
u
n
d
a
r
y
c
o
n
d
i
t
i
o
n
o
f
:
λ
(
T
)
=
−
∇
h
(
s
∗
(
T
)
)
a
n
d
t
h
e
o
p
t
i
m
a
l
c
o
n
t
r
o
l
i
n
p
u
t
i
s
:
u
∗
(
t
)
=
arg
min
u
(
t
)
H
(
s
∗
(
t
)
,
u
(
t
)
,
λ
(
t
)
)
\dot{s}^{*}=f(s^{*}(t),u^{*}(t)), given:s^{*}(t) = s(0) \\ \space \\ \lambda(t) \space is \space the \space solution \space of \space : \\ \dot{\lambda}(t)=-\nabla_{s}H(s^{*}(t),u^{*}(t),\lambda(t)) \\ \space \\ with \space the \space boundary \space condition \space of \space : \\ \lambda(T)=-\nabla h(s^{*}(T)) \\ \space \\ and \space the \space optimal \space control \space input \space is : \\ u^{*}(t)= \arg \underset{u(t)}{\min}\space H(s^{*}(t),u(t),\lambda(t))
s˙∗=f(s∗(t),u∗(t)),given:s∗(t)=s(0) λ(t) is the solution of :λ˙(t)=−∇sH(s∗(t),u∗(t),λ(t)) with the boundary condition of :λ(T)=−∇h(s∗(T)) and the optimal control input is:u∗(t)=argu(t)min H(s∗(t),u(t),λ(t))
这部分内容一眼看上去就挺懵,可以自己查一下相关资料,这里就不赘述了,下面说一下如何此原理是如何应用的。
第一步,先写出汉密尔顿(hamiltonian)函数
H
(
s
,
u
,
λ
)
=
g
(
s
,
u
)
+
λ
T
f
(
s
,
u
)
λ
=
(
λ
1
,
λ
2
,
λ
3
)
H(s,u,\lambda)=g(s,u)+\lambda^{T}f(s,u) \\ \lambda=(\lambda_{1},\lambda_{2},\lambda_{3})
H(s,u,λ)=g(s,u)+λTf(s,u)λ=(λ1,λ2,λ3)
式中,
g
g
g就是 objective function 中的 transition cost,
f
f
f 就是系统的状态方程(system model)。
那么,在本问题中,对应的 transition cost 就是
j
2
j^2
j2,
f
f
f是系统状态方程
v
,
a
,
j
v,a,j
v,a,j,则此时汉密尔顿方程为,
H
(
s
,
u
,
λ
)
=
1
T
j
2
+
λ
T
f
s
(
s
,
u
)
=
1
T
j
2
+
λ
1
v
+
λ
2
a
+
λ
3
j
H(s,u,\lambda)=\frac{1}{T}j^{2}+\lambda^{T}f_{s}(s,u)=\frac{1}{T}j^{2}+\lambda_{1}v+\lambda_{2}a+\lambda_{3}j
H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v+λ2a+λ3j
第二步,根据庞特里亚金最小值原理
λ
˙
(
t
)
=
−
∇
s
H
(
s
∗
(
t
)
,
u
∗
(
t
)
,
λ
(
t
)
)
\dot{\lambda}(t)=-\nabla_{s}H(s^{*}(t),u^{*}(t),\lambda(t))
λ˙(t)=−∇sH(s∗(t),u∗(t),λ(t))
可知
λ
(
t
)
\lambda(t)
λ(t)是对汉密尔顿方程
H
H
H分别求
p
,
v
,
a
p,v,a
p,v,a的偏导,
λ
˙
=
−
∇
s
H
(
s
∗
,
j
∗
,
λ
)
=
(
0
,
−
λ
1
,
−
λ
2
)
\dot{\lambda}=-\nabla_{s}H(s^{*},j^{*},\lambda)=(0,-\lambda_{1},-\lambda_{2})
λ˙=−∇sH(s∗,j∗,λ)=(0,−λ1,−λ2)
然后通过积分获
λ
\lambda
λ表达式(这里对系数做了一些处理,为了便于后续的计算更方便):
λ
(
t
)
=
1
T
[
−
2
α
2
α
t
+
2
β
−
α
t
2
−
2
β
t
−
2
γ
]
\lambda(t)=\frac{1}{T}\begin{bmatrix} -2\alpha \\ 2\alpha t+2\beta \\ -\alpha t^2 - 2\beta t -2\gamma \\ \end{bmatrix}
λ(t)=T1⎣⎡−2α2αt+2β−αt2−2βt−2γ⎦⎤
第三步,继续看一下最小值原理,最优控制输入为
u
∗
(
t
)
=
arg
min
u
(
t
)
H
(
S
∗
(
t
)
,
u
(
t
)
,
λ
(
t
)
)
u^{*}(t)= \arg \underset{u(t)}{\min}\space H(S^{*}(t),u(t),\lambda(t))
u∗(t)=argu(t)min H(S∗(t),u(t),λ(t))
在第二步中已经计算出 λ \lambda λ,而且其中 p , v , a p,v,a p,v,a 都是最优解,现在只需要计算一下 j j j的最优解就可以了。
计算一下一阶导数就能计算出
j
j
j的值了,再带入
H
H
H的表达式,则有,
u
∗
(
t
)
=
j
∗
(
t
)
=
arg
min
j
(
t
)
H
(
S
∗
(
t
)
,
u
(
t
)
,
λ
(
t
)
)
=
1
2
α
t
2
+
β
t
+
γ
u^{*}(t)=j^{*}(t)= \arg \underset{j(t)}{\min}\space H(S^{*}(t),u(t),\lambda(t))=\frac{1}{2}\alpha t^{2} + \beta t + \gamma
u∗(t)=j∗(t)=argj(t)min H(S∗(t),u(t),λ(t))=21αt2+βt+γ
对
j
j
j进行一次积分得到加速度
a
a
a,再进行一次积分得到速度
v
v
v,再进行一次积分得到位置信息
p
p
p,
s
∗
(
t
)
=
[
α
120
t
5
+
β
24
t
4
+
γ
6
t
3
+
a
0
2
t
2
+
v
0
t
+
p
0
α
24
t
4
+
β
6
t
3
+
γ
2
t
2
+
a
0
t
+
v
0
α
6
t
3
+
β
2
t
2
+
γ
t
+
a
0
]
s^{*}(t)=\begin{bmatrix} \frac{\alpha}{120}t^{5}+\frac{\beta}{24}t^{4}+\frac{\gamma}{6}t^{3}+\frac{a_0}{2}t^{2}+v_{0}t+p_{0} \\ \frac{\alpha}{24}t^{4}+\frac{\beta}{6}t^{3}+\frac{\gamma}{2}t^{2}+a_{0}t+v_{0} \\ \frac{\alpha}{6}t^{3}+\frac{\beta}{2}t^{2}+{\gamma}t+a_{0} \\ \end{bmatrix}
s∗(t)=⎣⎡120αt5+24βt4+6γt3+2a0t2+v0t+p024αt4+6βt3+2γt2+a0t+v06αt3+2βt2+γt+a0⎦⎤
稍加整理一下,有
[
1
120
T
5
1
24
T
4
1
6
T
3
1
124
T
4
1
6
T
3
1
2
T
2
1
6
T
3
1
2
T
2
T
]
[
α
β
γ
]
=
[
Δ
p
Δ
v
Δ
a
]
\begin{bmatrix} \frac{1}{120}T^{5} & \frac{1}{24}T^{4} & \frac{1}{6}T^{3} \\ \frac{1}{124}T^{4} & \frac{1}{6}T^{3} & \frac{1}{2}T^{2} \\ \frac{1}{6}T^{3} & \frac{1}{2}T^{2} & T \\ \end{bmatrix} \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix} = \begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix}
⎣⎡1201T51241T461T3241T461T321T261T321T2T⎦⎤⎣⎡αβγ⎦⎤=⎣⎡ΔpΔvΔa⎦⎤
式中,
[
Δ
p
Δ
v
Δ
a
]
=
[
p
f
−
p
0
−
v
0
T
−
1
2
a
0
T
2
v
f
−
v
0
−
a
0
T
a
f
−
a
0
]
\begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix}=\begin{bmatrix} p_{f}-p_{0}-v_{0}T-\frac{1}{2}a_{0}T^{2} \\ v_{f}-v_{0}-a_{0}T \\ a_{f}-a_{0} \\ \end{bmatrix}
⎣⎡ΔpΔvΔa⎦⎤=⎣⎡pf−p0−v0T−21a0T2vf−v0−a0Taf−a0⎦⎤
方程的解为,
[
α
β
γ
]
=
1
T
5
[
720
−
360
T
60
T
2
−
360
T
168
T
2
−
24
T
3
60
T
2
−
24
T
3
3
T
4
]
[
Δ
p
Δ
v
Δ
a
]
\begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 720 & -360T & 60T^{2} \\ -360T & 168T^{2} & -24T^{3} \\ 60T^{2} & -24T^{3} & 3T^{4} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta v \\ \Delta a \\ \end{bmatrix}
⎣⎡αβγ⎦⎤=T51⎣⎡720−360T60T2−360T168T2−24T360T2−24T33T4⎦⎤⎣⎡ΔpΔvΔa⎦⎤
最后,计算出
α
,
β
.
γ
\alpha,\beta.\gamma
α,β.γ后,代入到objection function,
J
=
γ
2
+
β
γ
T
+
1
3
β
2
T
2
+
1
3
α
γ
T
2
+
1
4
α
β
T
3
+
1
20
α
2
T
4
J=\gamma^{2}+\beta \gamma T +\frac{1}{3}\beta^{2}T^{2}+\frac{1}{3}\alpha\gamma T^{2}+\frac{1}{4}\alpha \beta T^{3} + \frac{1}{20}\alpha^{2}T^{4}
J=γ2+βγT+31β2T2+31αγT2+41αβT3+201α2T4
到目前为止,现在只剩下唯一一个未知数 T T T,根据实际项目中直接就可以得到 T T T的大小,代入上述公式就行。
拓展一下,上述中限制了的是终点位置的三个信息 p , v , a p,v,a p,v,a,如果并不是限制其中全部的信息呢?
这里直接上答案,具体过程可以自行搜索。
固定最终位置和速度:
[ α β γ ] = 1 T 5 [ 320 − 120 T 2 − 200 T 72 T 3 40 T 2 − 12 T 3 ] [ Δ p Δ v ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 320 & -120T^{2} \\ -200T & 72T^{3} \\ 40T^{2} & -12T^{3} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta v \\ \end{bmatrix} ⎣⎡αβγ⎦⎤=T51⎣⎡320−200T40T2−120T272T3−12T3⎦⎤[ΔpΔv]
固定最终位置和加速度:
[ α β γ ] = 1 2 T 5 [ 90 − 15 T 2 − 90 T 15 T 3 30 T 2 − 3 T 4 ] [ Δ p Δ a ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{2T^{5}} \begin{bmatrix} 90 & -15T^{2} \\ -90T & 15T^{3} \\ 30T^{2} & -3T^{4} \\ \end{bmatrix} \begin{bmatrix} \Delta p \\ \Delta a \\ \end{bmatrix} ⎣⎡αβγ⎦⎤=2T51⎣⎡90−90T30T2−15T215T3−3T4⎦⎤[ΔpΔa]
固定最终速度和加速度:
[ α β γ ] = 1 T 3 [ 0 0 − 12 6 T 6 T − 2 T 2 ] [ Δ v Δ a ] \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{3}} \begin{bmatrix} 0 & 0 \\ -12 & 6T \\ 6T & -2T^{2} \\ \end{bmatrix} \begin{bmatrix} \Delta v \\ \Delta a \\ \end{bmatrix} ⎣⎡αβγ⎦⎤=T31⎣⎡0−126T06T−2T2⎦⎤[ΔvΔa]
单纯的固定位置:
[ α β γ ] = 1 T 5 [ 20 − 20 T 10 T 2 ] Δ p \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{5}} \begin{bmatrix} 20 \\ -20T \\ 10T^{2} \\ \end{bmatrix} \Delta p ⎣⎡αβγ⎦⎤=T51⎣⎡20−20T10T2⎦⎤Δp
单纯的固定速度:
[ α β γ ] = 1 T 3 [ 0 − 3 3 T ] Δ v \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T^{3}} \begin{bmatrix} 0 \\ -3 \\ 3T \\ \end{bmatrix} \Delta v ⎣⎡αβγ⎦⎤=T31⎣⎡0−33T⎦⎤Δv
单纯的固定加速度:
[ α β γ ] = 1 T [ 0 0 1 ] Δ a \begin{bmatrix} \alpha \\ \beta \\ \gamma \\ \end{bmatrix}=\frac{1}{T} \begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix} \Delta a ⎣⎡αβγ⎦⎤=T1⎣⎡001⎦⎤Δa