无人船 | 图解基于LQR控制的路径跟踪算法(以全驱动无人艇WAMV为例)
目录
- 1 最优控制线性二次型问题
- 2 LQR的价值迭代推导
- 3 基于全驱动无人船动力学的LQR
- 4 跟踪效果分析
1 最优控制线性二次型问题
最优控制理论是一种数学和工程领域的理论,旨在寻找如何使系统在给定约束条件下达到最佳性能的方法。它的基本思想是通过选择合适的控制输入,以最小化或最大化某个性能指标来优化系统的行为。其中,系统的动态行为通常用状态方程描述,状态表示系统在某一时刻的内部状态。状态空间表示将系统的状态和控制输入表示为向量,通常用微分方程或差分方程来描述系统的演化。在最优控制理论中,会设置代价函数或者目标函数,用来衡量系统行为的好坏的函数。性能指标可以是各种形式,如最小化路径长度、最小化能量消耗、最大化系统稳定性等。最优控制理论在许多领域都有广泛的应用,包括航空航天、机器人学、经济学、生态学等。
若系统动力学特性可以用一组线性微分方程表示,且性能指标为状态变量和控制变量的二次型函数,则此类最优控制问题称为线性二次型问题。线性二次调节器(Linear Quadratic Regulator, LQR)是求解线性二次型问题常用的求解方法之一,其假设系统零输入且期望状态为零。
如图所示的全状态反馈控制系统。设控制误差 x k = z k − z k ∗ \boldsymbol{x}_k=\boldsymbol{z}_k-\boldsymbol{z}_{k}^{*} xk=zk−zk∗,其中 z k \boldsymbol{z}_k zk、 z k ∗ \boldsymbol{z}_{k}^{*} zk∗分别是第 k k k个控制时间步的实际状态和期望状态,则全反馈控制律由误差驱动
v k = v k ∗ − K x k ⇔ u = v − v ∗ u k = − K x k \boldsymbol{v}_k=\boldsymbol{v}_{k}^{*}-\boldsymbol{Kx}_k\xLeftrightarrow{\boldsymbol{u}=\boldsymbol{v}-\boldsymbol{v}^*}\boldsymbol{u}_k=-\boldsymbol{Kx}_k vk=vk∗−Kxku=v−v∗ uk=−Kxk
上式表明可以通过选取状态变量和输入变量,使系统等效为零输入(跟踪期望输入)且期望状态为零(消除状态误差),满足应用LQR进行最优控制的条件。定义代价函数
J = ∑ k = 0 N ( x k T Q x k + u k T R u k ) J=\sum_{k=0}^N{\left( \boldsymbol{x}_{k}^{T}\boldsymbol{Qx}_k+\boldsymbol{u}_{k}^{T}\boldsymbol{Ru}_k \right)} J=k=0∑N(xkTQxk+ukTRuk)
其中 Q \boldsymbol{Q} Q与 R \boldsymbol{R} R是用户设定的半正定矩阵,前者衡量了系统状态向期望轨迹的收敛速度,后者衡量了系统能量消耗的相对大小,二者互相制约——希望系统快速收敛往往需要加强控制力度,导致能量耗散。因此, 与 需要结合具体场景进行调节。
2 LQR的价值迭代推导
针对 J J J进行优化,引入价值迭代策略,价值迭代的理论基础请看Pytorch深度强化学习1-4:策略改进定理与贝尔曼最优方程详细推导
J k ( x k , u k ) = min u k [ x k T Q x k + u k T R u k + J k + 1 ( x k + 1 ) ] J_k\left( \boldsymbol{x}_k,\boldsymbol{u}_k \right) =\underset{\boldsymbol{u}_k}{\min}\left[ \boldsymbol{x}_{k}^{T}\boldsymbol{Qx}_k+\boldsymbol{u}_{k}^{T}\boldsymbol{Ru}_k+J_{k+1}\left( \boldsymbol{x}_{k+1} \right) \right] Jk(xk,uk)=ukmin[xkTQxk+ukTRuk+Jk+1(xk+1)]
即第 k k k步到终端的代价等于当前步的代价与第 k + 1 k+1 k+1步到终端的代价之和。根据 J J J的定义,其一定能表示成二次型 J k = x k T P k x k J_k=\boldsymbol{x}_{k}^{T}\boldsymbol{P}_k\boldsymbol{x}_k Jk=xkTPkxk,对于优化问题 u k = a r g min u k J k ( x k , u k ) \boldsymbol{u}_k=\mathrm{arg}\min _{\boldsymbol{u}_k}J_k\left( \boldsymbol{x}_k,\boldsymbol{u}_k \right) uk=argminukJk(xk,uk),令
∂ J k ( x k , u k ) ∂ u k = ∂ ∂ u k ( x k T P k x k + u k T R u k + J k + 1 ( A x k + B u k ) ) = ∂ ∂ u k ( u k T R u k + ( A x k + B u k ) T P k + 1 ( A x k + B u k ) ) = 2 ( R + B T P k + 1 B ) u k + 2 B T P k + 1 A x k = 0 \begin{aligned}\frac{\partial J_k\left( \boldsymbol{x}_k,\boldsymbol{u}_k \right)}{\partial \boldsymbol{u}_k}&=\frac{\partial}{\partial \boldsymbol{u}_k}\left( \boldsymbol{x}_{k}^{T}\boldsymbol{P}_k\boldsymbol{x}_k+\boldsymbol{u}_{k}^{T}\boldsymbol{Ru}_k+J_{k+1}\left( \boldsymbol{Ax}_k+\boldsymbol{Bu}_k \right) \right) \\&=\frac{\partial}{\partial \boldsymbol{u}_k}\left( \boldsymbol{u}_{k}^{T}\boldsymbol{Ru}_k+\left( \boldsymbol{Ax}_k+\boldsymbol{Bu}_k \right) ^T\boldsymbol{P}_{k+1}\left( \boldsymbol{Ax}_k+\boldsymbol{Bu}_k \right) \right) \\&=2\left( \boldsymbol{R}+\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{B} \right) \boldsymbol{u}_k+2\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{Ax}_k\\&=0\end{aligned} ∂uk∂Jk(xk,uk)=∂uk∂(xkTPkxk+ukTRuk+Jk+1(Axk+Buk))=∂uk∂(ukTRuk+(Axk+Buk)TPk+1(Axk+Buk))=2(R+BTPk+1B)uk+2BTPk+1Axk=0
则 u k ∗ = − ( R + B T P k + 1 B ) − 1 B T P k + 1 A x k \boldsymbol{u}_{k}^{*}=-\left( \boldsymbol{R}+\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{B} \right) ^{-1}\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{Ax}_k uk∗=−(R+BTPk+1B)−1BTPk+1Axk,对比 u k = − K x k \boldsymbol{u}_k=-\boldsymbol{Kx}_k uk=−Kxk可得
K k = ( R + B T P k + 1 B ) − 1 B T P k + 1 A \boldsymbol{K}_k=\left( \boldsymbol{R}+\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{B} \right) ^{-1}\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{A} Kk=(R+BTPk+1B)−1BTPk+1A
将 u k = − K x k \boldsymbol{u}_k=-\boldsymbol{Kx}_k uk=−Kxk代入 J k J_k Jk可得
J k = x k T P k x k = x k T ( Q + K k T R K k + ( A − B K k ) P k + 1 ( A − B K k ) ) x k J_k=\boldsymbol{x}_{k}^{T}\boldsymbol{P}_k\boldsymbol{x}_k=\boldsymbol{x}_{k}^{T}\left( \boldsymbol{Q}+\boldsymbol{K}_{k}^{T}\boldsymbol{RK}_k+\left( \boldsymbol{A}-\boldsymbol{BK}_k \right) \boldsymbol{P}_{k+1}\left( \boldsymbol{A}-\boldsymbol{BK}_k \right) \right) \boldsymbol{x}_k Jk=xkTPkxk=xkT(Q+KkTRKk+(A−BKk)Pk+1(A−BKk))xk
从而
P k = Q + A T P k + 1 A − A T P k + 1 B ( R + B T P k + 1 B ) − 1 B T P k + 1 A \boldsymbol{P}_k=\boldsymbol{Q}+\boldsymbol{A}^T\boldsymbol{P}_{k+1}\boldsymbol{A}-\boldsymbol{A}^T\boldsymbol{P}_{k+1}\boldsymbol{B}\left( \boldsymbol{R}+\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{B} \right) ^{-1}\boldsymbol{B}^T\boldsymbol{P}_{k+1}\boldsymbol{A} Pk=Q+ATPk+1A−ATPk+1B(R+BTPk+1B)−1BTPk+1A
称为离散迭代黎卡提方程。根据贝尔曼最优原理,在迭代过程中 P k \boldsymbol{P}_k Pk会逐步收敛。
3 基于全驱动无人船动力学的LQR
针对WAMV非线性动力学模型,首先将非线性问题线性化,得到系统线性误差状态方程。具体而言,选择状态量 x = [ l x y ψ u v r ] T \boldsymbol{x}=\left[ \begin{matrix}{l} x& y& \psi& u& v& r\\\end{matrix} \right] ^T x=[lxyψuvr]T和控制量 u = [ τ l τ m τ r ] T \boldsymbol{u}=\left[ \begin{matrix} \tau _l& \tau _m& \tau _r\\ \end{matrix} \right] ^T u=[τlτmτr]T,系统状态方程为 x ˙ = f ( x , u ) \boldsymbol{\dot{x}}=\boldsymbol{f}\left( \boldsymbol{x},\boldsymbol{u} \right) x˙=f(x,u),则令 f \boldsymbol{f} f在参考点 x r \boldsymbol{x}_r xr、 u r \boldsymbol{u}_r ur泰勒级数展开,忽略非线性项可得
x ˙ = f ( x r , u r ) + ∂ f ( x , u ) ∂ x ∣ x r , u r ( x − x r ) + ∂ f ( x , u ) ∂ u ∣ x r , u r ( u − u r ) \boldsymbol{\dot{x}}=\boldsymbol{f}\left( \boldsymbol{x}_r, \boldsymbol{u}_r \right) +\frac{\partial \boldsymbol{f}\left( \boldsymbol{x}, \boldsymbol{u} \right)}{\partial \boldsymbol{x}}\mid_{\boldsymbol{x}_r,\boldsymbol{u}_r}^{}\left( \boldsymbol{x}-\boldsymbol{x}_r \right) +\frac{\partial \boldsymbol{f}\left( \boldsymbol{x}, \boldsymbol{u} \right)}{\partial \boldsymbol{u}}\mid_{\boldsymbol{x}_r,\boldsymbol{u}_r}^{}\left( \boldsymbol{u}-\boldsymbol{u}_r \right) x˙=f(xr,ur)+∂x∂f(x,u)∣xr,ur(x−xr)+∂u∂f(x,u)∣xr,ur(u−ur)
其中雅克比矩阵
{ A = ∂ f ( x , u ) ∂ x ∣ x r , u r = [ 0 0 − u r sin ψ r − v r cos ψ r cos ψ r − sin ψ r 0 0 0 u r cos ψ r − v r sin ψ r sin ψ r cos ψ r 0 0 0 0 0 0 1 0 0 0 X u + 2 X ∣ u ∣ u ∣ u r ∣ m r r v r 0 0 0 − r r Y v / m − u r 0 0 0 0 0 N r / I z ] B = ∂ f ( x , u ) ∂ u ∣ x r , u r = [ 0 0 0 0 0 0 0 0 0 1 / m 0 1 / m 0 1 / m 0 − D / I z 0 D / I z ] \begin{cases} \boldsymbol{A}=\frac{\partial \boldsymbol{f}\left( \boldsymbol{x}, \boldsymbol{u} \right)}{\partial \boldsymbol{x}}\mid_{\boldsymbol{x}_r,\boldsymbol{u}_r}^{}=\left[ \begin{matrix} 0& 0& -u_r\sin \psi _r-v_r\cos \psi _r& \cos \psi _r& -\sin \psi _r& 0\\ 0& 0& u_r\cos \psi _r-v_r\sin \psi _r& \sin \psi _r& \cos \psi _r& 0\\ 0& 0& 0& 0& 0& 1\\ 0& 0& 0& \frac{X_u+2X_{\left| u \right|u}\left| u_r \right|}{m}& r_r& v_r\\ 0& 0& 0& -r_r& {{Y_v}/{m}}& -u_r\\ 0& 0& 0& 0& 0& {{N_r}/{I_z}}\\\end{matrix} \right]\\ \boldsymbol{B}=\frac{\partial \boldsymbol{f}\left( \boldsymbol{x}, \boldsymbol{u} \right)}{\partial \boldsymbol{u}}\mid_{\boldsymbol{x}_r,\boldsymbol{u}_r}^{}=\left[ \begin{matrix} 0& 0& 0\\ 0& 0& 0\\ 0& 0& 0\\ {{1}/{m}}& 0& {{1}/{m}}\\ 0& {{1}/{m}}& 0\\ {{-D}/{I_z}}& 0& {{D}/{I_z}}\\\end{matrix} \right]\\\end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧A=∂x∂f(x,u)∣xr,ur=⎣⎢⎢⎢⎢⎢⎢⎡000000000000−ursinψr−vrcosψrurcosψr−vrsinψr0000cosψrsinψr0mXu+2X∣u∣u∣ur∣−rr0−sinψrcosψr0rrYv/m0001vr−urNr/Iz⎦⎥⎥⎥⎥⎥⎥⎤B=∂u∂f(x,u)∣xr,ur=⎣⎢⎢⎢⎢⎢⎢⎡0001/m0−D/Iz00001/m00001/m0D/Iz⎦⎥⎥⎥⎥⎥⎥⎤
选择状态误差量 x ~ = [ l x − x r y − y r ψ − ψ r u − u r v − v r r − r r ] T \boldsymbol{\tilde{x}}=\left[ \begin{matrix}{l} x-x_r& y-y_r& \psi -\psi _r& u-u_r& v-v_r& r-r_r\\\end{matrix} \right] ^T x~=[lx−xry−yrψ−ψru−urv−vrr−rr]T得到线性误差状态方程 x ~ ˙ = A x ~ + B u + C \boldsymbol{\dot{\tilde{x}}}=\boldsymbol{A\tilde{x}}+\boldsymbol{Bu}+\boldsymbol{C} x~˙=Ax~+Bu+C,其中 C = B u r \boldsymbol{C}=\boldsymbol{Bu}_r C=Bur是常数矩阵。为了应用标准LQR过程,暂时忽略常数 C \boldsymbol{C} C,采用采样步长为 T T T的前向欧拉法离散化上述状态方程可得
x ~ ( k + 1 ) = ( T A + I ) x ~ ( k ) + T B u ( k ) \boldsymbol{\tilde{x}}\left( k+1 \right) =\left( T\boldsymbol{A}+\boldsymbol{I} \right) \boldsymbol{\tilde{x}}\left( k \right) +T\boldsymbol{Bu}\left( k \right) x~(k+1)=(TA+I)x~(k)+TBu(k)
接着进行LQR过程即可
4 跟踪效果分析
定性测试结果:
在考虑水动力、风力等真实干扰的情况下,跟踪轨迹如下所示,定量测试结果为:
- 平均跟踪误差:0.188978 m
- 最大跟踪误差:0.626185 m
- 最小跟踪误差:0.006301 m
🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …