OBVP 即 optimal bundary value problem,即最优的BVP, BVP 问题其实就是解决 state sampled lattice planning 的基本操作方法。
如果,我们期望无人机从一个状态移动到另一个状态,即给定初始状态和终点状态,求解两个状态之间的局部轨迹,假设我们选取的目标函数(代价函数)是无人机三轴耗费的能量之和最少,如下式所示:
J Σ = ∑ k = 1 3 J k , J k = 1 T ∫ 0 T j k ( t ) 2 d t . \begin{aligned}J_{\Sigma}=\sum_{k=1}^{3}J_{k}, \quad \quad J_{k}=\frac{1}{T}\int_{0}^{T}j_{k}(t)^{2}dt.\end{aligned} JΣ=k=1∑3Jk,Jk=T1∫0Tjk(t)2dt.
状态量选取为三轴位置、三轴速度、三轴加速度、输入的控制变量选取为三轴jerk,如下式所示:
state: s k = ( p k , ν k , a k ) Input: u k = j k \text{state:}\quad s_k=(\begin{matrix}p_k,\nu_k,a_k\end{matrix})\quad\text{Input:}\quad u_k=j_k state:sk=(pk,νk,ak)Input:uk=jk
系统的模型或者说状态方程如下所示:
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)
我们可以利用庞特里亚金最小值原理来求解该最优控制问题,在使用庞特里亚金最小值原理的时候,我们需要定义一个协态 ,有多少状态量就有多少协态 λ = ( λ 1 , λ 2 , λ 3 . . . . . . ) \lambda=(\lambda_{1},\lambda_{2},\lambda_{3}......) λ=(λ1,λ2,λ3......)
下面先来介绍一下庞特里亚金最小值原理,其包含三个公式,第一个公式:协态量的导数是具有最优状态量和控制量的汉密尔顿函数的关于各个状态量的导数。
λ ˙ ( t ) = − ∇ s H ( s ∗ ( t ) , u ∗ ( t ) , λ ( t ) ) \dot{\lambda}(t)=-\nabla_sH\left(s^*(t),u^*(t),\lambda(t)\right) λ˙(t)=−∇sH(s∗(t),u∗(t),λ(t))
其中, s ∗ 、 u ∗ s^*、u^* s∗、u∗分别是最优的状态量和控制量
第二个公式是边界条件公式,如果边界条件不确定,则需要使用该公式。
λ ( T ) = − ∇ h ( s ∗ ( T ) ) \lambda(T)=-\nabla h(s^{*}(T)) λ(T)=−∇h(s∗(T))
h被定义成终末状态的函数或者说终末状态的惩罚项(离我们期望的最终状态差距越大,该项值越大)。这个公式代表终末状态时间T的时候,协态与终末状态中最优的自由量的梯度的和等于0.。
在上述的例子中,我们要求上面的问题中的终末状态的p,v,a均达到指定状态,那么这个公式就不需要使用了,因为终末状态没有任何自由度,如果说我们只希望终末状态的位置p达指定状态,v,a无所谓,那么我们可以根据这个公式写出两个边界条件来帮助我们确定待定系数。
第三个公式:最优的控制是具有最优状态的汉密尔顿函数的最小值
u ∗ ( t ) = arg min u ( t ) H ( s ∗ ( t ) , u ( t ) , λ ( t ) ) u^*(t)=\arg\min_{u(t)}H\left(s^*(t),u(t),\lambda(t)\right) u∗(t)=argu(t)minH(s∗(t),u(t),λ(t))
那么接下来,我们正式来看一下如何使用上面介绍的庞特里亚金最小值原理来求解本文开始处介绍的问题,我们需要定义一个Hamiltonian汉密尔顿函数,它由状态量s(就是本问题中的p,v,a), 控制量u(也就是我们这里的jerk),以及协态 λ \lambda λ 组成
H ( s , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 ν + λ 2 a + λ 3 j \begin{aligned} H(s,u,\lambda)& =\frac{1}{T}j^{2}+\lambda^{T}f_{s}(s,u) \\ &=\frac{1}{T}j^{2}+\lambda_{1}\nu+\lambda_{2}a+\lambda_{3}j \end{aligned} H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1ν+λ2a+λ3j
其中第一项中的 1 T j 2 \frac1Tj^{2} T1j2中的 j 2 j^{2} j2是目标函数 J k = 1 T ∫ 0 T j k ( t ) 2 d t . J_k=\frac1T\int_0^Tj_k(t)^2dt. Jk=T1∫0Tjk(t)2dt.的被积分项,若目标函数的被积分项改为其他项,则此处也要进行对应修改。
由庞特里亚金最小值原理的第一个公式,即将Hamiltonian汉密尔顿函数分别对状态变量p、v、a求偏导可得下式:
λ ˙ = − ∇ s H ( s ∗ , u ∗ , λ ) = ( 0 , − λ 1 , − λ 2 ) \dot\lambda=-\nabla_sH(s^*,u^*,\lambda)=(0,-\lambda_1,-\lambda_2) λ˙=−∇sH(s∗,u∗,λ)=(0,−λ1,−λ2)
我们得到了一个 λ \lambda λ的微分方程,然后我们对其积分获得 λ \lambda λ的表达式, λ 1 \lambda_1 λ1是关于p的导数, λ 2 \lambda_2 λ2是关于v的导数, λ 3 \lambda_3 λ3是关于a的导数,所以 λ 1 \lambda_1 λ1的导数是 λ 2 \lambda_2 λ2, λ 2 \lambda_2 λ2的导数是 λ 3 \lambda_3 λ3。所以很容易写出下面的表达式
λ ( 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γ
我们没有使用边界条件公式,那么如何来求解上面的系数α、β、γ呢?因为我们会指定初始状态和最终想要达到的目标状态,所以,我们可以利用 s ( 0 ) = ( p 0 , v 0 , a 0 ) s(0)=(p_0,v_0,a_0) s(0)=(p0,v0,a0)、 s ( T ) = ( p T , v T , a T ) s(T)=(p_T,v_T,a_T) s(T)=(pT,vT,aT)这两个条件来求解系数α、β、γ。
我们将这三个系数放在这里,先利用庞特里亚金最小值原理的第三个公式求最优的控制 u ∗ u^* u∗,前面我们已经得出 H ( s , u , λ ) = 1 T j 2 + λ 1 ν + λ 2 a + λ 3 j H(s,u,\lambda)=\frac1Tj^2+\lambda_1\nu+\lambda_2a+\lambda_3j H(s,u,λ)=T1j2+λ1ν+λ2a+λ3j,然而第三个公式中使用的是最优的 s ∗ s^* s∗,而不是s, s ∗ ( t ) = ( p ∗ , v ∗ , a ∗ ) s^*(t)=(p^*,v^*,a^*) s∗(t)=(p∗,v∗,a∗) 所以:
H ( s ∗ , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 v ∗ + λ 2 a ∗ + λ 3 j , \begin{aligned} H(s^*,u,\lambda)& =\frac{1}{T}j^{2}+\lambda^{T}f_{s}(s,u) \\ &=\frac1Tj^2+\lambda_1v^*+\lambda_2a^*+\lambda_3j, \end{aligned} H(s∗,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v∗+λ2a∗+λ3j,
我们先把待定系数α、β、γ视为已知量,利用 λ \lambda λ关于α、β、γ的表达式,进一步可以得到 λ \lambda λ的值,则上面的 H ( s ∗ , u , λ ) H(s^*,u,\lambda) H(s∗,u,λ)表达式中,仅含有唯一变量 j j j,则求下式的最小值
u ∗ ( t ) = j ∗ ( t ) = arg min u ( t ) H ( s ∗ ( t ) , u ( t ) , λ ( t ) ) = arg min u ( t ) 1 T j 2 + λ 1 v ∗ + λ 2 a ∗ + λ 3 j \begin{aligned} u^{*}(t)=j^{*}(t)& =\arg\min_{u(t)}H\left(s^*(t),u(t),\lambda(t)\right) \\ &=\arg\min_{u(t)}\frac1Tj^2+\lambda_1v^*+\lambda_2a^*+\lambda_3j \end{aligned} u∗(t)=j∗(t)=argu(t)minH(s∗(t),u(t),λ(t))=argu(t)minT1j2+λ1v∗+λ2a∗+λ3j
可以等价转换成,求一个 j j j使得下式最小
1 T j 2 + λ 3 j \begin{aligned}\frac{1}{T}j^2+\lambda_3j\end{aligned} T1j2+λ3j
即让上式对 j j j求导等于0,即
2 T j + λ 3 = 0 \begin{aligned}\frac{2}{T}j+\lambda_3=0\end{aligned} T2j+λ3=0
解得:
j ∗ = − T 2 λ 3 j^*=- \frac{T}{2}\lambda_3 j∗=−2Tλ3
将其代入到 H ( s ∗ ( t ) , u ( t ) , λ ( t ) ) H\left(s^*(t),u(t),\lambda(t)\right) H(s∗(t),u(t),λ(t))的表达式中,并且将 λ \lambda λ关于α、β、γ的表达式也代入后,可得:
u ∗ ( t ) = j ∗ ( t ) = arg min j ( t ) H ( s ∗ ( t ) , j ( t ) , λ ( t ) ) = 1 2 α t 2 + β t + γ \begin{aligned}u^*(t)&=j^*(t)=\arg\min_{j(t)}H(s^*(t),j(t),\lambda(t))\\&=\frac{1}{2}\alpha t^2+\beta t+\gamma\end{aligned} u∗(t)=j∗(t)=argj(t)minH(s∗(t),j(t),λ(t))=21αt2+βt+γ
至此,我们得到了仅含有待定系数 α 、 β 、 γ α、β、γ α、β、γ的最优输入量 u ∗ u^* u∗的表达式,由最优的输入量 u ∗ u^* u∗进行一次积分,可以得到最优状态量中的 a ∗ a^* a∗,再进行一次积分得到 v ∗ v^* v∗,再进行一次积分得到 p ∗ p^* p∗,则最优的状态量 s ∗ s^* s∗的表达式如下所示:
s ∗ ( t ) = [ α 120 t 5 + β 24 t 4 + γ 6 t 3 + a 0 2 t 2 + ν 0 t + p 0 α 24 t 4 + β 6 t 3 + γ 2 t 2 + a 0 t + ν 0 α 6 t 3 + β 2 t 2 + γ t + a 0 ] s^*(t)=\left[\begin{aligned}\frac{\alpha}{120}t^5+\frac{\beta}{24}t^4+\frac{\gamma}{6}t^3+\frac{a_0}{2}t^2+\nu_0t+p_0\\\frac{\alpha}{24}t^4+\frac{\beta}{6}t^3+\frac{\gamma}{2}t^2+a_0t+\nu_0\\\frac{\alpha}{6}t^3+\frac{\beta}{2}t^2+\gamma t+a_0\end{aligned}\right] s∗(t)= 120αt5+24βt4+6γt3+2a0t2+ν0t+p024αt4+6βt3+2γt2+a0t+ν06αt3+2βt2+γt+a0
将t=0代入到上式,即利用初始条件 s ( 0 ) = ( p 0 , v 0 , a 0 ) s(0)=(p_0,v_0,a_0) s(0)=(p0,v0,a0),可以确定上式中由于积分产生的系数 p 0 、 v 0 、 a 0 p_0、v_0、a_0 p0、v0、a0
再把t=T代入上式,利用终止状态的条件 s ( T ) = ( p f , v f , a f ) s(T)=(p_f,v_f,a_f) s(T)=(pf,vf,af),得到以下关系式
[ 1 120 T 5 1 24 T 4 1 6 T 3 1 24 T 4 1 6 T 3 1 2 T 2 1 6 T 3 1 2 T 2 T ] [ α β γ ] = [ Δ p Δ v Δ a ] \begin{bmatrix}\dfrac{1}{120}T^5&\dfrac{1}{24}T^4&\dfrac{1}{6}T^3\\\dfrac{1}{24}T^4&\dfrac{1}{6}T^3&\dfrac{1}{2}T^2\\\dfrac{1}{6}T^3&\dfrac{1}{2}T^2&T\end{bmatrix}\begin{bmatrix}\alpha\\\beta\\\gamma\end{bmatrix}=\begin{bmatrix}\Delta p\\\Delta v\\\Delta a\end{bmatrix} 1201T5241T461T3241T461T321T261T321T2T αβγ = ΔpΔvΔa
其中
[
Δ
p
Δ
v
Δ
a
]
=
[
p
f
−
p
0
−
ν
0
T
−
1
2
a
0
T
2
ν
f
−
ν
0
−
a
0
T
a
f
−
a
0
]
\begin{bmatrix}\Delta p\\\Delta v\\\Delta a\end{bmatrix}=\begin{bmatrix}p_f-p_0-\nu_0T-\dfrac{1}{2}a_0T^2\\\nu_f-\nu_0-a_0T\\a_f-a_0\\\end{bmatrix}
ΔpΔvΔa
=
pf−p0−ν0T−21a0T2νf−ν0−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 Δ ν Δ a ] \begin{bmatrix}\alpha\\\beta\\\gamma\end{bmatrix}=\dfrac{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\nu\\\Delta a\end{bmatrix} αβγ =T51 720−360T60T2−360T168T2−24T360T2−24T33T4 ΔpΔνΔa
将上述解得的待定系数 α 、 β 、 γ α、β、γ α、β、γ代入到上面推导出的 u ∗ ( t ) u^*(t) u∗(t)、 s ∗ ( t ) s^*(t) s∗(t)的表达式中,即可得到所需的最优输入量(控制量)和最优状态量,其仅与时间T有关了,为时间T的函数。
此外,得到最优的 u ∗ ( t ) u^*(t) u∗(t)后,由于 u ∗ ( t ) = j ∗ ( t ) u^*(t)=j^*(t) u∗(t)=j∗(t)、 J k = 1 T ∫ 0 T j k ( t ) 2 d t . J_{k}=\frac{1}{T}\int_{0}^{T}j_{k}(t)^{2}dt. Jk=T1∫0Tjk(t)2dt.,我们可以把最优的目标函数值也求出来(还需要将 α 、 β 、 γ α、β、γ α、β、γ代入,代入后下面 J J J的表达式就只跟T相关了):
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^2T^2+\frac{1}{3}\alpha\gamma T^2+\frac{1}{4}\alpha\beta T^3+\frac{1}{20}\alpha^2T^4 J=γ2+βγT+31β2T2+31αγT2+41αβT3+201α2T4
即,我们只需要给定一个时间T,所有的量都确定了,如果不给定T,则目标函数的最小值,只需要将 J J J对T求导等于0,解出最优的T,所有的量也可以确定了,至此,我们完整的解决了文章开头给出的问题。
在上面的例子中,我们默认机器人必须到达指定的终末状态,即当机器人到达指定的终末状态时,终末状态的惩罚项为0,否则为无穷大:
h ( s ( T ) ) = { 0 , i f s = s ( T ) ∞ , o t h e r w i s e h(s(T))=\begin{cases}0,&\quad if\quad s=s(T)\\\infty,&\quad otherwise\end{cases} h(s(T))={0,∞,ifs=s(T)otherwise
若,我们不指定所有的终末状态,比如只指定状态量p,而不指定v和a,即v和a是自由的,对于这些自由的状态,需要利用庞特里亚金最小值原理的第二个公式,添加边界条件
g i v e n s i ( T ) , i ∈ I given s_i(T), i\in I givensi(T),i∈I
上式中属于 i i i中的状态是指定的状态,不属于 i i i的状态是自由状态,我们需要构建如下的边界条件
λ j ( T ) = ∂ h ( s ∗ ( T ) ) ∂ s j , f o r j ≠ i \lambda_j(T)=\frac{\partial h(s^*(T))}{\partial s_j},forj\neq i λj(T)=∂sj∂h(s∗(T)),forj=i
参考资料:
1、深蓝学院-移动机器人运动规划
2、庞特里亚金最小值原理解最优控制问题