4. 摩擦与扰动补偿:库仑摩擦、粘滞摩擦、Stribeck效应模型、前馈补偿与扰动观测器(DOB)设计

各位,咱们今天聊一个让所有做力矩控制的工程师都头疼的话题——摩擦与扰动。说实话,我在这个坑里摔过不少跟头。你想想看,明明电流环调得稳稳当当,力矩指令给得干干净净,结果一到低速就抖得像筛糠,或者干脆爬不动。嗯,这背后十有八九是摩擦在捣鬼。

摩擦这东西,说白了就是机械系统里最顽固的“钉子户”。它不像惯量、刚度这些参数,你建模建得准就能搞定。摩擦是非线性的,还带记忆效应,温度一变它也跟着变。我当年做精密转台项目时,就吃过这个亏——冬天调试好的参数,夏天全废了。所以,咱们得系统地认识它,然后想办法收拾它。

4.1 摩擦模型:从简单到实用

先别急着上复杂模型。我个人习惯是,从最简单的开始,逐步加料,直到模型能覆盖你遇到的实际问题。

4.1.1 库仑摩擦与粘滞摩擦

这是最经典的组合,也是大多数教科书里第一个讲的模型。库仑摩擦,就是那个跟速度方向相反、大小恒定的力。粘滞摩擦,则是跟速度成正比的那个阻尼项。

数学上写出来就是:

τ_f = τ_c * sign(ω) + B * ω

其中:

  • τ_c — 库仑摩擦转矩(常数)
  • B — 粘滞摩擦系数
  • ω — 角速度

这个模型简单归简单,但有个致命问题——它在零速附近不连续。你想想看,sign(ω) 在 ω=0 时直接跳变,这会导致什么?低速抖动、极限环振荡。我在做机器人关节力矩控制时就遇到过,电机在零速附近来回震荡,就是库仑摩擦这个“硬切换”搞的鬼。

⚠ 注意: 纯库仑+粘滞模型在零速附近存在不连续点。直接用于前馈补偿时,容易引发极限环。建议在零速附近做平滑过渡处理,或者改用更精细的模型。

4.1.2 Stribeck效应模型

为什么低速时摩擦反而更大?这就是Stribeck效应。说白了,就是当速度从零开始增加时,摩擦先下降再上升,形成一个“摩擦-速度曲线”的凹坑。

经典的Stribeck模型长这样:

τ_f(ω) = [τ_c + (τ_s - τ_c) * exp(-|ω/ω_s|^δ)] * sign(ω) + B * ω

参数含义:

参数 含义 典型范围
τ_s 静摩擦转矩(最大静摩擦) τ_c 的 1.2~2.0 倍
τ_c 库仑摩擦转矩 额定转矩的 1%~5%
ω_s Stribeck速度(特征速度) 0.01~0.1 rad/s
δ 形状指数(通常取 0.5~2) 经验值 1.0 常用
B 粘滞摩擦系数 由阻尼比估算

这个模型的好处是,它把零速附近的“凹坑”给描述出来了。我当年调试一个高精度转台时,就是用这个模型做前馈补偿,才把低速跟踪误差从 0.5° 降到了 0.02°。效果立竿见影。

💡 经验之谈: Stribeck 模型的参数辨识,我建议用“恒速扫描法”——让电机以不同恒定速度运行,记录稳态力矩,然后拟合曲线。注意,低速段要多采几个点,因为那里曲线变化最剧烈。

4.2 前馈补偿:把摩擦“算”出来

模型建好了,怎么用?最直接的办法就是前馈补偿。说白了,就是根据当前速度,用模型算出摩擦转矩,然后把这个值加到力矩指令里,抵消掉摩擦的影响。

前馈补偿的框图很简单:

速度指令 → 摩擦模型 → τ_feedforward
                ↓
力矩指令 + τ_feedforward → 电流环 → 电机 → 实际力矩

但这里有个坑——模型参数不准怎么办?我曾经在一个项目里,Stribeck 参数标定误差 10%,结果前馈补偿反而引入了更大的扰动。所以,我个人的做法是:

  1. 先离线标定:用恒速法或正弦扫频法,把 τ_s、τ_c、ω_s、B 都标出来。
  2. 再在线微调:运行时根据跟踪误差,用自适应算法微调参数。
  3. 加个低通:前馈信号入口处加个截止频率 50~100 Hz 的低通,防止模型切换时的毛刺。
🔑 关键点: 前馈补偿的精度,取决于模型精度。如果模型误差超过 20%,建议改用扰动观测器(DOB)来兜底。

4.3 扰动观测器(DOB):把未知扰动“吃”掉

前馈补偿有个硬伤——它只能补偿已知模型的部分。但实际系统里,还有未建模的扰动:负载变化、温度漂移、非线性摩擦的残余部分……这些怎么办?

这时候就该 DOB 上场了。DOB 的核心思想很简单:把实际输出和模型期望输出之间的差值,当作“等效扰动”,然后反向补偿回去。

标准 DOB 的结构:

τ_cmd → [电机系统] → ω_actual
   ↑            ↓
   └── [Q(s)] ← [逆模型 P_n⁻¹(s)] ← ω_actual

其中:

  • P_n(s) — 标称模型(通常是刚体模型:1/(Js + B))
  • Q(s) — 低通滤波器(决定DOB的带宽和鲁棒性)

DOB 的设计要点,我总结成三条:

设计要素 推荐做法 避坑指南
Q 滤波器阶次 二阶或三阶巴特沃斯 阶次太高会放大高频噪声
Q 滤波器截止频率 速度环带宽的 3~5 倍 太高会引入噪声,太低补偿效果差
逆模型 P_n⁻¹(s) 必须可物理实现(加微分近似) 纯微分不可实现,用 s/(τs+1) 近似
采样率 至少 10 倍于 Q 滤波器截止频率 采样率不足会导致相位滞后
⚠ 重要提醒: DOB 不是万能的。它依赖标称模型的精度。如果标称模型误差超过 30%,DOB 会不稳定。我见过有人把 DOB 的 Q 滤波器截止频率设到 500 Hz,结果系统直接啸叫——那就是模型误差太大,DOB 把结构谐振当成了扰动在补偿。

4.4 摩擦补偿 + DOB 的协同策略

说了这么多,到底怎么用?我个人最推荐的方案是:前馈 + DOB 协同。

具体做法:

  1. 前馈负责“大头”:用 Stribeck 模型补偿已知的摩擦(占扰动总量的 70%~80%)。
  2. DOB 负责“残差”:补偿模型误差、负载变化、温度漂移等未知扰动。
  3. 两者互补:前馈不依赖反馈,响应快;DOB 能自适应,鲁棒性强。

下面这张图展示了完整的协同控制架构:

摩擦前馈 + DOB 协同控制架构 摩擦前馈 + DOB 协同控制架构 速度指令 ω* 速度控制器 + Stribeck 前馈 + 电机 + 负载 ω DOB 扰动估计 说明: 1. 速度指令同时送入速度控制器和 Stribeck 前馈模型。 2. 前馈补偿已知摩擦(占扰动 70%~80%),响应快。 3. DOB 从实际速度中估计残余扰动,补偿模型误差和未知扰动。 4. 两者在求和点2叠加,共同作用于电机系统。 5. 协同效果:低速跟踪误差可降低 80% 以上,且对参数变化鲁棒。

你看,这个架构里,前馈和 DOB 各司其职。前馈负责“快”,DOB 负责“准”。两者配合好了,力矩控制的性能瓶颈就能被大幅突破。

💡 实战建议: 如果你刚开始做摩擦补偿,我建议先只加 Stribeck 前馈,看看效果。如果低速抖动还在,再逐步加入 DOB。DOB 的 Q 滤波器截止频率从 20 Hz 开始往上调,每次加 10 Hz,直到出现噪声或振荡为止。这样最稳妥。

4.5 小结:摩擦补偿的“三板斧”

好了,这一章的内容就这些。我帮你捋一下核心思路:

  • 第一板斧:建模 — 用 Stribeck 模型把摩擦特性描述清楚。参数辨识用恒速扫描法,低速段多采点。
  • 第二板斧:前馈 — 把模型算出来的摩擦值加到力矩指令里。注意加低通滤波,防止切换毛刺。
  • 第三板斧:DOB — 用扰动观测器兜底,补偿模型误差和未知扰动。Q 滤波器设计是关键,别贪带宽。

这三板斧用好了,力矩控制的低速性能、稳态精度、抗扰动能力都能上一个台阶。我当年在半导体设备项目里,就是用这套方法,把晶圆台的低速跟踪误差从 2 μm 降到了 0.1 μm。嗯,效果就是这么明显。