欠驱动船舶航向控制:自适应迭代滑模设计与Lyapunov稳定性分析

发布时间:2026/10/12 10:17:21
欠驱动船舶航向控制:自适应迭代滑模设计与Lyapunov稳定性分析 简介针对欠驱动船舶航向控制中模型不确定性与外界干扰导致的稳定性难题这份压缩包提供了完整的Lyapunov迭代滑模控制研究资料适合船舶运动控制研究者、研究生及Matlab仿真工程师参考学习。包内共10个文件包括5个Matlab脚本m文件、2个Simulink模型mdl、2个程序说明txt及1篇Caj格式研究文献可实现等效迭代滑模控制律与神经网络自适应迭代滑模控制律的建模、仿真、绘图与对比验证。方案基于二阶迭代滑模面将航向偏差镇定转化为滑模面镇定通过Lyapunov理论推导渐近稳定条件其中一种控制律参数精简、处理简单另一种引入RBF神经网络逼近系统不确定项、自适应估计外界干扰界值从而有效处理模型不确定性和海况扰动。资源包仅3.63MB已有461人浏览下载便于快速获取验证思路适合作为算法复现和毕业论文设计的直接参考。1. 欠驱动船舶的航向控制为什么常规 PID 和滑模在这里都容易翻车船舶运动控制里航向保持和航向跟踪是最基础也最磨人的问题——海况一变、装载一换、船速一降模型参数就在漂移固定增益的 PID 能压住稳态却扛不住突变传统滑模能抗扰动却抖振大到执行器受不了。如果把目标换成欠驱动船舶也就是没有侧推、只靠舵和螺旋桨完成横向运动的船问题会更棘手系统自由度大于控制输入数量常规反馈线性化不再适用直接上滑模又会因为趋近律设计不当导致收敛慢或抖振。这正是 Lyapunov 稳定性理论、自适应控制和迭代滑模控制组合起来要解决的场景——在模型不确定和低频扰动下用一套有理论保证的控制律把航向稳定住同时把舵机磨损控制在实际可接受的范围。这篇文章就围绕这套方案的建模、控制器设计、稳定性证明和工程调试展开目标是让看完的人能照着自己的船型把算法跑起来。这套方案适合两类人一是做船舶运动控制的工程师船型是货轮、拖轮、无人艇或渔业船舶二是做欠驱动系统控制的研究生和算法工程师需要的是从普通滑模往自适应迭代滑模迁移时能抄作业的参数设定和避坑逻辑。下面先从欠驱动模型的控制难点讲起再分别拆解自适应律、迭代滑模面和 Lyapunov 设计这三块核心最后给出调试顺序和参数调整方法。2. 欠驱动船舶模型先把控制对象拆开才知道 Lyapunov 函数该往哪里下手2.1 三自由度模型到航向子系统的简化路径欠驱动船舶的常用模型是考虑纵荡surge、横荡sway和艏摇yaw的三自由度运动方程控制输入一般是螺旋桨推力 X 和舵角 δ而横荡方向没有直接执行器这构成了一类典型的非完整约束系统。实际做航向控制时我们不会把整个六自由度模型拿来做控制器设计那样太琐碎而且参数太多常见做法是保留 Nomoto 一阶或二阶模型作为控制器设计基准然后用三自由度模型做仿真验证。一阶 Nomoto 模型的形式是其中 K 是回转性增益T 是时间常数δ 是舵角指令。这个模型的好处是结构简单、参数可以离线辨识但缺点是它把横荡自由度完全折进了 T 和 K 里海况变化时这两个参数会漂移得很厉害。二阶 Nomoto 模型多了两个参数能刻画航向响应的初始逆超调现象但参数辨识也麻烦了一倍。在做基于 Lyapunov 的控制器设计时我一般不用带积分项的状态方程而是把它改写成能直接构造李雅普诺夫函数的误差动力学形式。定义航向误差 e ψ_d − ψ其中 ψ_d 是期望航向那么误差动力学是这里 ψ_d 的一阶导和二阶导如果是常数航向就都是零如果是航向跟踪就要做前馈。常见的做法是引入虚拟控制变量 r_d也就是期望艏摇角速度把误差系统拆成两个通道航向误差通道和艏摇角速度误差通道。这一步拆解是后面构造滑模面和 Lyapunov 函数的基础。2.2 模型不确定性的三种来源和自适应要覆盖的对象做自适应不是漫无目的地去估一堆东西而是要针对模型不确定性里那些难以离线测准、但时变又不至于快到无法在线跟踪的参数。对欠驱动船舶航向控制来说不确定性有三个主要来源。来源一是静水阻力系数随吃水和船速的变化。同一条船压载和满载状态下的阻力系数可能差出 30% 以上而 K、T 参数本质上是由这些水动力系数折算出来的吃水一变整个 Nomoto 模型的参数就变了。来源二是环境扰动包括风、浪、流它们不是白噪声而是有能量谱密度的低频过程对航向控制来说等效于一个慢变的偏置力矩加上有色噪声。来源三是舵机本身的非线性包括舵速限制、舵角饱和和死区这些是执行器层的非光滑特性会让模型失配进一步加大。在这三类里自适应控制主要覆盖的是第一类和第二类中偏置性的部分也就是对 K 和 T 的在线修正以及对稳态风流浪流力矩的估计。而对第三类执行器非线性自适应是无能为力的这个要依靠滑模控制的鲁棒性去抵抗同时要在期望艏摇角速度的设计上人为限制变化率把舵机的工作节奏控制在合理区间。自适应参数选择有一个工程经验不要试图估计超过三个的参数。每多一个待估参数自适应律就要多一个 Lyapunov 交叉项而且参数之间容易出现耦合收敛问题表现为估计值互相抵消但控制效果没变好。对航向控制常见的选择是只在线估计 T 的倒数记为 a和扰动上界记为 D而把 K 放在控制器增益里用名义值。2.3 为什么传统反步法在这里会被滑模取代线性航向控制可以用 PID 或线性二次型调节器解决但当你想让控制器在大模型失配下仍保持航向误差一致有界时非线性控制器就不可避免了。反步法递推设计可以给出一个光滑的控制律但它的鲁棒性依赖对虚拟控制变量导数的精确已知而我们的模型里含有有界未知扰动项反步法的虚拟控制导数项会被扰动放大最终控制力度不足。滑模控制恰好是对不匹配不确定性最直接的武器。它通过设计一条滑模面把系统的行为约束在这条面上然后通过等效控制加切换控制来保证滑动模态的到达条件。但传统滑模有一个让船舶工程师很难接受的问题——抖振。船舵不同于电机频繁来回打舵不仅磨损舵机还会对船体产生周期性的横摇激励。在航向控制场景里抖振不只是一个控制品质问题它会直接缩短舵机液压系统的寿命。因此实际工程方案里滑模面通常要迭代化处理第一次迭代产生一个虚拟控制第二次迭代基于虚拟控制的导数偏差再设计修正项。迭代的过程本质上是在不增加切换增益的前提下提高控制器对于不确定项的抑制精度让切换项幅度随跟踪误差的收敛而减小这样既保留滑模的抗扰能力又不至于从头到尾保持最大切换增益。下一章就把这个迭代结构拆开讲。3. 迭代滑模与自适应律的设计从误差面到控制律每一步都能落在代码里3.1 滑模面的第一次迭代航向误差通道的虚拟控制迭代滑模的设计思路是分层打磨。第一层只针对航向误差通道目标是设计一个虚拟控制 r_d让航向误差在理想情况下指数收敛。定义第一层滑模面 s1 eψ λ1 ∫ eψ dt这里 λ1 是一个正的设计参数积分项的引入是为了消除常值风流浪流的稳态误差。对这个滑模面求导得到把航向误差动力学代入后设计虚拟控制其中 k1 是正增益作用于 s1。如果暂时忽略模型不确定项和艏摇角速度跟踪误差这个虚拟控制可以保证 s1 · s1̇ ≤ 0也就是第一层到达条件是满足的。这里我们不是直接对舵角给出指令而是给出了期望艏摇角速度 r_d这是欠驱动系统控制里一个关键的处理——因为舵角是先作用到艏摇角速度再间接影响航向所以控制能量先分配到中间层比直接大增益压航向误差要平稳得多。3.2 滑模面的第二次迭代艏摇角速度误差通道的控制输出第二次迭代把目标从航向误差转到了艏摇角速度跟踪误差上。定义误差变量 e_r r − r_d再构造第二层滑模面 s2 e_r λ2 ∫ e_r dt。这里 λ2 的选取决定了艏摇角速度跟踪的带宽。舵角控制律拆成两项等效控制项 u_eq 和切换项 u_sw。等效控制项直接使用名义模型反解注意这里的 r_d_dot 是虚拟控制的一阶导数。在符号推导时这只是一次求导但实现时如果 r_d 的表达式中含有不光滑项或测量噪声放大项就会导致舵令出现高频抖动。我会在后面参数调节部分给一个处理办法就是对 r_d 做一阶低通滤波也就是动态面控制里常用的技巧。切换项设计为 u_sw k2 · sat(s2 / Φ)其中 sat 是饱和函数Φ 是边界层厚度。连续化处理后的饱和函数取代符号函数是消抖振的第一道防线。k2 的理论下界要大于扰动上界与等效控制误差的叠加但实际工程里很少能精确知道这个上界所以下一节的自适应律正好来补这个位置。3.3 自适应律构造被估计参数的上界估计器和耦合关系现在把模型不确定性引回来。实际船舶模型中a 1/T 是未知且有界的扰动项 τ_d 有界但界未知。定义 ã â − a 和 D̃ D̂ − D 为估计误差其中 D̂ 是对扰动上界 D 的在线估计。构造 Lyapunov 候选函数V 由四部分组成第一层滑模面的能量、第二层滑模面的能量、参数估计误差的二次项。对 V 求导后把控制律代入选择自适应律为其中 γ1 和 γ2 是自适应速率系数。这两条自适应律的本质是把参数估计误差从 Lyapunov 函数的导数中消去从而保证 V_dot ≤ 0。这里有一个容易被忽略的点自适应律用的是滑模面 s2 作为驱动量而 s2 是艏摇角速度通道的滑模面也就是说参数估计只在舵效起作用后才开始修正航向误差大并不直接驱动估计器。这个设计是有意的——因为航向误差大可能是风流浪流造成的而非模型参数失配造成的混在一起估计容易跑偏。3.4 参数初始化与名义模型的离线辨识顺序自适应迭代滑模不能没有名义模型数值仿真的第一步就是离线把 a 和 b 辨识出来。常见做法是做 zigzag 试验或小幅正弦舵角激励记录航向角速度和舵角的时间序列用带遗忘因子的递推最小二乘法估计参数。递推最小二乘会给出一个参数协方差矩阵初始值可以设得大一些比如单位阵乘 100这表示对初值没有信心让辨识初期的数据充分主导参数走向。表控制器关键参数及初始化建议参数符号物理含义初始化建议调整方向λ1航向误差滑模面积分系数0.050.2航向响应太慢则增大振荡则减小λ2艏摇角速度滑模面积分系数0.10.3舵令噪声大则减小k1第一层滑模面增益0.52.0航向阶跃超调大则减小k2切换项增益上界初始取扰动估计的 1.5 倍抖振明显则配合 Φ 一起调Φ边界层厚度0.010.1舵令抖动则增大稳态误差超标则减小γ1参数 a 的自适应速率0.010.05估计收敛慢则小幅增大γ2扰动上界的自适应速率0.0010.01扰动突变跟踪慢则小幅增大一个常见问题是自适应律的参数速率调太激进导致 â 在真值附近高频往返反而激励了滑模切换项的抖动。我通常的做法是让 γ1 比 γ2 大一个量级因为参数 a 是慢时变扰动上界估算需要更保守一些。4. Lyapunov 稳定性分析证明能通过只是第一步关键是证明过程中有哪些隐藏假设会被工程实际击穿4.1 候选函数构造与导数推导的完整链条结合上一章给出的控制律和自适应律完整的 Lyapunov 候选函数为它的设计逻辑是引导我们关注的系统状态逐步收缩到滑模面。第一项和第二项分别对应第一层和第二层滑模面的到达过程第三项和第四项对应参数估计误差的收敛过程。对 V 求导并代入控制律化简后得到其中 η1 和 η2 是正增益。可以化简到 V_dot ≤ −2σV C 的形式其中 σ 由 k1、k2 和自适应速率共同决定C 是切换项边界层厚度 Φ 以及扰动估计误差上界的函数。这意味着虽然我们不能保证 V 单调趋向零但能保证 V 一致最终有界也就是闭环系统的所有信号一致最终有界稳态误差的界正比于 Φ 和扰动估计残差。这个分析结果给工程实践的提示是单纯追求 Φ 减小会降低稳态误差界但同时让切换项的对消作用更容易被扰动击穿抖振和稳态精度本质上是一对矛盾。设计者需要做的是根据执行器可接受的舵机动作频次折算出一个最小的边界层厚度而不是直接把 Φ 设到接近零。4.2 证明过程中的三个隐含假设连续激励、无限频宽、完整状态反馈第一个隐含假设是持续激励条件。自适应律要收敛到真值附近需要滑模面和艏摇角速度信号的信噪比足够高且包含足够的频率成分。如果你只做定常航向保持期望航向不变滑模面会很快收敛到边界层内此时参数估计器得到的持续激励不足估计值可能停在一个偏置点不再修正。现象是控制器工作正常但参数估计值不更新。这不是 bug是自适应控制的固有属性。如果想让参数逼近真值需要在辨识阶段给航向指令叠加小幅正弦信号等参数收敛后再切回纯航向保持。第二个隐含假设是控制器的执行频宽是无限的。理论推导里我们假定了舵角指令能瞬时无误差地执行但实际舵机有最大舵速和转角限制。当模型不确定项超过切换增益时控制律会输出超出物理能力的舵角指令执行器进入饱和状态此时的等效控制失效滑模面会暂时离开边界层。要应对这个问题必须在控制器输出端加指令限幅和变化率限幅并且把限幅值纳入滑模面到达条件的分析中否则理论保证和实际表现会脱节。第三个隐含假设是完整状态反馈。控制器需要航向角和艏摇角速度两个状态。航向角一般由陀螺罗经或卫星罗经提供精度足够但艏摇角速度有时候没有直接的角速度传感器而是通过对航向角做数值微分得到。这种处理在没有滤波时会带来严重的相位滞后和噪声放大直接影响滑模面和虚拟控制导数项的实现。我会在下一章单独讲这个坑的处理。4.3 投影算子自适应律有一个限制工程中容易被忽略自适应律如果直接对参数估计值积分有一个风险â 可能被积分到不合理的物理范围。比如 a 1/TT 是 Nomoto 模型的时间常数正常在几十秒到几百秒范围那么 a 的正常范围大约是 0.0050.1。如果估计值被推到负数或者大于 0.5那已经不是在修正参数而是在破坏控制器了。解决方式是给参数自适应律加投影算子。投影算子的实现逻辑是当 â 在正常范围内时自适应律照常作用当 â 接近边界时将自适应律沿梯度方向的法向分量去掉只保留切向修正。这个处理不会破坏 Lyapunov 导数的不增性因为投影方向的设计保证了 V_dot 不会因为投影而变正。工程实现上投影算子通常写成这样的形式其中 Proj 函数返回修正后的自适应速率。还有一个更简单的经验做法在仿真里跑一组摄动测试记录 â 和 D̂ 在极限工况下的波动范围然后在实现时设置比这个范围宽容 20% 的上下限防止极端海况下估计值跑飞。4.4 一致最终有界的界到底怎么估算用仿真界反推理论界理论分析给出 V_dot ≤ −2σV C但我们实际关心的是航向误差的稳态界。由于 V 与状态误差之间是二次型关系可以从 V 的界折算到状态误差的界。做法是用仿真中的最恶劣工况比如最大浪向角、最大流速记录实际航向误差的稳态最大值然后反推 C 的等效值再去检验我们设计的 k2 是否还有余量。如果实测稳态误差远大于理论推算值通常是某个隐含假设被击穿了优先检查艏摇角速度信号的噪声水平和执行器饱和情况。5. 工程调试避坑从仿真到实船的五个常见翻车点与排查方法5.1 航向角速度微分噪声过大导致舵令高频抖动现象控制器在仿真里很平稳接到实船罗经信号后舵令出现 0.5 Hz 以上的高频往复摆动舵机液压系统温度升高而航向误差并没有明显减小。原因艏摇角速度是通过罗经航向差分得到的未滤波的差分信号包含大量高频噪声滑模控制器对状态中的高频分量是敏感的尤其是虚拟控制导数项会把噪声进一步放大。解决不直接使用差分信号而是用低通滤波器对差分信号做处理或者改用跟踪微分器提取角速度。跟踪微分器的好处是可以同时给出近似导数并抑制噪声相位滞后比一阶低通小。实际调试时先把滤波器截止频率从 0.2 Hz 往下调观察舵令抖动是否明显减弱再微调保持航向响应速度。5.2 切换增益和补偿力矩被误用成同一回事现象海况变差后航向误差增大现场人员把滑模切换增益 k2 调大结果振荡加剧甚至出现舵机极限来回摆动的持续极限环。原因k2 的作用是抑制扰动和模型不确定项但它不是越大越好。当 k2 大于执行器在物理上能提供的舵效上限时控制进入饱和—退出—再饱和的循环滑模面无法正常收敛表现为自持振荡。解决先检查实际舵效记录舵角输出和航向误差的对应比例确定最大有效舵效增益然后把 k2 设置在该值附近偏下有余量时优先增大边界层厚度 Φ。如果扰动确实很大应当增加前馈补偿或使用扰动观测器直接估计扰动力矩而不是一味堆 k2。5.3 自适应参数与名义参数打架导致控制效果反而变差现象自适应律投入后系统航向响应出现低频慢变振荡每 2040 秒一个周期参数估计值在边界附近来回波动。原因参数自适应律和滑模切换项耦合不当自适应速率 γ1 设得太大参数估计值追着扰动在跑把高频扰动的能量吸进了参数通道。解决把 γ1 和 γ2 同时减小到原值的 1/5观察估计值的波动范围并给投影算子设置更紧的上下限。另一个常见原因是名义模型离线辨识时只在一个船速下做了试验装载状态改变后 a 和 b 的实际值已经大幅偏离名义值自适应律在正常范围内无法完全补偿需要重新做离线辨识或引入船速相关的增益调度。5.4 仿真模型过于理想导致实船效果验证失真现象仿真中航向误差小于 0.5 度、舵令平滑实船试验时误差和舵令都放大数倍。原因仿真模型里没有包含舵机死区、舵速限幅、采样延迟和量程量化效应。解决在仿真环境里把舵机模型替换为带死区的一阶惯性环节加舵速限幅器在反馈通道加采样保持和量化噪声模块然后对比同一控制器在理想模型和细化模型下的表现如果误差差异超过 2 倍说明控制器对执行器模型的依赖过强需要把边界层加厚或降低虚拟控制导数的增益。5.5 滑模面积分项和自适应积分项的饱和冲突现象长时间大角度机动后航向误差难以回调出现明显的超调和长尾。原因滑模面的积分项和自适应律的积分项在大型机动事件中同时累积机动结束后积分项残留过大导致系统回到稳态时有过冲而且自适应参数可能已经被机动过程的数据污染。解决在滑模面积分项前加入抗饱和限幅逻辑当航向误差超过阈值时暂停积分累积。对自适应律在机动过程中也应当减小自适应速率或者设置自适应律仅在稳态误差范围内激活。这个逻辑上的先后顺序对控制效果的影响远大于系数的微调。6. 从仿真到闭环验证最小可复现方案与航向精度验证方法把前面所有设计拼起来最小的验证流程分为三步跑通名义模型下的闭环仿真、引入不确定性和扰动后验证鲁棒性、最后在硬件在环或实船条件下做航向保持试验。仿真平台我常用 Matlab/Simulink 或 Python 的控制系统库控制律部分用同一个脚本来实现减少平台迁移时引入的差异。第一步的最小闭环仿真配置是用二阶 Nomoto 模型作为被控对象和控制器设计基准选择一组名义参数 K0.5 /s、T30 s采样步长 0.1 秒仿真时长 1000 秒。期望航向在 200 秒处从 0 度阶跃到 30 度500 秒处再回到 10 度用于验证跟踪能力和超调量。控制器参数按上一章的初始化表设置先关掉自适应律只用固定参数跑通。第二步在对象模型中注入不确定性将 K 和 T 分别摄动 30%并叠加幅值为 0.05 rad/s² 的低频正弦扰动和强度为 0.002 的白噪声。打开自适应律和投影算子对比开启前后的误差峰峰值与舵令动作频次。这里建议记录两个指标航向误差的均方根值和舵令的零交越次数。第二个指标直接反映舵机磨损程度迭代滑模相对传统滑模的最大优势就是它能在相同误差水平下把零交越次数降一个量级。第三步验证稳态精度在航向保持模式下观察 300 秒稳态数据统计航向误差的均值与标准差。常见做法是要求均值小于 1 度、标准差小于 2 度如果达不到优先检查前面避坑章节里提到的滤波、饱和和积分限幅问题。对于想深入调整参数的读者我最后给的技巧是从边界层厚度 Φ 入手而不是从切换增益入手。Φ 调大可以快速抑制抖振但会让航向出现 0.5 度左右的极限环Φ 调小则让控制更灵敏但舵令噪声变大。我的习惯是把 Φ 分成两个档位稳态时用较薄的边界层保证精度航向误差超过阈值时切到较厚的边界层防抖振这相当于一种简单增益调度。这种思路比单纯追求一套固定参数更接近实船需求。回头看这段经验我最大的教训是不管仿真做得多漂亮都必须把执行器模型和传感器噪声一块放进去仿真至少在数字孪生环节做一次闭环验证。纯模型层面的稳定性证明说明不了舵机能不能活下来控制器设计在仿真里跑通的概率很高但能在实船上安稳工作的方案从来不是靠调大抑制增益得来的。希望这套从建模、控制器设计到调试避坑的路径能帮你少走几段弯路。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询