推开一扇多年没上油的红漆老木门时,经验老到的管家会先轻轻晃一晃、探探“脾气”。门轴锈死处的确要用大力气才肯松动,但一旦真的滑动起来,反而会突然轻快不少;而推得越快,门轴又变得“黏糊糊”地拖后腿;最奇妙的是,把门推过去再拉回来,手感的阻力路径居然走的是两条不同的曲线。这位管家脑海里的“手感地图”,就是人类对摩擦力的直觉建模。机器人关节中的齿轮、谐波减速器和电机轴,正是被无数这样“老木门”卡住的精密传动链——要想让机器人动作精准流畅,就必须像管家摸清每扇门的脾气一样,把关节里的非线性摩擦“建模”出来。本文就用“老管家推老木门”这个比喻,带你从静摩擦、粘性摩擦、Stribeck效应一直走到摩擦辨识与补偿控制,把摩擦力的建模学问一步步拆开。

岗位关联

摩擦建模是机器人控制工程师的核心手艺。学会它,你将能把定位精度从毫米级提升到微米级,做出来的机械臂才“推得动、停得住、感觉细”。

目录
  1. 可视化演示
  2. 摩擦现象分类
  3. 经典摩擦模型
  4. Stribeck效应
  5. 迟滞建模
  6. 摩擦辨识
  7. 前馈补偿
  8. 工程实践指南
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

摩擦现象分类

老管家推门的第一课,是分清“门不理你”和“门拖着你”。门静止时,要攒足力气才推得动,这叫静摩擦;门一旦滑起来,反而省力许多,这叫滑动摩擦。而门速度越来越快时,那股“黏糊糊”的拖拽感,来自粘性摩擦。三种手感完全不同,就像摩擦力家族的三位性格迥异的成员。

摩擦力的技术分类同样如此。静摩擦发生在两个接触面相对静止时,大小随外力变化、有上限;滑动摩擦在相对滑动时出现,通常与速度无关;粘性摩擦则随相对速度线性增长。对于机器人关节,还有齿轮滚动接触产生的滚动摩擦和油膜剪切带来的粘性阻力。这些分类是建模的第一层地图。

静摩擦和滑动摩擦的数学表达最简洁——用摩擦系数乘以正压力。静摩擦不超过其最大值,而滑动摩擦恒定:

老管家心里有数:越是年久失修的门,静摩擦和动摩擦的“差距”越大,推起来越是一顿一顿。这个差距,正是后面 Stribeck 效应的起点。

Fs≤μsN,Fk=μkN\displaystyle F_s \le \mu_s N, \quad F_k = \mu_k N
静摩擦像一个“倔强的上限”:外力小于它时门纹丝不动;一旦突破,只剩较小的滑动摩擦在维持。
  1. 静摩擦不等式$F_s$ 是当前静摩擦力,它随外力增大而增大,但不会超过 $\mu_s N$ 这个天花板。
    Fs≤μsN\displaystyle F_s \le \mu_s N
  2. 动摩擦等式一旦滑动,摩擦力 $F_k$ 恒等于 $\mu_k N$,与速度大小无关,体现库仑特性。
    Fk=μkN\displaystyle F_k = \mu_k N

经典摩擦模型

老管家发现,同样是推开后的门,不同门“拖后腿”的感觉不一样:有的门无论快慢都是一个阻力(库仑主导),有的门越快越费劲(粘性主导)。把这两种手感叠加,就得到了最经典的摩擦模型——库仑粘性模型。它虽然简单,却是工业界最常用的基础。

数学上,库仑摩擦用一个符号函数表示方向,粘性摩擦用一个线性项表示速度依赖。两者相加,构成了完整的速度-摩擦力曲线:

这个模型虽然粗糙,但没有它就没有后续的精细化。老管家先学会“匀速拖动的大致手感”,再去感受那些更微妙的差异。

F(v)=Fc⋅sign(v)+bv\displaystyle F(v) = F_c \cdot \mathrm{sign}(v) + b v
这个公式就是“门一旦动起来,有一个恒定的基础阻力,再加上随速度变大的黏滞阻力”。
  1. 库仑摩擦项$F_c$ 是库仑摩擦力的恒定幅值,$\mathrm{sign}(v)$ 保证阻力方向始终与速度方向相反。
    Fc⋅sign(v)\displaystyle F_c \cdot \mathrm{sign}(v)
  2. 粘性摩擦项$b$ 是粘性系数,$v$ 是相对速度,这一项让模型在高速区随速度线性增大。
    bv\displaystyle b v

Stribeck效应

老管家最得意的经验是:门刚推开的瞬间最费劲,可一旦动起来,阻力反而会“塌”下去一截,随后才随速度回升。这个“先降后升”的手感,在摩擦学中叫 Stribeck 效应,它解释了为什么低速时机器人关节总是一顿一顿地爬行。

Stribeck 效应的本质是润滑状态的切换:速度极低时接触面几乎干摩擦(静摩擦峰),速度稍增后润滑油楔入形成边界润滑,摩擦力骤降;速度继续增大,流体润滑建立,粘性阻力重新占据主导。这个“下坡-上坡”的曲线就是 Stribeck 曲线:

所以老管家推门时从不大步猛推,而是先轻轻施加一个力、等门“松动”的那一刻再顺势用力。懂得 Stribeck 曲线的工程师,正是用同样的道理避免机器人低速爬行。

F(v)=Fc+(Fs−Fc)e−(v/vs)2+bv\displaystyle F(v) = F_c + (F_s - F_c) e^{-(v / v_s)^2} + b v
指数项描述的是“从静摩擦峰滑落到库仑谷底”的过渡过程,$v_s$ 是这条斜坡的“坡度标尺”。
  1. 库仑基数$F_c$ 是滑动摩擦的基础值,相当于曲线的“地板”。
    Fc\displaystyle F_c
  2. Stribeck过渡项$F_s - F_c$ 是静摩擦与库仑摩擦的差值,指数衰减让曲线低速区迅速回落。
    (Fs−Fc)e−(v/vs)2\displaystyle (F_s - F_c) e^{-(v / v_s)^2}
  3. 粘性项$b v$ 保证高速区曲线重新抬头,形成“先降后升”的整体形状。
    bv\displaystyle b v

迟滞建模

老管家还有一层更细的体感:把门推过去再拉回来,同样的位置对应的阻力不一样;门轴里的油泥让力-位移路径形成了一个“回环”。这就是摩擦的迟滞特性,它让摩擦力不仅取决于当前速度,还取决于过去的历史——就像门有“记忆”。

在微米级定位场景中,这种记忆效应尤其致命。即使关节没有宏观滑动,微观接触凸峰也会发生弹性变形,产生预滑位移。此时摩擦力与位移的关系呈迟滞回线,经典模型无法描述。工程上常用 Bouc-Wen 算子捕捉这种记忆:

老管家的“手感记忆”从此有了数学化身。对要求纳米级定位的光刻机、精密测量台而言,这个回环模型决定了最终能压到多小的跟踪误差。

dzdt=Av−β∣v∣z−γv∣z∣\displaystyle \frac{dz}{dt} = A v - \beta |v| z - \gamma v |z|
中间变量 $z$ 像一个“内部记忆条”,方向换过来时它不会立刻清零,于是画出了迟滞回环。
  1. 激励项$A v$ 让 $z$ 跟随速度驱动,$A$ 控制回环的整体斜率。
    Av\displaystyle A v
  2. 阻尼项$\beta |v| z$ 让 $z$ 的增长在移动方向上被抑制,形成回环的“厚度”。
    β∣v∣z\displaystyle \beta |v| z
  3. 记忆项$\gamma v |z|$ 保证当 $v$ 换向时 $z$ 的衰减路径不同,从而产生迟滞回线。
    γv∣z∣\displaystyle \gamma v |z|

摩擦辨识

老管家再厉害,也得反复推门才能总结出手感。辨识就是“用实验摸清每扇新门的脾气”——通过设计激励轨迹、采集速度与力矩数据,再反推出 $F_c$、$F_s$、$v_s$、$b$ 等参数。

最常用的方法是稳态辨识:让机械臂关节匀速转过一系列速度点,记录每个速度下的平均驱动力矩,就得到离散的摩擦力-速度数据。然后用最小二乘法拟合模型参数:

老管家摸清一门脾气需推几十次,工程师则靠激励轨迹和高频采样在几秒内完成辨识。辨识得越准,“手感地图”就越精细,后续补偿才越有底气。

θ^=(ΦTΦ)−1ΦTy\displaystyle \hat{\theta} = \left( \Phi^{\mathsf{T}} \Phi \right)^{-1} \Phi^{\mathsf{T}} y
这是“从多个散点中找一条最合适的曲线”的数学过程,$\Phi$ 是数据矩阵,$y$ 是测得的摩擦数据。
  1. 数据矩阵$\Phi$ 由速度波形构成,每一行对应一次实验的回归量。
    Φ\displaystyle \Phi
  2. 最小二乘核$\left( \Phi^{\mathsf{T}} \Phi \right)^{-1} \Phi^{\mathsf{T}}$ 把数据投影到参数空间,是最小二乘的闭式解。
    (ΦTΦ)−1ΦT\displaystyle \left( \Phi^{\mathsf{T}} \Phi \right)^{-1} \Phi^{\mathsf{T}}
  3. 输出数据$y$ 是实测摩擦力向量,$\hat{\theta}$ 是待求的参数估计。
    y,θ^\displaystyle y, \quad \hat{\theta}

前馈补偿

知道门脾气之后,老管家推门就再也不用等门“反应”了——手先发力,门刚想抵抗就被推过去了。这种“不等误差出现就预先出力”的思路,控制在工程中叫前馈补偿。

前馈的关键是构造一个摩擦逆模型:根据期望速度直接计算出所需的补偿力矩 $\hat{F}(v_d)$,叠加在 PD 反馈控制信号上。这样误差尚未产生,摩擦阻力已被抵消大半:

老管家推门之所以行云流水,正是因为“预判”取代了“反应”。在机械臂高速换向或低速精雕场景,前馈补偿往往能把跟踪误差缩小一个数量级。

u=Kpe+Kddedt+F^(vd)\displaystyle u = K_p e + K_d \frac{de}{dt} + \hat{F}(v_d)
反馈像“事后纠偏”(看到偏差才动手),前馈像“事先预判”(根据期望直接出手),两者一快一稳、相得益彰。
  1. 比例项$K_p e$ 把位置误差放大成纠正力矩,$K_p$ 是刚度。
    Kpe\displaystyle K_p e
  2. 微分项$K_d \dfrac{de}{dt}$ 根据误差变化率提供阻尼,抑制振荡。
    Kddedt\displaystyle K_d \frac{de}{dt}
  3. 前馈项$\hat{F}(v_d)$ 直接按期望速度输出辨识得到的摩擦补偿力。
    F^(vd)\displaystyle \hat{F}(v_d)

工程实践指南

老管家不仅会推门,还懂得保养门:定期上油、调门轴的松紧、冬天和夏天用不同的力道。工程实践也是如此——建模和补偿之外,还要从润滑、装配、温漂和振动四个方面持续优化。

润滑优化让 Stribeck 曲线整体下移;装配预紧控制静摩擦峰的高度;温度补偿修正环境对粘性系数的影响;低速振动抑制则通过调整控制增益避开负斜率区的不稳定。综合效果可以用闭环稳态误差来评估:

老管家把每扇门都调教到“顺手”的功力,正是工程实践的艺术:好的摩擦力控制,一半靠模型,一半靠保养。两者都到位,机器人才能“推得动人、停得住、感觉不像机器”。

ess≤ΔFKp\displaystyle e_{ss} \le \frac{\Delta F}{K_p}
这个不等式说明:残留摩擦 $\Delta F$ 越大误差越大,而增大比例增益 $K_p$ 能压住误差——但 $K_p$ 过大会引发振荡。
  1. 残余摩擦$\Delta F$ 是模型与实际摩擦的偏差,即前馈补偿后的“漏网之鱼”。
    ΔF\displaystyle \Delta F
  2. 增益分母$K_p$ 是 PD 控制器比例增益,分母越大,稳态误差被压得越小。
    Kp\displaystyle K_p

AI 应用场景

工业机械臂关节摩擦辨识与补偿

阶段:数据采集 → 模型辨识 → 控制部署

解决的问题:机械臂谐波减速器摩擦非线性强,传统 PID 在低速换向时产生“爬行”和“过冲”,定位精度上不去。通过 Stribeck 模型辨识加前馈补偿,可以在不换硬件的前提下显著提升轨迹跟踪精度。

具体案例:某 3C 装配线机械臂在点胶轨迹中,使用匀速段多速度点采样 + 最小二乘辨识 $F_c$、$F_s$、$v_s$、$b$,再叠加前馈补偿。实测轮廓误差从 ±1.2 mm 降至 ±0.15 mm,点胶均匀性明显改善。

精密 CNC 进给系统摩擦自整定

阶段:在线辨识 → 自适应补偿

解决的问题:机床导轨摩擦随温升和磨损漂移,固定参数模型会逐渐失效。利用 AI 方法在线辨识时变摩擦参数,并自动更新前馈模型,实现长期稳定加工。

具体案例:立式加工中心在 8 小时连续加工中,X 轴反向间隙误差从 12 μm 漂移到 30 μm。引入温度补偿 + 周期性摩擦再辨识后,误差始终控制在 8 μm 以内。

人形机器人关节摩擦状态估计

阶段:状态估计 → 鲁棒控制

解决的问题:人形机器人关节采用弹性驱动,摩擦力矩难以直接测量。通过摩擦观测器和迟滞模型融合,实时估计关节摩擦状态,使腿足运动更自然。

具体案例:某双足机器人膝关节在摆动相中,利用 Bouc-Wen 迟滞模型 + 扩展卡尔曼滤波估计摩擦补偿力矩,落地冲击力峰值降低 40%,步态稳定性显著提升。

Python 演示

python32 行
import numpy as np def friction_force(v, fc=0.3, fs=0.8, vs=0.1, b=0.5):    F = fc + (fs - fc) * np.exp(-(np.abs(v) / vs) ** 2) + b * np.abs(v)    return np.where(v >= 0, F, -F) dt = 0.001t = np.arange(0, 5, dt)m = 1.0kp = 40.0kd = 8.0 v_d = 0.5 * np.sin(t) + 0.2 * np.sin(2.5 * t) def simulate(feedforward):    v = 0.0    err_list = []    for vd in v_d:        e = vd - v        ff = friction_force(vd) if feedforward else 0.0        u = kp * e + kd * (vd - v) / dt + ff        a = (u - friction_force(v)) / m        v += a * dt        err_list.append(abs(e))    return np.array(err_list) err_no = simulate(feedforward=False)err_ff = simulate(feedforward=True) print('无前馈平均误差: {:.5f}'.format(err_no.mean()))print('带前馈平均误差: {:.5f}'.format(err_ff.mean()))print('误差改善率: {:.1f}%'.format((1 - err_ff.mean() / err_no.mean()) * 100))
目的:仿真对比“纯 PD 控制”与“PD + 摩擦前馈控制”在 Stribeck 摩擦作用下的跟踪误差,直观展示前馈补偿的威力。
  1. def friction_force(...)实现 Stribeck 摩擦模型,含库仑、静摩擦峰和粘性三项。
  2. ff = friction_force(vd)按期望速度查模型,这就是前馈补偿的核心:提前出力。
  3. u = kp * e + kd * (vd - v) / dt + ffPD 反馈加前馈三合一,构成了完整的控制律。
  4. a = (u - friction_force(v)) / m用牛顿第二定律仿真被控对象真实运动。
  5. simulate(feedforward=False)关闭前馈,得到纯反馈的基线误差。
  6. simulate(feedforward=True)开启前馈,对比误差改善率。

常见误区

误区

正解

误区

正解

误区

正解

误区

正解

误区

正解

面试题

Q1. 关于静摩擦与滑动摩擦的关系,以下说法正确的是:

单选题 · easy

  • A.静摩擦总是小于滑动摩擦
  • B.最大静摩擦大于滑动摩擦← 正确答案
  • C.两者大小在任何条件下相等
  • D.静摩擦与接触面积成正比

答案:B。最大静摩擦系数通常大于动摩擦系数,所以突破静摩擦后门反而更轻(B 对)。A、C 颠倒了大小关系,D 混淆了摩擦系数与接触面积的关系——摩擦系数本质上与面积无关。

Q2. 粘性摩擦最典型的特征是:

单选题 · easy

  • A.与速度无关
  • B.与速度成正比← 正确答案
  • C.与加速度成正比
  • D.仅与温度相关

答案:B。粘性摩擦由油膜剪切产生,大小随相对速度线性增长(B)。A 是库仑摩擦的特征,C 属于惯性力范畴,D 片面化——温度影响系数但不改变线性关系。

Q3. Stribeck 曲线负斜率区对应的是:

单选题 · mid

  • A.流体完全润滑状态
  • B.边界与混合润滑状态← 正确答案
  • C.无润滑的干摩擦区
  • D.粘性主导的高速区

答案:B。负斜率出现在速度从零升高、润滑膜尚未完全建立的边界润滑区(B),此时摩擦从静摩擦峰陡降。A、D 属于高速粘性主导区,C 是速度接近零的静摩擦峰,均不准确。

Q4. 库仑摩擦模型 F = μN·sign(v) 中的 μ 是:

单选题 · mid

  • A.静摩擦系数
  • B.动摩擦系数← 正确答案
  • C.粘性阻尼系数
  • D.弹性模量

答案:B。库仑模型描述恒定滑动摩擦,μ 应为动摩擦系数(B)。静摩擦系数描述的是突破前的上限,粘性系数对应线性速度项,弹性模量更是无关概念。

Q5. 下列哪些现象需要使用迟滞摩擦模型来描述:

多选题 · mid

  • A.微米级预滑位移← 正确答案
  • B.低速粘滑振动← 正确答案
  • C.摩擦力的记忆效应← 正确答案
  • D.轴承温度持续升高

答案:ABC。预滑位移(A)和摩擦记忆(C)正是迟滞模型的核心特征,粘滑振动(B)由静摩擦与动摩擦切换引起,也伴随迟滞行为。温度升高(D)是环境因素,不属于迟滞现象本身。

Q6. 与纯反馈控制相比,摩擦前馈补偿的最大优势是:

单选题 · mid

  • A.不需要建立数学模型的
  • B.提前补偿不引入相位滞后← 正确答案
  • C.始终能保证系统稳定
  • D.完全消除所有非线性

答案:B。前馈按期望速度提前出力(B),不等误差出现就行动,因此没有反馈回路固有的相位滞后。A 错误——前馈恰恰依赖模型;C、D 夸大其词,前馈过补偿反而会破坏稳定。

Q7. 摩擦前馈过补偿可能导致:

单选题 · hard

  • A.系统刚度大幅提升
  • B.高频极限环振荡← 正确答案
  • C.摩擦逐渐被消除
  • D.能耗显著下降

答案:B。过补偿使系统等效为负阻尼,摩擦能量被“反向注入”,引发持续振荡(B)。A 是比例增益升高的效果,C、D 与过补偿的物理后果相反——过补偿不会消灭摩擦,只是叠错了方向。

Q8. 温度升高时,润滑脂的粘性摩擦通常表现为:

单选题 · easy

  • A.显著增大
  • B.逐渐减小← 正确答案
  • C.保持不变
  • D.先增后减

答案:B。温度升高使润滑脂粘度下降,油膜剪切阻力变小(B)。老管家夏日推门感觉更“轻”,正是这个道理。A 是低温时的表现,C、D 不符合常见润滑脂的温粘特性。

Q9. 设计机器人关节摩擦辨识实验时,合理的做法包括:

多选题 · hard

  • A.以多个恒定转速采集稳态力矩← 正确答案
  • B.加入正反向换向的激励轨迹← 正确答案
  • C.仅用一个高速段拟合全部参数
  • D.融合力矩传感器与位置编码器数据← 正确答案

答案:ABD。多转速稳态点覆盖曲线全貌(A),换向激励激活摩擦记忆与迟滞(B),多传感器融合提高信噪比(D)。仅用高速段(C)无法辨识静摩擦峰和 Stribeck 斜率,明显不合理。

Q10. 关于摩擦力建模在工程中的综合应用,正确的有:

多选题 · hard

  • A.Stribeck 模型可解释低速爬行← 正确答案
  • B.Bouc-Wen 模型适合微米级定位← 正确答案
  • C.前馈补偿无需辨识参数
  • D.润滑与温控能降低辨识难度← 正确答案

答案:ABD。Stribeck 负斜率正是低速爬行的根源(A),Bouc-Wen 的预滑位移建模适合微米级场景(B),良好的润滑与温控让摩擦曲线更稳定、辨识更准(D)。前馈必须有模型参数支撑(C 错)。