滑模控制(Sliding Mode Control, SMC)是一种鲁棒非线性控制方法,通过设计控制律使系统状态在有限时间内到达预设的滑模面,并沿滑模面滑动至平衡点。其最大特点是对系统参数变化和外部扰动具有强鲁棒性,在电机控制、机器人控制、航空航天等领域得到广泛应用。本章将系统介绍滑模控制的基本原理、设计方法、实际问题及高阶扩展。
滑模控制的本质是一种变结构控制(Variable Structure Control, VSC),通过切换控制结构使系统状态被约束在预定的流形(滑模面)上滑动。这种控制策略包含两个阶段:
滑模控制的独特之处在于其”不连续控制”特性。传统控制器通常产生连续的控制信号,而滑模控制器在滑模面两侧采用不同的控制律,形成一种”开关”控制。这种看似简单粗暴的策略,却能够提供极强的鲁棒性——对于满足匹配条件的扰动和参数不确定性,滑模控制可以实现完全的不变性。
考虑一个简单的二阶系统示例:
Phase Portrait
x₂ ↑
|
| ╱ Sliding Surface s=0
| ╱
───┼───────→ x₁
╱|
╱ | Reaching Motion
╱ | ↘
╱ | System Trajectory
在相平面上,系统轨迹首先被驱动向滑模面(粗箭头所示的到达运动),一旦到达滑模面,系统状态将被”捕获”并沿着滑模面滑动至原点。关键在于,即使存在扰动试图将系统状态推离滑模面,控制器的切换作用会立即将其拉回,形成一种”滑动”运动。
考虑非线性系统:
\[\dot{x} = f(x,t) + g(x,t)u + d(t)\]其中:
| $d(t)$ 是有界扰动,$ | d(t) | \leq D$ |
滑模控制设计步骤:
定义滑模面: \(s(x) = c^T x = c_1x_1 + c_2x_2 + ... + c_nx_n = 0\)
其中 $c$ 的选择保证在滑模面上系统具有期望的动态特性。
设计控制律: 控制律通常包含等效控制和切换控制两部分: \(u = u_{eq} + u_{sw}\)
到达条件: 确保系统状态到达并维持在滑模面上,需满足滑模到达条件: \(s\dot{s} < 0\)
更强的条件是 η-到达条件: \(s\dot{s} \leq -\eta|s|, \quad \eta > 0\)
为了保证滑模的存在性和到达性,需要满足以下条件:
匹配条件:扰动和不确定性必须在控制输入的作用范围内。数学上,如果扰动 $d$ 可以表示为 $d = g(x,t)\Delta$,其中 $g(x,t)$ 是控制输入的系数矩阵,则称扰动满足匹配条件。这是滑模控制能够完全抑制扰动的关键前提。
| 实际设计中,通常使用Lyapunov方法来验证这些条件。选择Lyapunov函数 $V = \frac{1}{2}s^2$,如果能够证明 $\dot{V} = s\dot{s} < -\eta | s | $(其中 $\eta > 0$),则同时保证了到达性和有限时间收敛性。 |
当系统在滑模面上时,有 $s = 0$ 且 $\dot{s} = 0$。由此可得等效控制:
\[\dot{s} = \frac{\partial s}{\partial x}\dot{x} = \frac{\partial s}{\partial x}[f(x,t) + g(x,t)u_{eq}] = 0\]解得: \(u_{eq} = -\left(\frac{\partial s}{\partial x}g(x,t)\right)^{-1}\frac{\partial s}{\partial x}f(x,t)\)
理想滑模具有以下重要特性:
降阶特性:n维系统在(n-1)维滑模面上的运动变为(n-1)阶系统。这种降阶简化了系统分析和设计。例如,二阶系统在一维滑模面 $s = \dot{x} + \lambda x = 0$ 上的运动退化为一阶系统 $\dot{x} = -\lambda x$。
不变性:对匹配扰动和参数变化完全鲁棒。这是滑模控制最引人注目的特性。只要扰动满足匹配条件且控制增益足够大,系统在滑模面上的运动完全不受扰动影响。这种”绝对鲁棒性”在其他控制方法中很难实现。
有限时间收敛:状态在有限时间内到达滑模面。与渐近稳定不同,滑模控制可以保证系统在有限时间 $T_r$ 内到达滑模面: \(T_r \leq \frac{|s(0)|}{\eta}\) 其中 $\eta$ 是到达律参数。这对于需要快速响应的应用特别重要。
解耦特性:对于多输入多输出系统,合理设计的滑模面可以实现输入输出解耦,简化控制器设计。
参数不敏感性:滑模控制的性能主要取决于滑模面的选择,而对控制增益的具体值不敏感(只要足够大)。这降低了对精确模型的依赖。
对于跟踪控制问题,定义跟踪误差: \(e = x - x_d\)
其中 $x_d$ 是期望轨迹。经典的线性滑模面设计为:
\[s = \left(\frac{d}{dt} + \lambda\right)^{n-1}e\]其中 $\lambda > 0$ 是设计参数,$n$ 是系统阶数。
示例:二阶系统 \(s = \dot{e} + \lambda e\)
当 $s = 0$ 时,误差动态为: \(\dot{e} + \lambda e = 0\)
这保证误差指数收敛到零。
为了消除稳态误差,可以引入积分项:
\[s = e + k_1\dot{e} + k_2\int_0^t e(\tau)d\tau\]积分滑模面的优势:
积分项的引入特别适用于存在常值或慢变扰动的系统。传统滑模控制依靠高频切换来抑制扰动,但对于常值扰动,这会导致稳态时的持续抖振。积分作用可以”记忆”并补偿这些扰动,实现零稳态误差。
设计积分滑模面时需要注意积分饱和问题。实际实现中常采用抗饱和机制:
\[\int_0^t e(\tau)d\tau = \begin{cases} \int_0^t e(\tau)d\tau & |\int e| < I_{max} \\ I_{max} \cdot sign(\int e) & |\int e| \geq I_{max} \end{cases}\]积分滑模还能提供”全程鲁棒性”——从初始时刻开始就具有鲁棒性,而非仅在到达滑模面后才有。
终端滑模面可以实现有限时间收敛:
\[s = \dot{e} + \alpha e + \beta e^{p/q}\]其中 $\alpha, \beta > 0$,$p, q$ 是正奇数且 $1 < p/q < 2$。
这种设计在 $s = 0$ 时,误差在有限时间内收敛到零: \(T_r = \frac{q}{\beta(q-p)}|e(0)|^{(q-p)/q}\)
对于时变系统或需要特定过渡过程的情况,可设计时变滑模面:
\[s(x,t) = x - x_r(t)\]其中 $x_r(t)$ 是预设的参考轨迹,从初始状态逐渐过渡到期望状态。
时变滑模面的设计动机包括:
软启动需求:避免初始时刻的大控制输入,通过设计 $x_r(t)$ 使其从 $x(0)$ 开始平滑过渡到期望值。
约束满足:通过合理规划 $x_r(t)$,可以保证状态轨迹满足物理约束(如速度、加速度限制)。
全局滑模:设计 $s(x(0),0) = 0$,使系统从一开始就在滑模面上,消除到达阶段,从而完全避免到达阶段的鲁棒性损失。
典型的时变参考轨迹设计: \(x_r(t) = x(0)e^{-\alpha t} + x_d(1 - e^{-\alpha t})\)
这提供了从初始状态到期望状态的指数过渡,时间常数 $1/\alpha$ 控制过渡速度。
对于多输入多输出(MIMO)系统: \(\dot{x} = f(x) + B(x)u\)
其中 $u \in \mathbb{R}^m$,需要设计 $m$ 个滑模面: \(s = [s_1, s_2, ..., s_m]^T = Cx\)
设计原则:
抖振(Chattering)是滑模控制的主要实际问题,表现为控制输入的高频切换。产生原因包括:
理想切换的物理不可实现性:执行器带宽有限,无法实现理论上的无穷快切换。实际执行器总有延迟和惯性,导致控制信号在滑模面附近振荡。
未建模动态:被忽略的高频动态被激发。设计时假设的简化模型忽略了快速寄生动态(如执行器动态、结构柔性等),这些动态在高频切换下被激发,产生振荡。
采样和量化:数字实现引入的离散化效应。离散采样使得系统无法精确停留在滑模面上,而是在其两侧跳跃。量化误差进一步加剧了这种现象。
测量噪声:传感器噪声导致滑模变量波动。即使系统实际在滑模面上,噪声也会使测量的滑模变量 $s$ 不为零,触发不必要的控制切换。
Control Signal with Chattering
u ↑
|╱╲╱╲╱╲╱╲ High-frequency switching
|
──┼─────────→ t
|
|╲╱╲╱╲╱╲╱
抖振的危害不容小觑:它会导致执行器磨损、能量损耗增加、激发未建模动态甚至导致系统失稳。在实际应用中,抖振抑制往往比理论设计更具挑战性。
用连续函数替代符号函数,在滑模面附近定义边界层:
\[u = -K \cdot sat(s/\phi)\]其中饱和函数定义为: \(sat(s/\phi) = \begin{cases} sign(s) & |s| > \phi \\ s/\phi & |s| \leq \phi \end{cases}\)
边界层厚度 $\phi$ 的选择需要权衡:
使用观测器估计滑模变量及其导数,实现连续控制:
\[\begin{aligned} \dot{\hat{s}} &= -l_1|s - \hat{s}|^{1/2}sign(s - \hat{s}) + \hat{z} \\ \dot{\hat{z}} &= -l_2sign(s - \hat{s}) \end{aligned}\]基于观测器的控制律: \(u = -K_1\hat{s} - K_2\hat{z}\)
引入积分器或低通滤波器,将不连续控制作用于积分器输入:
\[\begin{aligned} u &= \int_0^t v(\tau)d\tau \\ v &= -K \cdot sign(s) \end{aligned}\]这种方法产生连续的控制信号,有效抑制抖振。
根据系统状态自适应调整控制增益:
\[K(t) = \begin{cases} K_0 + \gamma\int_0^t |s(\tau)|d\tau & |s| > \epsilon \\ K(t) & |s| \leq \epsilon \end{cases}\]优点:
自适应策略的核心思想是:只在需要时使用大的控制增益。当系统远离滑模面时,增益自动增大以加快到达;当接近滑模面时,增益保持适中以减少抖振。这种”按需供给”的策略在保证鲁棒性的同时最小化了控制努力。
更先进的自适应方案包括基于滑模变量变化率的增益调整: \(K(t) = K_{min} + (K_{max} - K_{min}) \cdot \tanh(\alpha|s|)\)
这提供了平滑的增益变化,避免了增益切换带来的额外抖振。
使用模糊逻辑平滑切换函数:
IF s is Positive Large THEN u is Negative Large
IF s is Positive Small THEN u is Negative Small
IF s is Zero THEN u is Zero
IF s is Negative Small THEN u is Positive Small
IF s is Negative Large THEN u is Positive Large
模糊化后的控制律自然产生平滑过渡。
传统滑模要求 $s = 0$,高阶滑模要求: \(s = \dot{s} = \ddot{s} = ... = s^{(r-1)} = 0\)
其中 $r$ 是滑模阶数。高阶滑模的优势:
高阶滑模的本质是将不连续性”转移”到控制的高阶导数上。对于相对阶为 $r$ 的系统,$r$ 阶滑模可以产生连续的控制信号,同时保持传统滑模的鲁棒性。这解决了抖振与鲁棒性之间的根本矛盾。
从几何角度看,一阶滑模是在 $(n-1)$ 维流形上的运动,而 $r$ 阶滑模是在 $(n-r)$ 维流形上的运动。阶数越高,约束越强,但实现难度也越大。实践中,二阶滑模因其良好的性能与复杂度平衡而最为常用。
最常用的二阶滑模算法包括:
1. Twisting算法 \(u = -k_1sign(s) - k_2sign(\dot{s})\)
条件:$k_1 > k_2 > 0$,$k_1 + k_2 > \Gamma_M$,$k_1 - k_2 > \Gamma_m$
2. Super-twisting算法 \(\begin{aligned} u &= -k_1|s|^{1/2}sign(s) + v \\ \dot{v} &= -k_2sign(s) \end{aligned}\)
优点:不需要 $\dot{s}$ 的信息,广泛应用于观测器设计。
3. 次优算法 \(u = -\alpha U_M sign(s - \frac{1}{2}s_M)\)
其中 $s_M$ 是上一个 $\dot{s} = 0$ 时刻的 $s$ 值。
准连续高阶滑模控制器: \(u = -\alpha \cdot sign(\sigma_0 + \frac{\sigma_1}{1!}\tau + \frac{\sigma_2}{2!}\tau^2 + ... + \frac{\sigma_{r-1}}{(r-1)!}\tau^{r-1})\)
其中 $\sigma_i$ 是滑模变量的高阶导数估计。
任意阶滑模控制的实现面临两个主要挑战:
信息需求:需要 $s, \dot{s}, …, s^{(r-2)}$ 的信息,这通常需要高阶微分器或观测器。
参数调整:随着阶数增加,需要调整的参数急剧增多,缺乏系统的调参方法。
尽管如此,高阶滑模在某些特殊应用中仍有价值,如高精度定位系统,其中控制平滑性至关重要。实际应用中,三阶以上的滑模控制很少使用,二阶滑模通常足以满足大多数工程需求。
Levant微分器可以精确估计信号导数:
\[\begin{aligned} \dot{z}_0 &= v_0 = -\lambda_0|z_0 - f(t)|^{n/(n+1)}sign(z_0 - f(t)) + z_1 \\ \dot{z}_1 &= v_1 = -\lambda_1|z_1 - v_0|^{(n-1)/n}sign(z_1 - v_0) + z_2 \\ & \vdots \\ \dot{z}_n &= -\lambda_n sign(z_n - v_{n-1}) \end{aligned}\]在有限时间内,$z_i$ 收敛到 $f^{(i)}(t)$。
将积分作用与滑模结合,消除稳态误差:
\[s = e + \lambda_1\dot{e} + \lambda_2\int_0^t e(\tau)d\tau\]控制律: \(u = u_{eq} - K_1sign(s) - K_2\int_0^t sign(s(\tau))d\tau\)
积分滑模控制的双重积分结构提供了两层鲁棒性保障:滑模面中的积分项处理模型误差和慢变扰动,控制律中的积分项进一步增强了对未知常值扰动的抑制能力。这种设计特别适合精密伺服系统,其中零稳态误差是关键要求。
| 实施时需要注意防止积分器饱和,通常采用条件积分策略:只在 $ | s | < s_{threshold}$ 时才进行积分累加,避免在大误差时积分过度累积。 |
电动汽车在低附着路面(冰雪路面)上容易出现车轮打滑,需要牵引力控制系统(TCS)防止过度滑转,保证车辆稳定性和加速性能。相比传统内燃机车辆,电动汽车的电机响应更快(毫秒级),为高性能滑模控制提供了理想平台。Tesla Model 3的牵引力控制系统更新频率达1000Hz,充分利用了电机的快速响应特性。
单轮模型: \(\begin{aligned} J_w\dot{\omega} &= T_m - T_b - F_x R_w \\ m_v\dot{v} &= F_x - F_{air} - F_{roll} \end{aligned}\)
其中:
轮胎力采用Magic Formula: \(F_x = D\sin(C\arctan(B\lambda - E(B\lambda - \arctan(B\lambda))))\)
参数随路面条件变化:
滑转率定义: \(\lambda = \frac{\omega R_w - v}{\max(\omega R_w, v)}\)
最优滑转率通常在0.08-0.20之间,取决于路面条件。
目标:控制滑转率跟踪最优值 $\lambda^* = 0.15$
滑模面设计: \(s = \lambda - \lambda^* + k\int_0^t(\lambda - \lambda^*)d\tau\)
控制律: \(T_m = T_{m,eq} - K \cdot sat(s/\phi)\)
等效转矩: \(T_{m,eq} = F_x R_w + J_w\left(\frac{\dot{v}}{R_w} + \frac{v\dot{\lambda^*}}{R_w(1-\lambda^*)}\right)\)
自适应增益: \(K = K_0 + \gamma\int_0^t|s|d\tau\)
在冰面起步加速场景(μ = 0.2):
在北汽新能源冬季测试场(黑河)进行的实车验证:
测试条件:
性能对比: | 控制方法 | 0-60km/h加速时间 | 最大滑转率 | 能量消耗 | 轮胎磨损指数 | |———|—————-|———–|———|————| | 无TCS | 12.3s | 0.85 | 145 Wh | 100% | | PID-TCS | 8.7s | 0.35 | 128 Wh | 62% | | SMC-TCS | 7.2s | 0.18 | 118 Wh | 41% |
滑模控制展现出明显优势,特别是在快速变化的路面条件下(如从冰面过渡到雪地),其鲁棒性确保了平稳的动力传递。
MIT Cheetah机器人需要在不平整地形上保持平衡和稳定行走,面临地形不确定性、接触力突变等挑战。
浮动基座动力学: \(M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) = S^Tu + J_c^TF_c\)
其中:
上层:躯干姿态控制
滑模面(保持躯干水平): \(s_{roll} = \phi + k_\phi\dot{\phi}, \quad s_{pitch} = \theta + k_\theta\dot{\theta}\)
虚拟力控制: \(F_{virtual} = -K_p s - K_d\dot{s} - K_s \cdot sign(s)\)
下层:腿部阻抗控制
每条腿的滑模面: \(s_{leg,i} = (p_{foot,i} - p_{des,i}) + \Lambda(v_{foot,i} - v_{des,i})\)
腿部力控制: \(F_{leg,i} = K_{imp}(p_{des,i} - p_{foot,i}) + D_{imp}(v_{des,i} - v_{foot,i}) - K_{smc}\cdot sat(s_{leg,i}/\phi)\)
IF contact_detected AND |F_z| > threshold:
Switch to stance mode
Activate impedance + sliding control
ELSE:
Switch to swing mode
Track desired trajectory
自适应滑模增益: 根据地形粗糙度估计调整: \(K_{smc} = K_0(1 + \alpha\hat{\sigma}_{terrain})\)
在MIT的测试场地:
关键性能指标:
Vadim Ivanovich Utkin(1937-2022)是滑模控制理论的奠基人之一。1977年,他出版了具有里程碑意义的专著《Variable Structure Systems with Sliding Modes》,系统化了滑模控制理论。
主要贡献:
影响:Utkin的工作使滑模控制从苏联的军事应用走向全球工业界,特别是在电机控制、机器人和汽车工业中得到广泛应用。他的”不变性原理”证明了滑模控制对匹配不确定性的完全鲁棒性,这一特性使其成为工业控制的重要工具。
超螺旋(Super-twisting)算法作为最实用的二阶滑模算法,近年来有重要进展:
1. 自适应超螺旋算法
Shtessel等人(2012)提出的自适应版本: \(\begin{aligned} u &= -k_1(t)|s|^{1/2}sign(s) + v \\ \dot{v} &= -k_2(t)sign(s) \\ \dot{k}_1 &= \begin{cases} \omega_1\sqrt{\gamma_1} & |s| > \mu \\ 0 & |s| \leq \mu \end{cases} \\ \dot{k}_2 &= \begin{cases} \omega_2\gamma_2 & |s| > \mu \\ 0 & |s| \leq \mu \end{cases} \end{aligned}\)
2. 多变量超螺旋
对MIMO系统的扩展: \(\begin{aligned} u_i &= -k_{1i}||s||^{1/2}\frac{s_i}{||s||} + v_i \\ \dot{v}_i &= -k_{2i}sign(s_i) \end{aligned}\)
1. 固定时间收敛
新型滑模面设计实现与初始条件无关的收敛时间: \(s = \dot{e} + \alpha_1e^{p_1/q_1} + \alpha_2e^{p_2/q_2}\)
其中 $p_1/q_1 > 1$,$0 < p_2/q_2 < 1$。
收敛时间上界: \(T_{max} = \frac{1}{\alpha_1(p_1/q_1 - 1)} + \frac{1}{\alpha_2(1 - p_2/q_2)}\)
2. 预设时间控制
通过时变增益实现精确的预设收敛时间: \(u = -\frac{k(t)}{(T_c - t)^\alpha}sign(s)\)
其中 $T_c$ 是预设收敛时间。
滑模控制作为一种强鲁棒的非线性控制方法,其核心优势在于:
关键概念:
核心公式:
| 到达条件:$s\dot{s} \leq -\eta | s | $ |
| Super-twisting:$u = -k_1 | s | ^{1/2}sign(s) + \int(-k_2sign(s))dt$ |
实际考虑:
滑模控制在电动汽车、机器人、航空航天等领域展现出优异性能,特别是在面对大不确定性和强扰动的场合。随着超螺旋算法、固定时间收敛等新理论的发展,滑模控制正在向更高精度、更快响应的方向演进。
习题9.1 考虑二阶系统: \(\ddot{x} + 2\dot{x} + x = u + d(t)\) 其中 $|d(t)| \leq 0.5$。设计滑模控制器使系统跟踪 $x_d = \sin(t)$。
Hint: 选择滑模面 $s = \dot{e} + \lambda e$,其中 $e = x - x_d$。
习题9.2 分析边界层厚度 $\phi$ 对系统性能的影响。给定系统: \(\dot{x} = -x + u + 0.1\sin(10t)\) 比较 $\phi = 0.01, 0.1, 1$ 时的稳态误差和抖振水平。
Hint: 在边界层内,系统表现为高增益线性系统。
习题9.3 设计积分滑模控制器消除常值扰动。系统: \(\dot{x}_1 = x_2\) \(\dot{x}_2 = -x_1 - 2x_2 + u + d_0\) 其中 $d_0$ 是未知常值扰动。
Hint: 在滑模面中加入积分项。
习题9.4 对于非最小相位系统: \(\ddot{y} - \dot{y} + 2y = u\) 设计输出反馈滑模控制器,仅使用 $y$ 和 $\dot{y}$ 的测量。
Hint: 需要设计高增益观测器估计不可测状态。
习题9.5 设计自适应滑模控制器处理未知控制增益。考虑: \(\dot{x}_1 = x_2\) \(\dot{x}_2 = f(x) + b(x)u\) 其中 $b_{min} \leq b(x) \leq b_{max}$,但具体值未知。
Hint: 使用增益自适应律或切换增益策略。
习题9.6 为柔性关节机械臂设计滑模控制器: \(\begin{aligned} I\ddot{q} + mgl\sin(q) &= k(\theta - q) \\ J\ddot{\theta} &= u - k(\theta - q) \end{aligned}\) 其中 $q$ 是连杆角度,$\theta$ 是电机角度,$k$ 是关节刚度。
Hint: 这是一个欠驱动系统,需要设计级联控制结构。
习题9.7(开放性思考题)比较滑模控制与MPC在处理约束和鲁棒性方面的优劣。在什么情况下应该选择滑模控制而不是MPC?
错误:随意选择滑模面参数
s = ė + 0.01e // λ太小,收敛极慢
s = ė + 100e // λ太大,对噪声敏感
正确:基于期望带宽和鲁棒性权衡选择
问题:离散化导致的抖振
解决:采样频率至少为滑模带宽的10-20倍
过小:无法克服扰动,不能到达滑模面 过大:严重抖振,执行器饱和
建议:$K = (1.5 \sim 2) \times D_{max}$
错误:
s = (x - x_prev)/dt + lambda * x # 数值微分
正确:使用滤波器或观测器估计导数
问题:忽略执行器带宽限制导致失稳
解决:
MIMO系统常见错误:滑模面设计导致奇异解耦矩阵
检查:确保 $\frac{\partial s}{\partial x}B$ 可逆
错误:直接对输出设计滑模面
正确:重新定义输出或使用特殊技术
问题:积分滑模的初始积分值设置不当
解决:使用软启动或初始化程序