ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

终端滑模控制详解:从有限时间收敛到工程实践

终端滑模控制详解:从有限时间收敛到工程实践 我记得第一次在论文里看到“终端滑模Terminal滑模”这个名词时心里是有点发怵的——滑模面里带着分数幂 (\dot x\beta x^{q/p})证明过程一堆不等式看起来像某种数学魔术。后来自己沉下来推导、仿真、调参才意识到这东西的核心其实特别朴素普通滑模的收敛是渐近的理论要花无限时间才到零终端滑模把误差动态换成非线性形式硬是把收敛时间压成了有限值。这篇文章我想把这背后的直觉、推导、坑和工程经验一次说清楚适合正在学滑模控制的研究生也适合工程上想用它做高精度伺服、机器人、飞行器控制但又被论文劝退的工程师。1. 从“渐近收敛”到“有限时间收敛”普通滑模到底慢在哪很多人学滑模控制的时候最不解的一件事是既然滑模控制号称鲁棒性强为什么实际系统里误差总是“差一点才到零”这不是调参问题而是普通滑模的底层逻辑决定的。1.1 普通滑模的收敛速度为什么让人着急经典滑模设计会把滑模面取成线性形式比如二阶系统的滑模面写成 (s\dot ece)其中 (c0)。一旦系统进入滑模面 (s0)等效的误差动态就是[ \dot e-ce ]这个一阶线性微分方程的解是 (e(t)e(0)e^{-ct})。看着挺干净但问题藏在“趋近”两个字里(e(t)) 是慢慢趋向0的理论上无限时间才能严格到达0。仿真里看到的稳态小误差往往是数值精度和死区造成的假象实际系统里还有摩擦、死区、量化等因素误差最终会停在某个小邻域内收敛到真正0在理论上是做不到的。这在高精度运动控制里非常棘手。比如精密平台的定位控制要求到位后误差小于一个微米如果只靠普通滑模误差逼近0的速度越来越慢越到后面越像“龟速爬行”。而且越接近目标系统对残余干扰越敏感可能一直在零位附近小抖。1.2 一个反直觉的问题误差趋近于零到底要多久我们可以做一个直观的对比。在线性滑模面上误差从 (e(0)) 降到 (e(t))到达某个给定阈值 (\varepsilon) 的时间是[ t_{\varepsilon} \frac{1}{c}\ln\frac{|e(0)|}{\varepsilon} ]当 (\varepsilon \to 0) 时时间趋于无穷。这就是渐近收敛的代价你可以任意接近零点但永远到不了。那如果把误差动态改成非线性形式呢比如让系统沿滑模面满足[ \dot e -\beta e^{q/p} ]其中 (\beta0)(0qp)。解这个方程从 (e(0)) 到0的时间是[ t_s \frac{p}{\beta(p-q)} |e(0)|^{1-q/p} ]注意这个式子结果有限只要初值有限收敛时间就是有限值。这就是终端滑模的立足点换掉线性收敛律让误差在有限时间内严格归零。别小看这个“有限时间”在需要快速停机、快速对准、快速轨迹跟踪的场合这种特性意味着响应时间的本质提升。1.3 终端滑模的思路把滑模面“掰弯”终端滑模的想法本质上就是把原本直线的滑模面 (s\dot ece) 换成曲线 (s\dot e\beta e^{q/p})。在 (e)–(\dot e) 相平面里(s0) 是一条通过原点的曲线。这条曲线在原点附近会更陡甚至切线趋近垂直所以误差沿着它滑动时越靠近零点速度越大最终像“砸”向零点一样而不是“飘”向零点。这里有个很关键的直觉分数幂 (q/p) 的作用是让误差收敛速度与当前误差之间不再是线性关系。误差大的时候收敛速度被拉低一些换取误差小的时候收敛速度反而更高。这种“大误差慢一点、小误差快一点”的折中正是终端滑模能在接近稳态时保持快速性的原因。理解了这一点后面所有公式就都有了生命终端滑模不是数学家故意玩分数幂而是用一个弯折的滑模面把渐近收敛变成有限时间收敛。2. 终端滑模面的数学直觉分数幂与奇异性的最初来源光知道“掰弯滑模面”还不够真正动手设计时会遇到很多细节比如为什么 (q/p) 要在0到1之间为什么分子分母最好都是奇数为什么控制律里会冒出奇异性。这一节从数学性质入手把这些问题一次讲透。2.1 滑模面设计的核心约束在设计终端滑模面时最常取的形式是[ s\dot e\beta e^{q/p} ]这里有两个硬约束第一(0q/p1)。如果指数大于等于1收敛速度就退化回线性甚至更慢有限时间性消失。第二为了保证 (e^{q/p}) 在实数域上有良好定义通常要求 (p) 和 (q) 都是奇数。这个细节特别重要——如果指数是偶数分母比如 (e^{2/3})当 (e0) 时就是个复数操作实际仿真会直接出问题。工程上常用 (q1,p3) 或 (q3,p5) 这样的组合保证指数形式是实数。还有一个经常被忽略的问题当 (e0) 时(e^{q/p}) 的导数 ((q/p)e^{q/p-1}) 仍然可能是实数只要 (q) 和 (p) 是奇数(q-p) 是偶数负数开奇数根没问题但控制器设计时会遇到除零风险这就是后面单独一节要讲的奇异性。2.2 (s\dot e\beta e^{q/p}) 的有限时间收敛证明为了让人信服这里快速推一下有限时间收敛性。设 (s0)即 (\dot e-\beta e^{q/p})。两边同时除以 (e^{q/p})得到[ e^{-q/p}\mathrm{d}e -\beta \mathrm{d}t ]两边积分从 (e(0)) 到0[ \int_{e(0)}^{0} e^{-q/p}\mathrm{d}e -\beta t_s ]左边是 (\frac{p}{p-q} e^{(p-q)/p}) 代入上下限得到[ \frac{p}{p-q} \left( 0 - |e(0)|^{(p-q)/p} \right) -\beta t_s ]这里注意负数的情况要取绝对值并考虑符号最终收敛时间的绝对值为[ t_s \frac{p}{\beta(p-q)} |e(0)|^{(p-q)/p} ]因为 (p-q0)所以 (t_s) 是有限正数。这就是终端滑模名字的来源误差在“终端”时刻 (t_s) 精确到达零而不是无限逼近。这个证明很基础但它是所有终端滑模变体的起点。2.3 从相轨迹看懂“终端”二字相平面分析比一堆公式更直观。在线性滑模面 (s\dot ece0) 下相轨迹是一条斜率为 (-c) 的直线越靠近原点切向速度越小就像车快到站时慢慢滑行。而终端滑模面 (s\dot e\beta e^{q/p}0) 是一条在原点附近趋于垂直的曲线。你看相轨迹就知道误差向原点运动时横轴坐标 (e) 的变化率 (\dot e-\beta e^{q/p})当 (e) 很小时因为指数 (q/p1)(\dot e) 的绝对值比线性项大得多。比如 (e0.01)(e^{1/3}\approx0.215)而 (ce) 只有0.01倍左右终端项带来的速度提升是数量级的。所以轨迹会“硬冲”向原点这也是终端滑模在视觉上最显著的特征。但这个“硬冲”也埋下了隐患如果对状态求导(\dot e) 随 (e) 的变化率是 (\beta (q/p) e^{q/p-1})当 (e\to0) 时这个导数趋向无穷。在控制器设计里这个无穷项就是奇异性的来源。3. 控制律推导中的关键分岔等速趋近律下的一次完整演练理论说很多不如完整推导一遍控制律。这里以一个带匹配扰动的二阶非线性系统为例走一遍终端滑模控制器的完整推导流程每一步都说明白为什么这么做。3.1 被控对象与误差动力学的设定考虑一般二阶非线性系统[ \ddot x f(x,t) g(x,t)u d(t) ]其中 (d(t)) 代表有界不确定性或外部扰动满足 (|d(t)|\le D)(f,g) 已知(g\neq0)。假设期望轨迹为 (x_d)定义误差 (ex-x_d)。那么误差动态为[ \ddot e \ddot x - \ddot x_d f(x,t) g(x,t)u d(t) - \ddot x_d ]选择终端滑模面[ s \dot e \beta e^{q/p} ]其中 (0qp)(p,q) 为奇数(\beta0)。目标是设计 (u)让系统从任意初始状态到达滑模面并保持在 (s0) 上。3.2 求解等效控制 (u_{eq}) 时的代数操作对滑模面求导[ \dot s \ddot e \beta \frac{q}{p} e^{q/p-1}\dot e ]把 (\ddot e) 的表达式代进去[ \dot s f g u d - \ddot x_d \beta \frac{q}{p} e^{q/p-1}\dot e ]为了强迫状态轨迹到达并停留在滑模面上通常取趋近律为 (\dot s -\varepsilon \operatorname{sign}(s) - k s)其中 (\varepsilon0)(k0)。这个趋近律比单纯的等速趋近律多了一个比例项 (ks)能在远离滑模面时加快到达速度也方便整定。把趋近律代入并解出 (u)[ u \frac{1}{g} \left[ -f \ddot x_d - \beta \frac{q}{p} e^{q/p-1}\dot e - \varepsilon \operatorname{sign}(s) - k s - d \right] ]实际工程中 (d) 未知通常用其上界补偿即把 (-d) 替换成 (-\mu \operatorname{sign}(s))其中 (\mu\ge D)。于是控制律写成[ u \frac{1}{g} \left[ -f \ddot x_d - \beta \frac{q}{p} e^{q/p-1}\dot e - \varepsilon \operatorname{sign}(s) - k s - \mu \operatorname{sign}(s) \right] ]开关项可以合并最终控制器里有 ((\varepsilon\mu)\operatorname{sign}(s))。3.3 完整控制器表达式与参数约束整理一下完整控制器[ u \frac{1}{g}\left[-f\ddot x_d-\beta \frac{q}{p} e^{q/p-1}\dot e - k s - (\varepsilon\mu)\operatorname{sign}(s)\right] ]注意其中有一个显式的分数幂求导项[ \beta \frac{q}{p} e^{q/p-1}\dot e ]因为 (q/p-10)所以当 (e\to0) 而 (\dot e\neq0) 时这一项趋向无穷大。这是终端滑模最经典的问题控制量在误差过零时会爆炸。如果系统状态恰好穿越 (e0) 且速度非零控制器会输出一个巨大的值轻则饱和抖动重则损坏执行器。参数约束方面(\beta0) 决定收敛速度和鲁棒性之间的平衡(\varepsilon\mu) 决定对扰动的抑制强度但它也直接贡献抖振(k) 决定到达滑模面的速度。这几个参数互相制约后面调参一节会细说。4. 奇异问题终端滑模最容易被喷的短板终端滑模理论刚出来那几年最受诟病的就是奇异性。很多人在仿真里试了一下就放弃了因为控制量偶尔会蹦出一个巨大尖峰还以为是数值积分问题其实这是控制器结构的固有缺陷。4.1 负分数幂导致的控制量爆炸回顾控制律里的项[ -\beta \frac{q}{p} e^{q/p-1}\dot e ]当 (e) 很小、(\dot e) 不为零时因为指数是负数整个项可能非常大。考虑 (e0.001)(q/p1/3)(q/p-1-2/3)(e^{-2/3}100)如果 (\dot e0.1)(\beta5)这就有 (5\times(1/3)\times100\times0.1\approx16.7)还不算太夸张。但若 (e10^{-6})项值会变成上万完全不可接受。这个奇异性在实际系统中的后果很现实当被控对象在稳态附近还有速度过零行为时比如对一个位置信号做阶跃跟踪误差会从正向负穿越穿越瞬间 (\dot e\neq0)此时控制量会出现尖峰推动执行器饱和进而可能激发机械谐振或电机过流。4.2 非奇异终端滑模NTSM如何绕开问题解决奇异性的标准做法是改造滑模面避开负指数导数项。最常用的是非奇异终端滑模面比如[ s e \beta \dot e^{p/q} ]注意这里的指数要求 (1 p/q 2)并且通常取两个奇数。对 (s) 求导[ \dot s \dot e \beta \frac{p}{q} \dot e^{p/q-1} \ddot e ]因为 (p/q-10)所以当 (\dot e0) 时这一项为0不会产生无穷大。把它代入控制律控制量里的对应项变成正分数幂乘以 (\ddot e)数值上完全可控。这种改法的代价是滑模面的物理含义变了现在的“终端收敛”发生在速度 (\dot e) 上而不是位置误差 (e) 上。通过适当选择参数最终仍能保证误差在有限时间内收敛但数学证明会更绕一些。实际使用中NTSM比原始TSM稳健得多这也是为什么现代文献里提到终端滑模很多时候默认是非奇异版本。4.3 快速终端滑模FTSM对收敛速度的额外补偿另一个常见改进是快速终端滑模滑模面写成[ s\dot e\alpha e \beta e^{q/p} ]其中 (\alpha0)(0q/p1)。这里同时保留了线性项和分数幂项当误差很大时线性项 (\alpha e) 主导保证较快的整体收敛当误差很小时分数幂项 (\beta e^{q/p}) 主导保证有限时间收敛。这样一来既避免了纯终端滑模在大误差阶段收敛偏慢的缺点又保留了有限时间特性。快速终端滑模还可以和非奇异形式结合比如 (se\alpha \dot e^{p_1/q_1}\beta \dot e^{p_2/q_2}) 等但工程上常用最基础的那一版就够了。我在电机控制里试过FTSM的瞬态响应比普通终端滑模更舒服启动阶段没有那种“慢悠悠滑过去”的感觉。5. 从推导走向工程离散实现、参数调优与实测体会理论推导再漂亮落到代码里总会遇到新的麻烦。终端滑模在仿真里一跑就过上实验台之后各种抖振、饱和、奇异性问题才真正显现。这里把我实际踩过的坑和解决办法整理出来。5.1 时间离散化对有限时间收敛的影响连续时间理论说误差会在 (t_s) 时刻严格归零但在离散实现里这个结论会打折扣。采样步长 (T_s) 一旦固定系统实际误差只能收敛到一个准滑模域内域的大小和采样周期、开关增益、扰动幅值直接相关。举个例子一个以 (T_s1\text{ ms}) 运行的控制循环理论收敛时间是 (t_s0.05\text{ s})但仿真里误差会在 (e10^{-5}) 左右抖动死区由数值精度和符号函数切换共同决定。这不是终端滑模失效而是离散化的必然结果。实操时需要注意不要为了追求“理论有限时间”无限调高 (\beta)因为离散系统中高增益会被放大成抖振。如果你需要更高的稳态精度优先考虑减小采样周期而不是堆增益。终端滑模在离散系统里仍然比普通滑模收敛快只是做不到严格的“零误差”。5.2 (q/p) 选取的经验法则奇偶性、分母大小与抖振权衡参数选择直接决定控制性能。以下是我自己的经验总结奇偶性(p) 和 (q) 必须同为奇数否则负数状态会出复数。比如 (e^{2/3}) 当 (e0) 时在仿真里会直接报错或者给出NaN。默认选 (q1,p3) 最省心。(q/p) 越小近零点收敛越快但奇异性越严重。如果想避开奇异用NTSM或FTSM形式通常取 (p/q) 在 (3/2) 到 (5/3) 之间收敛速度和奇异性平衡最好。(\beta) 和 (q/p) 配合。理论上收敛时间正比于 (|e(0)|^{1-q/p}/\beta)。你如果发现误差收敛太慢可以先提高 (\beta)但要注意 (\beta) 大会放大噪声。经验上(\beta) 先从小到大扫描观察控制量峰值峰值不能超过执行器限幅的80%。还有一个容易被忽视的点分母 (p) 越大分数幂计算量越大嵌入式处理器上耗时明显增加。对于STM32这类MCU直接算 (e^{1/3}) 可以用 powf 函数但循环周期紧张时要留意耗时。实测 (p3) 足够不需要一味追求分母超大。5.3 参数调整的具体顺序与判据终端滑模控制器的参数至少三四个一起调容易乱。我总结的调参顺序是先调到达段再调滑动段。第一步固定 (\beta) 和 (q/p)调 (k) 和 (\varepsilon\mu)让系统能在规定时间内到达滑模面。判据是观察 (s(t)) 的曲线如果它迅速收敛到0附近且没有大幅超调说明到达段调好了。第二步再调 (\beta) 和 (q/p)改善滑模段上的收敛速度。判据是看误差 (e(t)) 的收敛曲线如果它出现“拖尾”说明收敛慢可以适当增大 (\beta) 或减小 (q/p)。第三步最后微调开关增益 (\varepsilon\mu)。这个值不要一味加大能抑制扰动就行否则抖振会让人崩溃。如果系统出现高频小幅度振颤多半是 (\varepsilon\mu) 偏大或符号函数直接作用于误差导致。工程上建议用饱和函数替代 (\operatorname{sign}(s))边界层厚度根据系统噪声水平设定比如取到滑模面的马尔可夫抖动幅度的5倍。这会牺牲一点理论鲁棒性但能换到可以接受的执行器寿命。6. 和主流滑模改进方案放在一起看终端滑模的生态位终端滑模并非万能它有鲜明的优缺点。把这个家族放在一起横评一下你对它的定位会更清楚。6.1 线性滑模、终端滑模、超螺旋滑模的侧重点对比方案收敛特性主要优势主要问题典型应用线性滑模渐近收敛设计简单稳定证明容易收敛慢理论不到零一般鲁棒控制终端滑模 (TSM)有限时间收敛收敛快精度高奇异性风险抖振较强高精度伺服非奇异终端滑模 (NTSM)有限时间收敛避免奇异结构稳健收敛时间/参数关系复杂机器人、电机快速终端滑模 (FTSM)有限时间收敛大误差时响应快参数多整定复杂需要快速响应的系统超螺旋滑模有限时间收敛连续控制量抖振小需要扰动导数有界设计复杂有高精度要求且测量噪声小的系统从这个表能看出终端滑模的核心优势在于“结构简单有限时间收敛”但代价是抖振和奇异性。超螺旋滑模控制量连续且无抖振但它本质上是二阶滑模设计时要求扰动导数的信息对测量噪声更敏感。没有一种方案能在所有维度上赢。6.2 什么场景适合用它什么场景别硬上如果被控对象对收敛时间有硬性要求比如无人机快速避障后的姿态恢复、精密定位平台的快速到位、高速伺服系统的跟踪控制终端滑模很合适。它的优势刚好在这些场景里发挥作用误差快速归零超调小。如果你的执行器非常“娇贵”控制量不能出现突然尖峰或者系统存在较大测量噪声终端滑模的固有抖振会让你很痛苦。这种时候先把符号函数换成饱和函数或双曲正切再用扰动观测器把开关项幅度压下去否则实验很难跑稳。还有一种情况不要硬上系统模型极不准确匹配扰动远大于名义项。此时终端滑模的等效控制部分本身就不准单靠开关项鲁棒会导致抖振巨大。建议先加扰动观测器或自适应项让名义系统更可靠。6.3 常见误解有限时间收敛不等于全局收敛最后必须澄清一个常见误区有限时间收敛指的是“在滑模面上误差从初值到0的时间有限”它不等于“系统从任意初态收敛到0的时间有限”。系统要达到滑模面还需要花时间这部分时间由趋近律决定。如果你的趋近律 (k,\varepsilon) 调得很小系统可能先在滑模面外磨蹭很久总收敛时间并不理想。另一个误解是“终端滑模一定更快”。实际上误差远离零点时线性滑模的收敛速度可能反而更快。终端滑模的优势集中在零点附近如果只关心大误差阶段的快速响应快速终端滑模或普通滑模加前馈可能更直接。我在实际调终端滑模时最后一个习惯是仿真里看 (s) 收敛到0的时间再观察误差从1降到0.01的时间。如果前者占总收敛时间比例过大就去调趋近律参数如果后者拖尾严重再去动滑模面参数。这样分开诊断能省掉很多瞎调的时间。毕竟控制器最终是给工程用的理清每个参数管哪一段才是从“看得懂”到“用得好”的关键一步。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进