终端滑模控制详解:从有限时间收敛到非奇异设计
1. 从“收敛速度不够快”说起终端滑模到底做了什么先聊个场景。你在做机械臂轨迹跟踪用了经典的滑模控制仿真波形也漂亮误差曲线也确实收敛到零了。可审稿人或者老板一句话问过来“你这个收敛速度能不能更快能不能做到有限时间收敛”你回头一看渐近收敛的理论保证确实只能说“当时间趋于无穷时误差趋于零”。好这本身没问题工程上误差到了千分之一以下肉眼也看不出来了。但有些场合比如高精度快速定位、飞行器姿态机动、电机伺服系统的点对点运动收敛速度直接决定系统动态性能这时候你就要认真考虑终端滑模了。终端滑模英文是 Terminal Sliding Mode常简写为 TSM。它最核心的改动是把传统线性滑模面里的线性误差项换成非线性项——具体地说是误差的分数幂次项。就这么一个看似不大的改动把收敛性质从“渐近收敛”硬生生提升为“有限时间收敛”。所谓有限时间收敛就是存在一个实实在在的时间 T在 T 时刻之后误差精确等于零而不是“无限逼近”。这个区别你可以类比两种到站方式传统滑模像一辆减速进站的高铁——理论上要无限时间才能完全停下但实际快到站时速度已经慢到可以忽略终端滑模像一列有精准停表的地铁——设定好时间到点就正好停在标线位置。工程上后者在很多场景下要友好得多。这篇文章我会从原理推导、控制器设计、奇异性问题、改进方案到工程调参把我自己啃终端滑模过程中的理解和个人经验完整梳理一遍。适合刚接触滑模控制的研究生、做运动控制的工程师以及准备把终端滑模写进论文或者项目里的朋友。2. 终端滑模要解决的问题传统滑模慢在哪2.1 从线性滑模面说起传统滑模控制里最常见的滑模面是线性形式s c·e é其中 e 是跟踪误差é 是误差导数速度误差c 是正的滑模面斜率系数。当系统进入滑模面 s 0 时有é -c·e这是一个典型的一阶线性微分方程解出来是e(t) e(0)·e^(-c·t)也就是说误差按指数规律衰减。问题就在这个“指数”上理论上 e(t) 要等到 t 趋于无穷才变成零。虽然实际工程里 e^(-5) 已经小得可怜但从控制理论的角度这不是严格意义上的“到达零”而是“渐进靠近零”。2.2 指数收敛的局限在哪里指数收敛有没有问题分场景。如果你的控制对象允许一定的稳态误差或者说你最终靠的是积分项来消除残差那渐近收敛问题不大。怕就怕两类场景第一类是高速高精度场合。比如半导体设备的直线电机定位要求在几毫秒内到达目标位置并且误差保持在微米级以下。指数收敛的尾巴拉得很长意味着“最后一点点误差”要花相对长的时间去磨掉。第二类是对收敛时间有硬指标的场景。比如无人机在狭窄空间里的姿态翻转你希望它“在 0.3 秒内完成”而不是“理论上无限时间完成”。渐近收敛给不出一个确定性的收敛时间上界这让控制系统设计师很难做预算。终端滑模就是冲着这个痛点去的我直接设计一种滑模面让系统在滑模面上运动时误差的微分方程变成能在有限时间内到达零点的形式。2.3 终端滑模的核心思路把滑模面改成非线性终端滑模的做法是把滑模面中的线性误差项 c·e 替换为非线性项 β·e^(q/p)其中 β 0p 和 q 通常取正奇数并且满足 p q。常见的终端滑模面长这样s é β·e^(q/p)其中 q/p 在 0 到 1 之间。当系统进入滑模面 s 0 后é -β·e^(q/p)这个微分方程的解是什么直接积分一下。把方程写为de/dt -β·e^(q/p)分离变量e^(-q/p) de -β dt两边积分从 e(0) 到 0从 0 到收敛时间 t_s∫_{e(0)}^{0} e^(-q/p) de -β·t_s左边算出来是 [p/(p-q)]·e(0)^((p-q)/p)所以t_s [p / (β·(p-q))]·e(0)^((p-q)/p)这个式子说明两件事第一收敛时间 t_s 是一个有限值不依赖于“趋于无穷”第二t_s 的大小由参数 β、p、q 共同决定你可以通过调参主动设计收敛速度。这就是终端滑模“有限时间收敛”这个名字的来源。我最早看到这个推导的时候觉得特别朴素——不就是把线性项改成幂次项嘛一积分反而出来一个有限时间。但细想就知道这里的巧妙之处当误差 e 很小的时候e^(q/p) 反而比 e 大因为 q/p 1 时小于 1 的数的分数次幂会变大所以误差越接近零点趋近速度反而越快这正好抵消了指数衰减在零点附近“拖尾巴”的问题。3. 终端滑模的数学原理和稳定性分析3.1 标准终端滑模的控制器推导终端滑模的控制器设计流程和传统滑模控制是一套思路先设计滑模面再设计控制律使得系统能到达滑模面并在其上运动。区别只在于滑模面的形式不同导致控制律里多了一些非线性项。以一阶非线性系统为例ẋ f(x) g(x)·u其中 x 是系统状态u 是控制输入f(x) 和 g(x) 是已知的光滑函数g(x) 非奇异即不为零。假设我们想让状态 x 跟踪参考轨迹 x_d定义误差 e x - x_d。选择终端滑模面s é β·e^(q/p)对滑模面求导ṡ ë β·(q/p)·e^(q/p - 1)·é这里要注意e^(q/p - 1) 就是 e^((q-p)/p)因为 q/p - 1 (q-p)/p。由于 p q所以 q-p 0这个指数是负的。这意味着当 e 0 时e^((q-p)/p) 会出现无穷大的奇异项——这是标准终端滑模的著名痛点后面我会专门讲。令 ṡ 0 求得等效控制 u_eqë ẋ_ddot - ḟ(x) - ġ(x)·u - g(x)·ů等等这里我偷懒了f(x) 的导数还得展开实际上我们一般用另一种方式处理。让我直接把二阶情形写清楚。考虑二阶系统ẋ₁ x₂ ẋ₂ f(x) g(x)·u定义跟踪误差 e x₁ - x_d则 é x₂ - ẋ_dë ẋ₂ - ẍ_d f g·u - ẍ_d。终端滑模面取s é β·e^(q/p)对时间求导ṡ ë β·(q/p)·e^(q/p-1)·é f g·u - ẍ_d β·(q/p)·e^(q/p-1)·é令 ṡ -η·sign(s)等速趋近律得到控制律u g^(-1)·[ -f ẍ_d - β·(q/p)·e^(q/p-1)·é - η·sign(s) ]这就是标准终端滑模控制器的一个典型形式。等速趋近律 -η·sign(s) 保证系统状态能够到达滑模面而到达之后由于滑模面的非线性设计误差在有限时间内收敛到零。3.2 稳定性证明Lyapunov 视角终端滑模的稳定性证明和传统滑模基本一致只不过 Lyapunov 函数导数的分析里多了非线性项的影响。取 Lyapunov 函数V (1/2)·s²求导得到V̇ s·ṡ s·[ f g·u - ẍ_d β·(q/p)·e^(q/p-1)·é ]代入控制律得到V̇ s·[ -η·sign(s) ] -η·|s|只要 η 0V̇ ≤ 0 就成立而且因为 V̇ -η·|s|系统能在有限时间内到达滑模面。到达时间 t_r 的上界也可以估算因为 |s| ≥ √2·V^(1/2)所以 V̇ ≤ -η·√2·V^(1/2)解这个微分方程可得V(t)^(1/2) ≤ V(0)^(1/2) - (η/√2)·t令 V(t) 0得到 t_r ≤ √2·V(0)^(1/2) / η √2·|s(0)| / (2η) |s(0)| / η。这是滑模到达阶段的时间上界。再加上滑模面上误差收敛时间 t_s整个闭环系统从初始状态到误差精确为零的总时间有一个明确上界T_total t_r t_s这就是终端滑模能做“收敛时间预算”的理论基础。3.3 和线性滑模的对比差的不只是收敛时间终端滑模和线性滑模的对比除了收敛时间性质不同还有几个值得注意的差异。第一到达阶段的行为不同。线性滑模在趋近过程中误差大的时候收敛快误差小的时候收敛慢终端滑模由于分数幂次的特性误差大的时候收敛速度反而不如线性滑模但误差小的时候收敛速度更快。这个特性导致终端滑模在初始误差较大的时候整体动态响应可能不如精心调参的线性滑模。为了弥补这个缺点后来发展出“快速终端滑模”在滑模面里同时保留线性和非线性两项。第二对参数扰动的敏感程度不同。终端滑模面中的分数幂项在零点附近斜率趋于无穷从数学上看导数为 (q/p)·e^(q/p-1)当 e→0 时这个导数趋于无穷这意味着误差稍微偏离零点滑模面就会产生很大的恢复力。好处是鲁棒性强坏处是容易激发高频抖振对执行机构不友好。第三奇异性问题。标准终端滑模存在控制量奇异的风险这个必须得处理不处理基本没法实际用。下面我专门展开讲。4. 终端滑模最大的坑奇异性问题4.1 奇异问题是怎么产生的回头看控制器里的这一项β·(q/p)·e^(q/p-1)·é其中 q/p - 1 (q-p)/p 0。也就是说当跟踪误差 e 精确等于零但误差导数 é 不为零比如系统刚越过目标点还在继续运动的时候e 的负指数次幂趋近于无穷大控制器输出的控制量 u 也趋近于无穷大。这在物理上意味着系统状态刚好穿过滑模面、误差为零的瞬间如果状态变化率不为零控制器会要求一个无穷大的输入。实际系统当然给不出无穷大的控制量结果就是控制饱和、执行机构冲击甚至系统失稳。这个问题在标准终端滑模的论文里经常被一笔带过但做仿真的时候你会直接看到控制量在零点附近冲出一个尖峰特别吓人。4.2 解决思路一非奇异终端滑模解决奇异性最经典的方案是 2002 年前后提出的非奇异终端滑模Nonsingular Terminal Sliding Mode, NTSM。核心思路是把滑模面里的 e 和 é 对调一下位置利用 p 和 q 的大小关系避开负指数。非奇异终端滑模面常取为s e (1/β)·é^(p/q)注意这里的指数是 p/q 1。那么控制器中出现的项是 é^(p/q - 1) é^((p-q)/q)因为 p q这个指数是正的不存在奇异问题。这个设计有两点非常巧妙。第一滑模面 s 0 对应的方程是 e (1/β)·é^(p/q) 0即 é -β^(q/p)·e^(q/p)和终端滑模在滑模面上的动态是一样的——有限时间收敛性质保留下来了。第二控制器里不再出现负指数项控制量有限实际可执行。我个人的经验是除非论文里明确要求用标准终端滑模做理论对比否则工程实现直接上非奇异终端滑模省太多麻烦。4.3 解决思路二快速终端滑模标准终端滑模还有一个问题当误差远离零点的时候收敛速度反而偏慢。快速终端滑模Fast Terminal Sliding Mode, FTSM的滑模面设计为s é α·e β·e^(q/p)它在滑模面上的动态是é -α·e - β·e^(q/p)当误差 e 很大时第一项 α·e 起主导作用收敛速度接近线性滑模的指数收敛当误差 e 接近零时第二项 β·e^(q/p) 起主导作用保证有限时间收敛。这样既有了大误差时的快速逼近又保留了小误差时的有限时间收敛性。不过要注意快速终端滑模同样存在奇异性问题。处理方法和标准终端滑模类似要么改用非奇异形式要么在误差接近零时切换控制律。常见的做法是把快速终端滑模的滑模面改造为s e (1/α)·é^(p₁/q₁) (1/β)·é^(p₂/q₂)这类双幂次滑模面的形式具体参数选择比较灵活适合结合被控对象的实际情况来定。5. 从理论到仿真一个具体例子跑通全过程5.1 被控对象和控制器设计理论说再多不如跑一个仿真。我用一个简单的二阶非线性系统来演示模型是ẋ₁ x₂ ẋ₂ -2·x₂ - 3·x₁ sin(x₁) u这个系统带了一个非线性项 sin(x₁)同时状态系数也比较强适合展示滑模控制的鲁棒性。目标让 x₁ 从初始值 x₁(0) 1 跟踪到零x₂(0) 0要求有限时间内到达并收敛。这里我直接用非奇异终端滑模来设计避免奇异性问题。取滑模面s e (1/β)·é^(p/q)其中 e x₁ - 0 x₁é x₂。参数取 β 2p 5q 3注意 p q且都是正奇数保证 é^(p/q) 对负数也有定义。控制器设计令 ṡ -η·sign(s) 等速趋近律ṡ é (1/β)·(p/q)·é^(p/q-1)·ë x₂ (1/β)·(p/q)·x₂^(p/q-1)·(-2·x₂ - 3·x₁ sin(x₁) u)代入 ë -2·x₂ - 3·x₁ sin(x₁) u并令 ṡ -η·sign(s)解得u 2·x₂ 3·x₁ - sin(x₁) - β·(q/p)·x₂^(2-p/q) - η·(β·q/p)·x₂^(1-p/q)·sign(s)看着复杂其实就是把方程反解出来。取 η 1.5。5.2 Simulink 仿真搭建和参数敏感性仿真时间设 5 秒采样周期 1 ms。这里有几个实操细节很关键。控制律中 x₂^(1-p/q) 在 x₂ 0 附近会出现问题。p 5q 3则 1-p/q 1-5/3 -2/3负指数。当 x₂ 0 且 s ≠ 0 时这一项无穷大。这其实是非奇异终端滑模在实际离散实现中常见的“伪奇异”现象。解决方法是给这项一个小的死区或者饱和处理例如当 |x₂| ε 时这一项用 x₂ ε·sign(x₂) 代替。我取 ε 0.001仿真结果非常平稳。sign 函数的抖振问题也要处理。直接用 sign(s) 在仿真里就会出现控制量以很高频率在正负之间切换虽然数值上能跑过但如果之后要做硬件实验这样的控制信号执行机构受不了。建议把 sign(s) 换成饱和函数 sat(s/φ)其中 φ 是边界层厚度。φ 太小则抖振没有完全消除φ 太大则引入了稳态误差。我试过 φ 取 0.01 到 0.05 之间对结果影响不大但要注意此时滑模的“精确”到达变成了“边界层内”到达理论上的有限时间收敛变成了实际上的有界收敛。做理论分析写论文时这个近似要提前跟审稿人交代清楚。5.3 仿真结果分析和调参心得跑完仿真x₁ 的轨迹在大约 1.2 秒时到达零之后一直保持在零附近数值上在 ±0.001 以内控制量也保持在 ±5 以内没有出现尖峰。和线性滑模 c·e é 0取 c 4做对比线性滑模同样在 1 秒左右让误差落到 0.01 以下但误差从 0.01 到 0.001 又磨了将近 1 秒终端滑模则在零点附近明显更“利落”。调参经验归纳一下β 越大小误差时收敛越快但 β 太大会导致滑模面附近的高增益放大噪声控制量毛糙。p/q 越接近 1收敛时间越短但控制量越大p/q 越接近 0大误差段收敛越慢。一般取 p/q 在 0.5 到 0.8 之间比较平衡。η趋近律增益决定了到达滑模面的速度η 太小抗扰能力差η 太大抖振严重。实用中可以先调 η 使到达阶段表现满意再调 β 优化收敛阶段。我踩过的一个坑是刚开始把 β 调得很大比如 β 10期望收敛更快结果系统在零点附近出现了明显的高频振荡控制量也一直是满幅跳变。后来把 β 降回 2 左右加了边界层替换 sign系统就稳定了。总结一句话终端滑模的调参本质是在“收敛速度”和“控制平滑度”之间做权衡不要贪快。6. 终端滑模的几种演变从标准到自适应再到离散6.1 非奇异终端滑模的进一步改进非奇异终端滑模解决了奇异性但引入了新问题滑模面 s e (1/β)·é^(p/q) 中 é^(p/q) 要求 é 非负或者 p、q 必须取正奇数。为了避开这个限制学者们提出了“终端滑模的终端吸引子”概念——本质上是通过设计分段函数把滑模面定义成在不同误差范围内切换的形式。比如一类常用形式是s é β·ψ(e)其中 ψ(e) 在 |e| ≥ μ 时取 e^(q/p)在 |e| μ 时取线性形式 δ₁·e δ₂·e³目的是让 ψ(e) 在 e 0 附近可导且不奇异。这种分段设计的好处是理论上严谨实际调试的时候也方便但参数多了需要逐一调。6.2 与干扰观测器、自适应的结合终端滑模的鲁棒性虽然好但它本质上是用“高增益”换“鲁棒”。如果系统有持续的扰动控制量需要一直跟扰动对抗抖振会更严重。一个很常见的工程化改进是“终端滑模 扰动观测器”。思路是这样的把系统中的不确定性和外部扰动合并成一个集总扰动项 d在终端滑模控制律中显式地加入扰动估计值 d̂控制器只需要补偿“估计误差”而不是“全部扰动”这样可以大幅降低切换增益 η 的取值缓解抖振。扰动观测器可以设计成扩展状态观测器或者简单的非线性扰动观测器。以扩展状态观测器为例把 d 作为扩展状态构造观测器ż₁ z₂ l₁·(x₁ - z₁) ż₂ f g·u z₃ l₂·(x₁ - z₁) ż₃ l₃·(x₁ - z₁)其中 z₃ 就是扰动 d 的估计值。观测器带宽由增益 l₁、l₂、l₃ 决定按带宽设计法整定即可。实测经验是观测器带宽取控制带宽的 5 到 10 倍效果较好太高会放大测量噪声。自适应终端滑模则是把切换增益 η 设计成自适应参数根据滑模面的大小动态调整。效果类似但要注意自适应律的收敛速度和参数漂移问题。参数漂移在持续扰动下经常出现得加 σ 修正项或死区。6.3 离散域实现中的常见问题论文里终端滑模大部分在连续域里分析但真到工程实现控制器都是数字离散化的。离散化带来的问题主要有两个。第一个是有限时间收敛性质在离散采样下会退化。理论上误差在时刻 T 精确到零但采样周期是有限的实际上误差会在零附近的一个边界层内波动。波动幅度大致与采样周期呈正比关系。想减小这个波动只能提高采样频率实话说终端滑模对采样率的要求比 PID 要高不少。第二个是离散化方式的影响。简单的欧拉离散会把滑模控制的一些几何性质扭曲尤其当采样周期比较大时系统可能会出现隐晦的极限环振荡。我通常会先用零阶保持器精确离散化被控对象模型再在这个离散模型上重新设计滑模面和控制律。虽然麻烦一些但移植到实际控制器时省去很多调试时间。如果控制器的计算能力有限也可以沿用连续域设计但采样周期必须小于系统最小时间常数的四分之一甚至八分之一。7. 终端滑模适合用在哪场景和价值边界7.1 强项场景从我自己做过的项目来总结终端滑模在以下几类场景里比较有优势。一是高精度快速定位。典型代表是直线电机驱动的运动平台和工业机械臂的快速点到点运动。这类系统对“到位时间”有硬要求终端滑模的有限时间收敛正好对路。二是飞行器姿态控制。飞行器姿态运动的强耦合、强非线性、参数不确定性使得滑模控制天然有一席之地。而姿态机动任务又常常有明确的时间约束终端滑模能给出收敛时间上界有利于任务规划。三是电力电子变换器控制。Boost、Buck 这类变换器本质是变结构系统滑模控制天然匹配其开关特性。终端滑模在输出电压跟踪问题上也能提供更快的动态响应。四是执行器饱和约束下的快速响应问题。终端滑模由于能快速收敛在控制量受限时可以更快退出饱和整体响应比线性滑模紧凑。7.2 不擅长的场景终端滑模不是万能的。以下几类场景我会慎重使用。第一强测量噪声场景。终端滑模面的分数幂项在零点附近斜率极大轻微测量噪声就会被放大成可观的控制波动。比如用低精度编码器做速度反馈时速度信号噪声很大终端滑模很容易引发高频抖振。这种场景建议搭配高带宽观测器做状态估计后再用。第二对控制量平滑度有苛刻要求的场景。比如某些精密加工设备控制力矩波动直接影响表面质量。终端滑模再怎么处理天然比 PID 或 LQR 的力矩波动大。第三模型严重不确定的场景。终端滑模虽然有一定鲁棒性但滑模面的设计依赖于模型相对阶。模型结构都不对的话滑模设计无从谈起。这种情况不如用无模型控制方法。7.3 和现有控制方法搭配的工程建议我的工程观点是终端滑模不是用来替代 PID 的而是在特定环节做增强的。一个实用的搭配方案是“PD 终端滑模补偿”。用 PD 控制器做基础闭环保证系统在正常工作点附近的基本动态同时用终端滑模设计一个补偿项专门处理扰动和模型偏差。这样日常工况下控制量平滑遇到大的扰动时终端滑模补偿项快速介入兼顾了稳态平滑性和动态鲁棒性。另一个方案是“终端滑模 前馈”。终端滑模负责鲁棒稳定和有限时间收敛前馈负责主要的跟踪性能。因为前馈抵消掉了大部分已知动态终端滑模只需要处理残余误差切换增益可以取得很小抖振也低。这些搭配在工程上比“裸用”终端滑模稳得多实话说我几乎没有在正式项目里直接裸用过一套纯终端滑模都是做的混合控制。8. 总结性思考终端滑模到底值不值得学终端滑模这个概念说复杂也复杂说简单也简单。核心就一句话把滑模面上的线性误差项改成分数幂次项让误差动态从“指数渐近收敛”变成“有限时间收敛”。就这一个改动衍生出了非奇异终端滑模、快速终端滑模、自适应终端滑模、离散终端滑模一大堆变种每一篇论文都像是在同一个骨架上做不同的装饰。从我个人的实际体会来看终端滑模最大的价值不在于它比传统滑模提升了多少性能而在于它提供了一种“有限时间收敛”的思维方式。当你开始接触这个思路之后再看其他控制方法比如有限时间稳定Finite-time Stability理论、固定时间稳定Fixed-time Stability理论会发现它们其实是同一个思想族谱上的不同分支。搞懂了终端滑模再上手那些“更高级”的有限时间控制方法基本就是顺水推舟的事。最后再分享一个小技巧如果你在写论文需要展示终端滑模的收敛时间优势别只看误差曲线的尾巴把收敛时间的理论值和仿真测量值放在同一个表里对比审稿人对这种“理论可观、实测可验”的展示方式印象会特别好。我自己第一次做这个对比时发现实测收敛时间往往比理论值略小一点这是因为理论值的推导用了一些放缩不等式给的是保守上界。把这个差异在正文里说明白反而显得你对问题理解得透彻。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →