当前位置: 首页 > news >正文

无人船 | 图解基于LQR控制的路径跟踪算法(以欠驱动无人艇Otter为例)

目录

  • 1 离散时间线性二次型问题
  • 2 基于欠驱动无人船动力学的LQR
  • 3 路径跟踪效果分析

1 离散时间线性二次型问题

设状态变量x(k):N→Rn\boldsymbol{x}(k):\mathbb{N}\rightarrow\mathbb{R}^{n}x(k):NRn,控制变量u(k):N→Rm\boldsymbol{u}(k):\mathbb{N}\rightarrow\mathbb{R}^{m}u(k):NRm,状态方程为

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,,N1

最小化性能指标

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=0N1(xkTQkxk+ukTRkuk)

其中 Qf\boldsymbol{Q}_{f}QfQ\boldsymbol{Q}Q 实对称半正定,R\boldsymbol{R}R 实对称正定。Q\boldsymbol{Q}Q 衡量了系统状态向期望轨迹的收敛速度,R\boldsymbol{R}R 衡量了系统能量消耗的相对大小,二者互相制约——希望系统快速收敛往往需要加强控制力度,导致能量耗散。Q\boldsymbol{Q}QR\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)=min⁡uN−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(xN1,N1)=uN1min{21(xN1TQN1xN1+uN1TRN1uN1)+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(AN1xN1+BN1uN1)TPN(AN1xN1+BN1uN1)

为了求得上面等式右侧的最小值,令其对uN−1\boldsymbol{u}_{N-1}uN1的导数为零可得

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}uN1=(RN1+BN1TPNBN1)1BN1TPNAN1xN1

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}KN1=(RN1+BN1TPNBN1)1BN1TPNAN1

则此时值函数为

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(xN1,N1)=21xN1TPN1xN1

其中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})PN1=QN1+KN1TRN1KN1+(AN1+BN1KN1)TPN(AN1+BN1KN1),容易验证当 PNP_NPN实对称半正定时, PN−1P_{N-1}PN1 依然实对称半正定。根据数学归纳法,离散时间线性二次型最优控制问题的值函数总可以表示为半正定二次型

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+(AkBkKk)Pk+1(AkBkKk)=Qk+AkTPk+1AkAkTPk+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}_rxrur\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)+xf(x,u)xr,ur(xxr)+uf(x,u)xr,ur(uur)

其中雅克比矩阵

{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=xf(x,u)xr,ur=000000000000ursinψrvrcosψrurcosψrvrsinψr0000cosψrsinψr0m+Xu˙Xu0Iz+Nr˙Yv˙Xu˙vrsinψrcosψr00m+Yv˙YvIz+Nr˙Yv˙Xu˙ur001m+Xu˙mYv˙m+Yv˙(mXu˙)Iz+Nr˙NrB=uf(x,u)xr,ur=000m+Xu˙10Iz+Nr˙D000000000m+Xu˙10Iz+Nr˙D

必须指出,由于目标函数为最小化xxxuuu,因此应用时xxxuuu一般分别取为状态误差和控制误差,即跟踪期望输入的同时消除状态误差,也称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

在这里插入图片描述

http://www.dtcms.com/a/307750.html

相关文章:

  • PHP 5.5 Action Management with Parameters (English Version)
  • 知识随记-----使用现代C++客户端库redis-plus-plus实现redis池缓解高并发
  • python之使用ffmpeg下载直播推流视频rtmp、m3u8协议实时获取时间进度
  • 26.(vue3.x+vite)以pinia为中心的开发模板
  • 【RH134 问答题】第 11 章 管理网络安全
  • Git踩坑
  • Spring面试
  • wpf之ControlTemplate
  • ACL 2024 大模型方向优秀论文:洞察NLP前沿​关键突破!
  • SpringMVC核心原理与实战指南
  • C++游戏开发(2)
  • 解决Android Studio中创建的模拟器第二次无法启动的问题
  • Android Studio怎么显示多排table,打开文件多行显示文件名
  • Android Studio 中Revert Commit、Undo Commit 和 Drop Commit 使用场景
  • 【智能体agent】入门之--1.初体验
  • HighgoDB查询慢SQL和阻塞SQL
  • 微信小程序性能优化与内存管理
  • HTTP 请求头(Request Headers)清单
  • 【13】大恒相机SDK C#开发 —— Fom1中实时处理的8个图像 实时显示在Form2界面的 pictureBox中
  • MySQL 中的聚簇索引和非聚簇索引的区别
  • 淘宝 API HTTP/2 多路复用与连接优化实践:提升商品数据采集吞吐量
  • Ceph、K8s、CSI、PVC、PV 深入详解
  • TTS语音合成|f5-tts语音合成服务器部署,实现http访问
  • 【n8n】如何跟着AI学习n8n【03】:HTTPRequest节点、Webhook节点、SMTP节点、mysql节点
  • 【11】大恒相机SDK C++开发 ——原图像数据IFrameData内存中上下颠倒,怎么裁剪ROI 实时显示在pictureBox中
  • 5G毫米波射频前端设计:从GaN功放到混合信号集成方案
  • 初始sklearn 数据集获取、分类、划分与特征工程
  • mysql笔记02:DML插入、更新、删除数据
  • 【读书笔记】Design Patterns (1994)✅
  • 贝锐蒲公英X4 Pro 5G新品路由器:异地组网+8网口+双频WiFi全都有