无人船 | 图解基于LQR控制的路径跟踪算法(以欠驱动无人艇Otter为例)
目录
- 1 离散时间线性二次型问题
- 2 基于欠驱动无人船动力学的LQR
- 3 路径跟踪效果分析
1 离散时间线性二次型问题
设状态变量x(k):N→Rn\boldsymbol{x}(k):\mathbb{N}\rightarrow\mathbb{R}^{n}x(k):N→Rn,控制变量u(k):N→Rm\boldsymbol{u}(k):\mathbb{N}\rightarrow\mathbb{R}^{m}u(k):N→Rm,状态方程为
xk+1=Akxk+Bkuk,k=0,1,⋯,N−1\boldsymbol{x}_{k+1}=\boldsymbol{A}_{k}\boldsymbol{x}_{k}+\boldsymbol{B}_{k}\boldsymbol{u}_{k}, k=0,1,\cdots, N-1xk+1=Akxk+Bkuk,k=0,1,⋯,N−1
最小化性能指标
J(u)=12xNTQfxN+12∑k=0N−1(xkTQkxk+ukTRkuk)J(\boldsymbol{u})=\frac{1}{2}\boldsymbol{x}_{N}^{\mathrm{T}}\boldsymbol{Q}_{f}\boldsymbol{x}_{N}+\frac{1}{2}\sum_{k=0}^{N-1}\left(\boldsymbol{x}_{k}^{\mathrm{T}}\boldsymbol{Q}_{k}\boldsymbol{x}_{k}+\boldsymbol{u}_{k}^{\mathrm{T}}\boldsymbol{R}_{k}\boldsymbol{u}_{k}\right)J(u)=21xNTQfxN+21k=0∑N−1(xkTQkxk+ukTRkuk)
其中 Qf\boldsymbol{Q}_{f}Qf 和 Q\boldsymbol{Q}Q 实对称半正定,R\boldsymbol{R}R 实对称正定。Q\boldsymbol{Q}Q 衡量了系统状态向期望轨迹的收敛速度,R\boldsymbol{R}R 衡量了系统能量消耗的相对大小,二者互相制约——希望系统快速收敛往往需要加强控制力度,导致能量耗散。Q\boldsymbol{Q}Q 与 R\boldsymbol{R}R 需要结合具体场景进行调节。假设终端时刻固定且终端状态自由。
设值函数满足终端边界条件
V(xN,N)=12xNTPNxN,PN=QfV\left(\boldsymbol{x}_{N}, N\right)=\frac{1}{2}\boldsymbol{x}_{N}^{\mathrm{T}}\boldsymbol{P}_{N}\boldsymbol{x}_{N}, \boldsymbol{P}_{N}=\boldsymbol{Q}_{f}V(xN,N)=21xNTPNxN,PN=Qf
根据贝尔曼方程
V(xN−1,N−1)=minuN−1{12(xN−1TQN−1xN−1+uN−1TRN−1uN−1)+V(xN,N)}V\left(\boldsymbol{x}_{N-1}, N-1\right)=\min _{\boldsymbol{u}_{N-1}}\left\{\frac{1}{2}\left(\boldsymbol{x}_{N-1}^{\mathrm{T}}\boldsymbol{Q}_{N-1}\boldsymbol{x}_{N-1}+\boldsymbol{u}_{N-1}^{\mathrm{T}}\boldsymbol{R}_{N-1}\boldsymbol{u}_{N-1}\right)+V\left(\boldsymbol{x}_{N}, N\right)\right\}V(xN−1,N−1)=uN−1min{21(xN−1TQN−1xN−1+uN−1TRN−1uN−1)+V(xN,N)}
其中
V(xN,N)=12(AN−1xN−1+BN−1uN−1)TPN(AN−1xN−1+BN−1uN−1)V\left(\boldsymbol{x}_{N}, N\right)=\frac{1}{2}\left(\boldsymbol{A}_{N-1}\boldsymbol{x}_{N-1}+\boldsymbol{B}_{N-1}\boldsymbol{u}_{N-1}\right)^{\mathrm{T}}\boldsymbol{P}_{N}\left(\boldsymbol{A}_{N-1}\boldsymbol{x}_{N-1}+\boldsymbol{B}_{N-1}\boldsymbol{u}_{N-1}\right)V(xN,N)=21(AN−1xN−1+BN−1uN−1)TPN(AN−1xN−1+BN−1uN−1)
为了求得上面等式右侧的最小值,令其对uN−1\boldsymbol{u}_{N-1}uN−1的导数为零可得
uN−1=−(RN−1+BN−1TPNBN−1)−1BN−1TPNAN−1xN−1\boldsymbol{u}_{N-1}=-\left(\boldsymbol{R}_{N-1}+\boldsymbol{B}_{N-1}^{\mathrm{T}}\boldsymbol{P}_{N}\boldsymbol{B}_{N-1}\right)^{-1}\boldsymbol{B}_{N-1}^{\mathrm{T}}\boldsymbol{P}_{N}\boldsymbol{A}_{N-1}\boldsymbol{x}_{N-1}uN−1=−(RN−1+BN−1TPNBN−1)−1BN−1TPNAN−1xN−1
令
KN−1=−(RN−1+BN−1TPNBN−1)−1BN−1TPNAN−1\boldsymbol{K}_{N-1}=-\left(\boldsymbol{R}_{N-1}+\boldsymbol{B}_{N-1}^{\mathrm{T}}\boldsymbol{P}_{N}\boldsymbol{B}_{N-1}\right)^{-1}\boldsymbol{B}_{N-1}^{\mathrm{T}}\boldsymbol{P}_{N}\boldsymbol{A}_{N-1}KN−1=−(RN−1+BN−1TPNBN−1)−1BN−1TPNAN−1
则此时值函数为
V(xN−1,N−1)=12xN−1TPN−1xN−1V\left(\boldsymbol{x}_{N-1}, N-1\right)=\frac{1}{2}\boldsymbol{x}_{N-1}^{\mathrm{T}}\boldsymbol{P}_{N-1}\boldsymbol{x}_{N-1}V(xN−1,N−1)=21xN−1TPN−1xN−1
其中PN−1=QN−1+KN−1TRN−1KN−1+(AN−1+BN−1KN−1)TPN(AN−1+BN−1KN−1)P_{N-1} = Q_{N-1} + K_{N-1}^T R_{N-1} K_{N-1} + (A_{N-1} + B_{N-1} K_{N-1})^T P_N (A_{N-1} + B_{N-1} K_{N-1})PN−1=QN−1+KN−1TRN−1KN−1+(AN−1+BN−1KN−1)TPN(AN−1+BN−1KN−1),容易验证当 PNP_NPN实对称半正定时, PN−1P_{N-1}PN−1 依然实对称半正定。根据数学归纳法,离散时间线性二次型最优控制问题的值函数总可以表示为半正定二次型
V(xk,k)=12xkTPkxkV(x_k, k) = \frac{1}{2} x_k^T P_k x_kV(xk,k)=21xkTPkxk
其中半正定矩阵PkP_kPk满足迭代公式
Pk=Qk+KkTRkKk+(Ak−BkKk)Pk+1(Ak−BkKk)=Qk+AkTPk+1Ak−AkTPk+1Bk(Rk+BkTPk+1Bk)−1BkTPk+1Ak\begin{aligned} P_k &= Q_k + K_k^T R_k K_k + (A_k - B_k K_k) P_{k+1} (A_k - B_k K_k) \\ &= Q_k + A_k^T P_{k+1} A_k - A_k^T P_{k+1} B_k \left( R_k + B_k^T P_{k+1} B_k \right)^{-1} B_k^T P_{k+1} A_k \end{aligned}Pk=Qk+KkTRkKk+(Ak−BkKk)Pk+1(Ak−BkKk)=Qk+AkTPk+1Ak−AkTPk+1Bk(Rk+BkTPk+1Bk)−1BkTPk+1Ak
称为黎卡提差分方程。线性增益反馈矩阵为
Kk=−(Rk+BkTPk+1Bk)−1BkTPk+1AkK_{k}=-(R_{k}+B_{k}^{T}P_{k+1}B_{k})^{-1}B_{k}^{T}P_{k+1}A_{k}Kk=−(Rk+BkTPk+1Bk)−1BkTPk+1Ak
最优闭环反馈控制律为:
uk⋆=Kkxku_{k}^{\star}=K_{k}x_{k}uk⋆=Kkxk
称为线性二次调节器(Linear Quadratic Regulator, LQR)。
2 基于欠驱动无人船动力学的LQR
针对Otter非线性动力学模型,首先将非线性问题线性化,得到系统线性误差状态方程。具体而言,选择状态量x=[lxyψuvr]T\boldsymbol{x}=\left[ \begin{matrix}{l} x& y& \psi& u& v& r\\\end{matrix} \right] ^Tx=[lxyψuvr]T和控制量u=[τlτmτr]T\boldsymbol{u}=\left[ \begin{matrix} \tau _l& \tau _m& \tau _r\\ \end{matrix} \right] ^Tu=[τ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在参考点xr\boldsymbol{x}_rxr、ur\boldsymbol{u}_rur泰勒级数展开,忽略非线性项可得
x˙=f(xr,ur)+∂f(x,u)∂x∣xr,ur(x−xr)+∂f(x,u)∂u∣xr,ur(u−ur)\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∣xr,ur=[00−ursinψr−vrcosψrcosψr−sinψr000urcosψr−vrsinψrsinψrcosψr0000001000Xum+Xu˙0m−Yv˙m+Xu˙0000Yvm+Yv˙−(m−Xu˙)m+Yv˙000Yv˙−Xu˙Iz+Nr˙vrYv˙−Xu˙Iz+Nr˙urNrIz+Nr˙]B=∂f(x,u)∂u∣xr,ur=[0000000001m+Xu˙01m+Xu˙000−DIz+Nr˙0DIz+Nr˙]\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}{m+X_{\dot{u}}}& 0& \frac{m-Y_{\dot{v}}}{m+X_{\dot{u}}}\\ 0& 0& 0& 0& \frac{Y_v}{m+Y_{\dot{v}}}& \frac{-\left( m-X_{\dot{u}} \right)}{m+Y_{\dot{v}}}\\ 0& 0& 0& \frac{Y_{\dot{v}}-X_{\dot{u}}}{I_z+N_{\dot{r}}}v_r& \frac{Y_{\dot{v}}-X_{\dot{u}}}{I_z+N_{\dot{r}}}u_r& \frac{N_r}{I_z+N_{\dot{r}}}\\\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\\ \frac{1}{m+X_{\dot{u}}}& 0& \frac{1}{m+X_{\dot{u}}}\\ 0& 0& 0\\ -\frac{D}{I_z+N_{\dot{r}}}& 0& \frac{D}{I_z+N_{\dot{r}}}\\\end{matrix} \right]\\\end{cases}⎩⎨⎧A=∂x∂f(x,u)∣xr,ur=000000000000−ursinψr−vrcosψrurcosψr−vrsinψr0000cosψrsinψr0m+Xu˙Xu0Iz+Nr˙Yv˙−Xu˙vr−sinψrcosψr00m+Yv˙YvIz+Nr˙Yv˙−Xu˙ur001m+Xu˙m−Yv˙m+Yv˙−(m−Xu˙)Iz+Nr˙NrB=∂u∂f(x,u)∣xr,ur=000m+Xu˙10−Iz+Nr˙D000000000m+Xu˙10Iz+Nr˙D
必须指出,由于目标函数为最小化xxx和uuu,因此应用时xxx和uuu一般分别取为状态误差和控制误差,即跟踪期望输入的同时消除状态误差,也称LQR由误差驱动。如图所示对应了LQR算法的流程:从终端时刻NNN开始反向迭代计算每个时间步kkk的反馈矩阵KkK_{k}Kk,称为反向过程;接着从初始时刻开始,结合系统方程计算每个时间步kkk的最优控制得到最优状态轨迹,称为前向过程。对于给定的时域长度NNN,LQR可以计算唯一的最优轨迹。例如,轨迹优化问题中输入一条初始轨迹{x0,x1,⋯,xN}\{x_{0},x_{1},\cdots,x_{N}\}{x0,x1,⋯,xN},LQR将优化出唯一的 x0⋆,x1⋆,⋯,xN⋆x_{0}^{\star},x_{1}^{\star},\cdots,x_{N}^{\star}x0⋆,x1⋆,⋯,xN⋆
3 路径跟踪效果分析
定性测试结果:
在考虑水动力、风力等真实干扰的情况下,跟踪轨迹如下所示,定量测试结果为:
- 平均跟踪误差:0.212722 m
- 最大跟踪误差:0.852798 m
- 最小跟踪误差:0.003284 m