3. 静态摩擦模型:库仑+粘性模型、Stribeck模型、LuGre模型简介
做运动控制这么多年,摩擦补偿一直是个绕不开的话题。尤其是低速场景下,你想想看,电机转得慢的时候,那抖动、爬行、甚至干脆卡住不动,十有八九都是摩擦在捣鬼。
要对付摩擦,首先得了解它。说白了,摩擦模型就是用来描述「摩擦力跟速度之间是什么关系」的数学工具。今天咱们就聊聊三个最经典的静态摩擦模型:库仑+粘性模型、Stribeck模型,还有那个让很多人头疼的LuGre模型。
核心观点:没有完美的摩擦模型,只有最适合你应用场景的模型。选对了,事半功倍;选错了,调试到怀疑人生。
3.1 库仑+粘性模型:最朴素的起点
这个模型,我刚开始做伺服驱动时就用过。结构非常简单,就两项:
- 库仑摩擦:跟速度方向相反,大小恒定。就像你推一个箱子,推之前得克服一个固定的力。
- 粘性摩擦:跟速度成正比。速度越快,阻力越大,就像在油里搅动。
数学表达式长这样:
F_f = F_c * sign(v) + B * v
其中:
F_f是摩擦力F_c是库仑摩擦力幅值v是速度B是粘性摩擦系数sign(v)是符号函数,速度为正取1,为负取-1
这个模型的好处是——简单。参数只有两个,辨识起来很容易。我在一个直线电机项目里就用它做过快速原型验证,半小时就把参数跑出来了。
我的经验:库仑+粘性模型适合高速场景,或者对低速性能要求不高的场合。比如一些粗定位的传送带、大行程的搬运轴。但如果你要做精密定位,比如微米级的运动,这个模型就不够用了。
为什么不够用?因为它忽略了低速时一个非常重要的现象——Stribeck效应。
3.2 Stribeck模型:把「负阻尼」加进来
Stribeck模型在库仑+粘性的基础上,多描述了一个现象:在速度从零开始增加的一小段区间内,摩擦力不是单调增加的,而是先下降再上升。
为什么会这样?
嗯,这里要注意。当两个接触面相对静止时,润滑剂被挤出去,形成干摩擦。一旦开始滑动,润滑剂逐渐进入,摩擦力反而会减小。等速度再高一些,粘性效应占主导,摩擦力又开始上升。
这个「先降后升」的区间,就是Stribeck效应。数学上通常这样表达:
F_f = F_c + (F_s - F_c) * exp(-(v/v_s)^δ) + B * v
参数说明:
F_s是静摩擦力(最大静摩擦)v_s是Stribeck速度,决定了下降区间的宽度δ是经验指数,通常取0.5~2之间
我个人习惯把Stribeck模型叫做「带凹坑的摩擦曲线」。你看它的力-速度曲线,在低速区有一个明显的下凹,这就是负阻尼效应的来源。
避坑指南:我曾经在一个高精度转台项目里直接用Stribeck模型做前馈补偿,结果低速时反而振荡了。后来发现是参数v_s没整对,这个值跟接触面的润滑状态、材料都有关系,不能照搬手册数据。一定要做实验辨识。
Stribeck模型虽然比库仑+粘性更准,但它仍然是静态模型——它假设摩擦力只跟当前速度有关,跟历史状态无关。但实际中,摩擦力是有「记忆」的。
3.3 LuGre模型:带「记忆」的摩擦
LuGre模型,全称是Lund-Grenoble模型,是瑞典隆德大学和法国格勒诺布尔大学联合提出的。这个模型引入了一个内部状态变量,用来描述接触面微观鬃毛的变形。
你想想看,两个接触面微观上其实是不平的,像无数根小鬃毛互相交错。当外力作用时,这些鬃毛会像弹簧一样被拉伸,直到拉力超过某个阈值,鬃毛开始滑脱。这个过程就是摩擦力的来源。
LuGre模型的数学形式:
dz/dt = v - σ0 * |v| / g(v) * z
g(v) = F_c + (F_s - F_c) * exp(-(v/v_s)^2)
F_f = σ0 * z + σ1 * dz/dt + B * v
其中:
z是鬃毛的平均变形量(内部状态)σ0是鬃毛刚度σ1是鬃毛阻尼g(v)描述了Stribeck效应
这个模型能模拟很多有趣的现象,比如:
- 预滑动位移:在真正滑动之前,其实已经有一点点微小的位移了
- 摩擦滞后:加速和减速时的摩擦力曲线不重合
- 爬行现象:低速时出现的「走走停停」
下面这张图展示了三个模型的核心区别,我画了个简图帮你理解:
从图上你能清楚看到:库仑+粘性模型在零速处有个跳变,然后线性增加;Stribeck模型在低速区有个下凹;LuGre模型则因为考虑了鬃毛动态,曲线更平滑,还能模拟滞回特性。
3.4 三个模型的对比与选型建议
我把这三个模型的核心特点整理成了表格,方便你对比:
| 特性 | 库仑+粘性 | Stribeck | LuGre |
|---|---|---|---|
| 参数数量 | 2个 | 4个 | 5~6个 |
| 是否描述Stribeck效应 | 否 | 是 | 是 |
| 是否描述动态特性 | 否 | 否 | 是 |
| 参数辨识难度 | 简单 | 中等 | 较难 |
| 计算开销 | 极低 | 低 | 中等 |
| 适用场景 | 高速、粗定位 | 中低速、一般精度 | 低速、高精度、微米级 |
选型时我的建议是:
- 如果你的系统对低速性能要求不高,或者主要运行在高速区间,库仑+粘性模型完全够用,别折腾。
- 如果系统有低速爬行问题,但精度要求不是特别苛刻(比如0.1mm级别),Stribeck模型是性价比最高的选择。
- 如果要做纳米级定位,或者系统有明显的摩擦滞后现象,那就得上LuGre模型。不过要做好心理准备,参数辨识和调试会花不少时间。
一个小技巧:我在实际项目中经常这样干——先用库仑+粘性模型快速跑通系统,然后根据低速性能表现,决定要不要升级到Stribeck或LuGre。这样能避免一开始就陷入复杂的参数调试中。
好了,关于静态摩擦模型就聊这么多。这三个模型是摩擦补偿的基石,理解了它们,后面讲动态补偿和自适应算法时你就能更快上手。