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

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

目录

  • 1 模型预测控制原理
  • 2 离散全驱动无人船动力学推导
  • 3 全驱动无人艇MPC控制推导
  • 4 跟踪效果分析

1 模型预测控制原理

模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,广泛应用于工程领域。它通过建立动态系统的数学模型,并基于当前状态进行预测,优化未来一段时间内的控制动作,以达到最优的控制效果。模型预测控制通过预测和优化方法,能够在系统动态变化和约束条件下,实现更高效、更灵活的控制,因此在工业应用中具有重要的实际价值。

形式化地,以下图阐述模型预测控制原理。不计较模型形式,以状态空间模型为例

{ x ( k + 1 ) = f ( x ( k ) , u ( k ) ) , x ( 0 ) = x 0 y ( k ) = h ( x ( k ) , u ( k ) ) \begin{cases} \boldsymbol{x}\left( k+1 \right) =\boldsymbol{f}\left( \boldsymbol{x}\left( k \right) ,\boldsymbol{u}\left( k \right) \right) ,\boldsymbol{x}\left( 0 \right) =\boldsymbol{x}_0\\ \boldsymbol{y}\left( k \right) =\boldsymbol{h}\left( \boldsymbol{x}\left( k \right) ,\boldsymbol{u}\left( k \right) \right)\\\end{cases} {x(k+1)=f(x(k),u(k)),x(0)=x0y(k)=h(x(k),u(k))

其中 x ( k ) ∈ R n \boldsymbol{x}\left( k \right) \in \mathbb{R} ^n x(k)Rn u ( k ) ∈ R l \boldsymbol{u}\left( k \right) \in \mathbb{R} ^l u(k)Rl y ( k ) ∈ R q \boldsymbol{y}\left( k \right) \in \mathbb{R} ^q y(k)Rq分别表示时刻 系统的状态、控制输入和输出向量。基于预测模型可以计算预测方程,根据预测方程可以求解系统起始于 y ( k ) \boldsymbol{y}\left( k \right) y(k)的未来一段时间内的输出序列

{ y p ( k + 1 ∣ k ) , y p ( k + 2 ∣ k ) , ⋯ , y ( k + p ∣ k ) } \left\{ \boldsymbol{y}_p\left( k+1|k \right) , \boldsymbol{y}_p\left( k+2|k \right) , \cdots , \boldsymbol{y}\left( k+p|k \right) \right\} {yp(k+1∣k),yp(k+2∣k),,y(k+pk)}

其中 p p p称为预测时域

在这里插入图片描述

控制输入序列

U k = d e f { u ( k ∣ k ) , u ( k + 1 ∣ k ) , ⋯ , u ( k + p − 1 ∣ k ) } U_k\xlongequal{\mathrm{def}}\left\{ \boldsymbol{u}\left( k|k \right) , \boldsymbol{u}\left( k+1|k \right) , \cdots , \boldsymbol{u}\left( k+p-1|k \right) \right\} Ukdef {u(kk),u(k+1∣k),,u(k+p1∣k)}

是MPC需要求解的优化问题的独立变量。最常见的,我们希望系统实际输出 跟踪期望的参考输入

{ r ( k + 1 ) , r ( k + 2 ) , ⋯ , r ( k + p ) } \left\{ \boldsymbol{r}\left( k+1 \right) , \boldsymbol{r}\left( k+2 \right) , \cdots , \boldsymbol{r}\left( k+p \right) \right\} {r(k+1),r(k+2),,r(k+p)}

同时满足实际问题的约束条件,例如控制约束和输出约束

{ u min ⁡ ⩽ u ( k + i ) ⩽ u max ⁡ , i ⩾ 0 y min ⁡ ⩽ y ( k + i ) ⩽ y max ⁡ , i ⩾ 0 \begin{cases} \boldsymbol{u}_{\min}\leqslant \boldsymbol{u}\left( k+i \right) \leqslant \boldsymbol{u}_{\max}, i\geqslant 0\\ \boldsymbol{y}_{\min}\leqslant \boldsymbol{y}\left( k+i \right) \leqslant \boldsymbol{y}_{\max}, i\geqslant 0\\\end{cases} {uminu(k+i)umax,i0yminy(k+i)ymax,i0

根据这些指标设计优化目标函数 J = J ( y ( k ) , U k ) J=J\left( y\left( k \right) , U_k \right) J=J(y(k),Uk),其最优解可记为

U k ∗ = a r g min ⁡ U k J ( y ( k ) , U k ) U_{k}^{*}=\mathrm{arg}\min _{U_k}J\left( y\left( k \right) ,U_k \right) Uk=argUkminJ(y(k),Uk)

k k k时刻优化解 U k ∗ U_{k}^{*} Uk的第一个分量实际作用于系统,并在 k + 1 k+1 k+1时刻以新得到的测量值 y ( k + 1 ) y(k+1) y(k+1)为初始条件重新预测系统未来输出并求解优化问题。随着当前时间向前推移,预测时域也向前滚动

2 离散全驱动无人船动力学推导

针对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)+xf(x,u)xr,ur(xxr)+uf(x,u)xr,ur(uur)

其中雅克比矩阵

{ 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=xf(x,u)xr,ur= 000000000000ursinψrvrcosψrurcosψrvrsinψr0000cosψrsinψr0mXu+2Xuuurrr0sinψrcosψr0rrYv/m0001vrurNr/Iz B=uf(x,u)xr,ur= 0001/m0D/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~=[lxxryyrψψruurvvrrrr]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)

3 全驱动无人艇MPC控制推导

基于模型进行系统未来动态的预测

{ x ~ ( k + m ) = A ~ m x ~ ( k ) + ∑ i = 0 m − 1 A ~ i B ~ Δ u ( k + m − 1 − i ) x ~ ( k + p ) = A ~ p x ~ ( k ) + ∑ i = p − m p − 1 A ~ i B ~ Δ u ( k + p − 1 − i ) \begin{cases} \boldsymbol{\tilde{x}}\left( k+m \right) =\boldsymbol{\tilde{A}}^m\boldsymbol{\tilde{x}}\left( k \right) +\sum_{i=0}^{m-1}{\boldsymbol{\tilde{A}}^i\boldsymbol{\tilde{B}}\varDelta \boldsymbol{u}\left( k+m-1-i \right)}\\ \boldsymbol{\tilde{x}}\left( k+p \right) =\boldsymbol{\tilde{A}}^p\boldsymbol{\tilde{x}}\left( k \right) +\sum_{i=p-m}^{p-1}{\boldsymbol{\tilde{A}}^i\boldsymbol{\tilde{B}}\varDelta \boldsymbol{u}\left( k+p-1-i \right)}\\\end{cases} {x~(k+m)=A~mx~(k)+i=0m1A~iB~Δu(k+m1i)x~(k+p)=A~px~(k)+i=pmp1A~iB~Δu(k+p1i)

同理,可迭代计算系统输出

{ y ~ ( k + m ) = C ~ A ~ i x ~ ( k ) + ∑ i = 0 m − 1 C ~ A ~ i B ~ Δ u ( k + m − 1 − i ) y ~ ( k + p ) = C ~ A i x ~ ( k ) + ∑ i = p − m p − 1 C ~ A ~ i B ~ Δ u ( k + p − 1 − i ) \begin{cases} \boldsymbol{\tilde{y}}\left( k+m \right) =\boldsymbol{\tilde{C}\tilde{A}}^i\boldsymbol{\tilde{x}}\left( k \right) +\sum_{i=0}^{m-1}{\boldsymbol{\tilde{C}\tilde{A}}^i\boldsymbol{\tilde{B}}\varDelta \boldsymbol{u}\left( k+m-1-i \right)}\\ \boldsymbol{\tilde{y}}\left( k+p \right) =\boldsymbol{\tilde{C}A}^i\boldsymbol{\tilde{x}}\left( k \right) +\sum_{i=p-m}^{p-1}{\boldsymbol{\tilde{C}\tilde{A}}^i\boldsymbol{\tilde{B}}\varDelta \boldsymbol{u}\left( k+p-1-i \right)}\\\end{cases} {y~(k+m)=C~A~ix~(k)+i=0m1C~A~iB~Δu(k+m1i)y~(k+p)=C~Aix~(k)+i=pmp1C~A~iB~Δu(k+p1i)

定义预测输出向量和控制输入向量为

Y p ( k ) = d e f [ y ~ ( k + 1 ) y ~ ( k + 2 ) ⋮ y ~ ( k + p ) ] p × 1 , Δ U m ( k ) = d e f [ Δ u ( k ) Δ u ( k + 1 ) ⋮ Δ u ( k + m − 1 ) ] m × 1 \boldsymbol{Y}_p\left( k \right) \xlongequal{\mathrm{def}}\left[ \begin{array}{c} \boldsymbol{\tilde{y}}\left( k+1 \right)\\ \boldsymbol{\tilde{y}}\left( k+2 \right)\\ \vdots\\ \boldsymbol{\tilde{y}}\left( k+p \right)\\\end{array} \right] _{p\times 1}, \varDelta \boldsymbol{U}_m\left( k \right) \xlongequal{\mathrm{def}}\left[ \begin{array}{c} \varDelta \boldsymbol{u}\left( k \right)\\ \varDelta \boldsymbol{u}\left( k+1 \right)\\ \vdots\\ \varDelta \boldsymbol{u}\left( k+m-1 \right)\\\end{array} \right] _{m\times 1} Yp(k)def y~(k+1)y~(k+2)y~(k+p) p×1,ΔUm(k)def Δu(k)Δu(k+1)Δu(k+m1) m×1

则系统输出方程可表达为矩阵形式

Y p ( k ) = S x x ~ ( k ) + S u Δ U m ( k ) \boldsymbol{Y}_p\left( k \right) ={S} _x\boldsymbol{\tilde{x}}\left( k \right) +{S} _u\varDelta \boldsymbol{U}_m\left( k \right) Yp(k)=Sxx~(k)+SuΔUm(k)

基于预测方程定义开环优化目标函数

J = ( Y p − Y r ) T Q ~ ( Y p − Y r ) + Δ U m T R ~ Δ U m J=\left( \boldsymbol{Y}_p-\boldsymbol{Y}_r \right) ^T\boldsymbol{\tilde{Q}}\left( \boldsymbol{Y}_p-\boldsymbol{Y}_r \right) +\varDelta \boldsymbol{U}_{m}^{T}\boldsymbol{\tilde{R}}\varDelta \boldsymbol{U}_m J=(YpYr)TQ~(YpYr)+ΔUmTR~ΔUm

对于优化问题 Δ U m = a r g min ⁡ Δ U m J ( Δ U m ) \varDelta \boldsymbol{U}_m=\mathrm{arg}\min _{\varDelta \boldsymbol{U}_m}J\left( \varDelta \boldsymbol{U}_m \right) ΔUm=argminΔUmJ(ΔUm)

∂ J ∂ Δ U m = ∂ ∂ Δ U m [ 1 2 Δ U m T ( S u T Q ~ S u + R ~ ) Δ U m + ( S x x ~ − Y r ) T Q ~ S u Δ U m ] \frac{\partial J}{\partial \varDelta \boldsymbol{U}_m}=\frac{\partial}{\partial \varDelta \boldsymbol{U}_m}\left[ \frac{1}{2}\varDelta \boldsymbol{U}_{m}^{T}\left( {S} _{u}^{T}\boldsymbol{\tilde{Q}}{S} _u+\boldsymbol{\tilde{R}} \right) \varDelta \boldsymbol{U}_m+\left( {S} _x\boldsymbol{\tilde{x}}-\boldsymbol{Y}_r \right) ^T\boldsymbol{\tilde{Q}}{S} _u\varDelta \boldsymbol{U}_m \right] ΔUmJ=ΔUm[21ΔUmT(SuTQ~Su+R~)ΔUm+(Sxx~Yr)TQ~SuΔUm]

对应转化为标准的二次规划问题

Δ U m = a r g min ⁡ Δ U m ( 1 2 Δ U m T H Δ U m + g T Δ U m ) \varDelta \boldsymbol{U}_m=\mathrm{arg}\min _{\varDelta \boldsymbol{U}_m}\left( \frac{1}{2}\varDelta {\boldsymbol{U}_m}^T\boldsymbol{H}\varDelta \boldsymbol{U}_m+\boldsymbol{g}^T\varDelta \boldsymbol{U}_m \right) ΔUm=argΔUmmin(21ΔUmTHΔUm+gTΔUm)

进行求解

4 跟踪效果分析

定性测试结果:

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
http://www.dtcms.com/a/592774.html

相关文章:

  • 蓝牙标签APP与网页端操作常见问题指南
  • 深度测评解析 CANN:从 ACL 到自定义算子,解锁昇腾计算的全部潜能
  • ui作品集 网站怎么做手机app开发需要什么技术
  • 做门头上那个网站申报WordPress怎么两个标题
  • emu系列模拟器最新汉化版 安卓版 怀旧游戏模拟器全集附可运行游戏ROM
  • 前端状态管理,为什么要状态管理?(React状态管理、zustand)
  • 江西中创建设工程有限公司网站专业建设报告
  • 1024开发者节:开源发布,引领生态繁荣
  • 测试自动化Replay:让数据库迁移测试回归真实场景的一把“利器”
  • 从“死记硬背“到“主动思考“:用 Microsoft Agent Framework 重新定义 RAG
  • 重点理解线程池
  • 会议触摸中控GF-TSI11:智能会议场景的核心交互中枢
  • 开源重塑金融服务新生态|《2025年金融服务开源现状报告》深度解读与实践路径
  • pyspark入门实操
  • 扩散模型核心机制解析:U-Net调用逻辑、反向传播时机与步骤对称性
  • 怎么样搭建qq号网站做个卖车票的网站怎么做
  • apb 协议
  • NAT,代理服务,内网穿透,DNS
  • office提示应用程序无法正常启动(0xc0000142)如何解决?官方修复方法!
  • 两道算法题
  • 合肥建网站要多少钱网站空间和服务器
  • 网站优缺点分析网站备案怎么备案
  • 【Android】Android内存缓存LruCache与DiskLruCache的使用及实现原理
  • wps安装mathtype报错:错误‘48’:文件未找到:MathPage.WLL||终于解决MathPage.wll文件找不到问题(亲测有效!)
  • 苹果16Pro调研
  • 【共绩 ComfyUI 小课堂】Class 3 ComfyUI 升级更新完整指南:五种方法让你轻松跟上最新版本
  • 【系统架构设计师】2025年下半年真题论文回忆版及写作要点
  • 初识MYSQL —— 事务
  • 专题:2025AI时代的医疗保健业:应用与行业趋势研究报告|附130+份报告PDF、数据、可视化模板汇总下载
  • 电脑能控电脑控--Analog Discovery Python(1)