ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LuGre动态摩擦模型:解决低速爬行与粘滑振荡的实战指南

LuGre动态摩擦模型:解决低速爬行与粘滑振荡的实战指南 前阵子在一台高精度转台上折腾了整整两个星期电机指令跑得很顺滑码盘反馈却是肉眼可见的一顿一顿。低速段尤其明显速度一压到每分钟几转以下系统就像在“打嗝”。起初怀疑是机械间隙、联轴器松动、PID参数不合适挨个排查完都不是。最后把问题锁定到摩擦本身——不是库仑摩擦或粘滞摩擦这种静态力能解释的而是一套动态过程。这就要说到LuGre摩擦力模型了。LuGre模型的全称是Lund–Grenoble模型是1995年前后由瑞典隆德理工学院和法国格勒诺布尔实验室的研究者联合提出的动态摩擦模型。它不像传统摩擦模型那样只给一个力而是引入一个微观状态变量用“弹性鬓毛”的挠度变化把预滑动、Stribeck效应、粘滑运动、摩擦记忆这些现象统一进一套微分方程里。这篇文章我想把这套模型的前因后果、数学推导、参数辨识的实操过程以及在仿真和控制器集成时踩过的坑一次说清楚。适合正在做运动控制、伺服系统、机器人关节或者精密定位平台的工程师们参考。1. 为什么静态摩擦模型在低速精密运动控制里碰了壁1.1 先看一个典型的低速爬行场景想象一个龙门式直线平台伺服电机通过滚珠丝杠驱动工作台移动。空载时加速跑没有问题定位精度也够可一旦在低速下走轨迹——比如视觉检测时那种“极慢速扫描”——位置反馈就开始出锯齿。有人管这叫低速爬行有人叫粘滑运动。从控制角度看这个问题非常棘手。反馈控制器给出的误差可能只有几个脉冲但摩擦在低速段呈现出高度的非线性时大时小、有迟滞、有记忆。你用经典PID加前馈往往会出现两种极端增益调大了摩擦一旦“松开”过冲明显增益调小了低速段又切不动一直卡在爬行状态里。我当时做了个实验把平台从静止开始逐步增加驱动力发现它并不是一个简单的“低于最大静摩擦力就不动、超过就滑”的开关特性。力的临界值会在一个范围内游走微小位移出现时平台会先“挪”那么几个微米然后停住再来几个微米。这种微观尺度下的“动一动、停一停”让所有基于静态摩擦模型的仿真全都失真。1.2 库仑、粘滞、Stribeck三板斧的静态模型传统教科书里摩擦模型长这样库仑摩擦F Fc · sign(v)库仑 粘滞F Fc · sign(v) σ2 · v加上Stribeck曲线F Fc (Fs − Fc)·exp(−(v/vs)²) · sign(v) σ2 · v其中Fc是库仑摩擦力Fs是最大静摩擦力vs是Stribeck速度σ2是粘滞摩擦系数。这套模型描述了一件事摩擦随速度变化低速时摩擦反而更高越过Stribeck速度后摩擦随速度上升。做控制的人很熟悉也常用它做静态前馈补偿。但它本质上是速度的代数函数给定一个速度就给定一个力没有任何“历史依赖”。在快速、连续的轨迹控制中这种静态近似基本够用。可一旦进入低速精密运动速度本身成了小量微观尺度上的弹性变形、接触面微凸体的粘着与断裂开始占据主导。速度相同受力过程不同摩擦力也不同。静态模型在这里彻底失效。1.3 静态模型解释不了的四个现象我在实际测试中反复看到静态模型解释不了的现象总结下来有四类预滑动位移外力低于最大静摩擦时接触面其实已经产生了微小位移量级在几微米到几十微米。力和位移近似线性像一根弹簧被压弯。静态模型说“没动就是没动”但实际是“微动了”。摩擦记忆效应同样的速度摩擦力不仅跟当前速度有关还跟这个状态是怎么来的有关。从静止加速到v和从高速减速到v摩擦轨迹并不重合。力-位移滞后回线在预滑动阶段做小幅正弦位移摩擦力-位移曲线会展开成一个滞回环而不是一条过原点的直线。这说明摩擦过程存在能量耗散也就是粘弹性——既有弹性储能又有阻尼耗能。粘滑振荡系统在某段速度区间会出现周期性的“卡住—滑动—卡住”本质上是一种松弛振荡。静态模型不会生成这种动态行为。读到这里你应该明白了静态摩擦模型是“代数形式的映射”而真实摩擦是一个“带有内部状态的动态系统”。LuGre模型正是用“平均鬓毛挠度”这个状态变量把静态模型缺失的微观过程补了回来。2. 微观视野下的摩擦接触从表面微凸体到鬓毛模型2.1 真实接触面并不是一个平面要理解LuGre得先把宏观的“两个面在滑动”这个画面打碎。任何机械加工表面的粗糙度都在微米甚至纳米量级所谓“平整”只是宏观意义上的平整。两个表面接触时真正接触的只是少数微凸体的峰顶实际接触面积可能只有名义面积的千分之几到百分之几。这些微凸体相互挤压、粘着、剪切。当外力较小时它们只是发生弹性变形宏观上表现为“接触刚度”外力进一步增大微凸体的粘着点开始被剪切断裂同时新的微凸体接触重新形成宏观上进入滑动阶段。这个过程是持续不断的“粘着—断裂—再粘着”能量就在一次次断裂中被耗散掉。搞清楚了这一点就明白为什么摩擦是一个动态过程微凸体接触的建立和破坏需要时间剪切变形也不是瞬间完成。速度越快微凸体来不及完全粘着就被扯开因此动态强度反而下降——这就是Stribeck负斜率效应的微观根源。2.2 鬓毛想象弹性弯曲、黏附与断裂LuGre模型的作者用一个很直观的比喻来抽象这种接触把两个接触表面想象成两把对向放置的刷子表面上布满了无数根“鬓毛”。这些鬓毛随机粘附在对面的表面上当两表面发生相对运动时鬓毛会先被拉伸弯曲产生弹性力弯曲到一定程度鬓毛从粘附点脱开完成一次“脆断”然后再重新粘附到新的点位上。在这个比喻里所有鬓毛的平均变形量就是状态变量z弹性弯曲的力正比于z系数是σ0变形过程中伴随的能量耗散正比于变形速率系数是σ1而脱开—重新粘附的“断裂率”取决于相对速度v和某个与速度相关的函数g(v)。你可以把z想成“所有微观接触点的平均弹簧伸长量”。平台宏观上静止不代表z为零——只要有过受力历史部分鬓毛仍处于拉伸状态宏观摩擦力也就存在。这就是“摩擦记忆”的来源。这是LuGre模型最核心的直觉摩擦不仅是速度的函数更是接触微结构变形状态的函数。2.3 Dahl模型LuGre的直接前身在讲LuGre数学方程之前必须提一下Dahl模型。1976年Dahl在研究滚动轴承摩擦力时发现摩擦力在微小位移下具有类似于滞回弹簧的行为于是提出了一个一阶动态模型dz/dt v − (σ0 / Fc) · |v| · z F σ0 · z它的稳态特性很好算令dz/dt0在v0时有zFc/σ0这时的摩擦力Fσ0·zFc恰好回到库仑摩擦在v0时则等于−Fc。所以Dahl模型本质上是把库仑摩擦做成了带记忆的滞回形式但它有一个明显的局限——它没有Stribeck效应稳态力的绝对值恒等于Fc不随速度变化。LuGre模型正是在Dahl模型基础上加了两个改进一是把固定的Fc换成一个依赖速度的Stribeck函数g(v)二是在力的表达式中加入粘性阻尼项σ1·dz/dt和粘滞摩擦项σ2·v。这一步扩展让模型既能描述预滑动滞回又能描述Stribeck负斜率和高速粘滞增阻适用范围一下子宽了很多。3. LuGre模型的数学骨架状态z的演化方程与Stribeck函数的配合3.1 两条核心方程先背下来再理解标准的LuGre模型就是两条方程dz/dt v − σ0 · |v| / g(v) · zF σ0 · z σ1 · dz/dt σ2 · v其中z是平均鬓毛挠度单位是长度直线运动或弧度旋转运动σ0是鬃毛刚度系数σ1是鬃毛阻尼系数σ2是粘滞摩擦系数g(v)是Stribeck曲线函数g(v) Fc (Fs − Fc) · exp(−(v/vs)²)。第一条方程描述微观状态z如何演化第二条方程描述宏观摩擦力如何由z、ż和v共同决定。从上式可以看出即便没有滑动v0只要z不为零摩擦力就存在而z的变化率不只是速度v还受到“当前z离稳态多远”的影响。这个耦合结构使得模型能自动收敛到宏观稳态同时保留微观动态过程。3.2 为什么状态方程是“v − σ0|v|/g(v)·z”这个形式很多人第一次看到第一条方程会问分母里为什么会冒出个g(v)关键在于稳态。假定以恒定速度v运行足够长时间鬃毛的变形应该稳定下来也就是dz/dt0。解这个方程当v0时z_ss g(v) / σ0把z_ss代进力方程的第二项dz/dt0因此稳态摩擦力F_ss σ0 · z_ss σ2 · v g(v) σ2 · v正好就是Stribeck静态摩擦模型的形式。换句话说方程中的系数σ0/g(v)是刻意设计的目的是让动态过程的稳态恰好退化到静态模型。如果分母没有σ0稳态z就会变成g(v)此时力方程变成Fσ0·g(v)σ2·v量纲和数值都要重新标定容易混乱。所以标准的写法必须把σ0放在分母里保持g(v)具有“力”的量纲。这个“动态模型稳态退化到静态模型”的性质是LuGre能够被广泛接受的重要原因。它既没有抛弃前人积累的静态模型参数又在动态过程上补充了必要的自由度。3.3 Stribeck函数g(v)的参数与物理单位g(v) Fc (Fs − Fc) · exp(−(v/vs)²)这个形式和静态Stribeck模型完全一致。参数含义如下参数物理意义典型量纲直线/旋转Fc库仑摩擦力滑动时基本摩擦水平N / N·mFs最大静摩擦力突破静止的临界力N / N·mvsStribeck速度曲线过渡区间的特征速度m/s / rad/sσ0鬃毛刚度预滑动段的力-位移斜率N/m / N·m/radσ1鬃毛阻尼微观变形的耗散系数N·s/m / N·m·s/radσ2粘滞摩擦系数宏观线性阻尼N·s/m / N·m·s/rad注意Fs通常大于Fc因为低速下微凸体有更多时间充分粘着剪切强度更大。vs的取值决定了Stribeck负斜率所在的转速区间。vs越小负斜率越集中在低速区vs越大过渡越平缓。对高精度平台来说vs通常在几mm/s或更低的量级。我之前见过一个经典误区有人为了让仿真抖动更快把vs设得很小结果低速段的粘滑振荡频率完全失真跟实测对不上。原因就是vs本质上由接触表面状态决定它是物理量不是调参旋钮——至少在模型标定阶段应该如此。3.4 z的物理意义平均鬃毛挠度与摩擦记忆z是这条模型里最容易让人困惑的变量因为它在物理世界并不直观可测。你不能用任何传感器直接“测得鬓毛的平均挠度”它是模型内部状态。但从功能上看z承担了两件事储能z不为零意味着鬃毛处于变形中对应宏观上的弹性力σ0·z记忆z的演化受整个速度历程影响当前时刻的z包含了过去的“剪切历史”。这就解释了为什么LuGre能复现实验中的摩擦记忆效应你以某个速度滑行一段时间后减速停止此时的z已经积累到了一个与历史相关的值再次启动时初始摩擦取决于这个值而不是简单地等于“最大静摩擦 × 当前速度符号”。理解了z是状态而非可测物理量也就能理解为什么在控制器里经常需要设计观测器来估计它——这个后面专门讲。4. 摩擦的三种宏观表现如何从同一个模型里涌现4.1 低速预滑动阶段鬃毛弹性主导当外部位移非常小、速度接近于零时鬃毛的“断裂—再粘附”过程基本不发生整个接触面像一个弹塑性介质。此时模型退化为dz/dt ≈ v F ≈ σ0 · z σ1 · v这意味着刚接触的时候力和位移近似线性刚度就是σ0。如果在这个阶段做小幅往复运动每个周期都会沿不同的路径走形成滞回环——这归功于σ1耗散项。我记得在实验室里测过一组数据对一个精密平台施加幅值5微米的正弦位移实测的力-位移回线中心斜率大约是2.5×10⁷ N/m这就是σ0的近似值。这个数值非常大相当于每微米变形产生25牛的力。它直接决定了系统的等效低频刚度也是控制器带宽的物理上限来源之一。很多仿真过软就是因为σ0比实际值小了几个数量级。4.2 Stribeck过渡区负斜率是粘滑运动的温床速度从零开始增加时鬃毛断裂频率升高微凸体粘着时间缩短导致有效切向强度下降摩擦力开始回落。模型里表现为g(v)从Fs逐渐衰减到Fc出现一段“负斜率”区间。这个负斜率在控制上非常危险——它等效于向系统注入负阻尼。想象一个质量-弹簧-阻尼系统摩擦项随速度上升反而下降相当于阻尼系数为负系统的能量不降反增振动就会被激励起来。这正是所谓粘滑运动stick-slip的根源。实测中这会让平台在低速段产生规则的锯齿状速度波形先是完全卡住摩擦克服后突然加速减速后再次卡住。你可以在示波器上清楚看到速度信号像一个锯齿波。这一时期通常是低速运动控制最难受的区间也是LuGre模型最有用的区间。4.3 全滑动阶段粘滞摩擦接管当速度远超vs后stribeck项已经收敛到Fc摩擦力的增量主要由σ2·v贡献。这时模型退化为一个线性粘滞摩擦加上常数库仑项的简单形式。对于跑高速轨迹的场合这部分的辨识精度至关重要——σ2估算偏大或偏小会直接影响前馈补偿力矩轻则增加跟踪误差重则引发震动。测σ2最常用的方法是做多组不同速度的匀速运动测量稳态驱动力用高速段的斜率来拟合。但要注意高速下温升明显润滑油粘度会变化σ2并不恒定。我通常会把测试速度区间限制在不超过额定速度的60%并在每组测量之间留足散热时间。4.4 粘滑运动stick-slip的松弛振荡解释用LuGre模型可以比较直观地解释粘滑振荡当驱动端通过一个柔性环节比如丝杠带动负载时电机端匀速推进但负载端的摩擦使它在微观上不断经历预滑动和滑动的交替。系统中的柔性相当于弹簧LuGre摩擦的负斜率相当于负阻尼。弹簧储能→摩擦释放→能量损失→再次储能这种循环就形成了松弛振荡。你看一个模型能自然涌现出静态模型完全无法表达的振荡行为这是它最大的价值所在。你可以用仿真重现这些现象调整参数观察振荡频率和幅值的变化规律比在真机上反复试错要高效得多。5. 参数辨识实操记录从测力平台到参数拟合的完整链路5.1 参数清单σ0、σ1、σ2、Fc、Fs、vs一个都不能少LuGre模型总共有六个参数在实际工程中我不会一次性全参数辨识而是分静态和动态两步走。顺序很重要先确定与速度相关的静态参数再辨识与动态响应相关的σ0和σ1。需要说明的是转动系统和直线系统的量纲不同但辨识思路完全一致。以下以直线平台为例展开旋转关节只需把力换成力矩、位移换成角度。5.2 静态参数辨识匀速扫描的F-v曲线静态参数即Fc、Fs、vs、σ2。核心实验是让平台以一系列恒速运动每个速度点稳定后记录驱动力矩。具体做法选择速度序列从0.01vs预计值到10vs以上按对数分布取8~12个点。每个速度点先正向匀速再反向匀速各测一次取两者的平均值作为该速度下的摩擦力估计这样可以抵消重力偏置、传感器零漂等方向相关系统误差。对速度-力数据做非线性拟合用公式F Fc (Fs − Fc)·exp(−(v/vs)²) σ2·v拟合。这个拟合看起来简单有两个细节容易被忽略低速点的判断如果速度太低系统会进入粘滑区而不是稳态滑动区采集到的“平均力”包含大量振荡成分不是模型定义的稳态摩擦力。这时候要结合速度信号的时域波形判断凡是出现锯齿波的数据点都应该剔除。高速点的温升高速摩擦生热导致接触表面温度升高粘滞系数下降。应对办法是限制最高测试速度并保证每个测量点之间有充分等待时间让系统回到热平衡。Fs还有一个更直接的测量方法对静止平台缓慢增加驱动力记录负载刚刚开始移动时的临界力。这能给出静态下的最大静摩擦但要注意它对应的是静止状态而非微速度状态与F-v曲线外推的Fs可能略有差异建议以临界力结果为准。5.3 动态参数辨识预滑动回线与阶跃响应σ0的辨识相对直观。让平台在预滑动范围内做小幅三角波或正弦位移记录力-位移回线回线中心段的斜率就是σ0。具体操作要点位移幅值要小于鬃毛断裂的临界位移通常在几十微米以内实际选取由回线是否出现明显非线性转折来确定频率要足够低减小σ1带来的动阻尼影响但不能低到蠕变效应太强取回线中间线性段的斜率同时剔除首圈数据因为第一圈往往包含从未经历过的历史状态。σ1的辨识比较麻烦因为它在宏观力方程中和ż相关对测量带宽要求高。一种可行方案是用阶跃速度实验在预滑动区快速施加一个速度阶跃观测摩擦力的瞬态超调量。超调峰值与稳态值之差中包含σ1的贡献结合系统的机械柔度可以用一阶模型拟合。如果实验室条件有限也可以把σ0、σ1连同以上四个静态参数放进一个带约束的非线性优化里用一组丰富的实测数据直接拟合全部六个参数。这个思路在离线仿真标定时很实用只是要确保激励信号足够丰富包含预滑动、过渡区、全滑动三段。5.4 辨识过程中我踩过的几个坑说实话参数辨识看起来像个实验课作业实操起来全是坑。我把自己记忆最深的几个写出来省得你重走弯路。采样率不够会丢动态信息。σ1的辨识需要捕捉毫秒级摩擦瞬态1kHz的采集在部分高速轴上根本不够至少要5kHz以上事后还要避免过度滤波。我有一次用了2kHz采样加50Hz低通滤波结果σ1值小了一个数量级。测力平台刚度不足会污染σ0。如果力传感器本身串联柔度测到的“力-位移”斜率是传感器柔度与鬃毛刚度的并联结果会明显偏低。可以检测一下撤掉负载、直接给传感器施加力看看它的变形量是否可忽略。伺服闭环会影响低速数据。在闭环位置模式下做匀速扫描控制器会不断修正跟踪误差低速段实际速度波动很大。最好切到速度开环或力矩闭环模式直接从驱动电流换算摩擦力。正反向不对称很常见。丝杠预紧、导轨装配都会造成正反向摩擦力不等。实际工程中不必强行建模成对称的可以标定两套参数做分段处理。6. 仿真与控制器集成的经验LuGre的坑很深但值得爬6.1 数值仿真发散问题与过零处理把LuGre放进Simulink或者其他仿真环境里第一个打击就是明明参数看着没问题仿真却高频振荡甚至直接发散。原因有两方面。一是状态方程里的|v|在过零处不可微符号跳变给数值积分带来高频激励二是σ0的量级往往很大鬃毛动态的时间常数极短方程呈刚性。很多默认的变步长求解器在穿越零速度时步长自适应失败导致结果跳变。我常用的处理方式把sign(v)替换成连续可导函数比如s(v) 2/(1 exp(−av)) − 1a取值根据速度分辨率和仿真步长调整既要保证低速段逼近符号函数又不能引入超出物理带宽的高频分量在速度的零点附近设置一个微小的死区比如|v| 1e-6时直接按v0处理防止数值积分时间步长趋近于零必要时改用隐式求解器或固定步长很小的显式积分器固定步长常取(1/10)·(σ0/(等效质量))对应的振荡周期。这个细节决定了仿真能否稳定跑完一条轨迹。如果你发现LuGre仿真总在低速段发疯先查过零处理而不是怀疑参数。6.2 摩擦状态观测器与补偿控制应用LuGre做前馈补偿时最大的困难是z不可测。想算摩擦补偿量就得先估计当前的z。标准做法是设计一个摩擦状态观测器把模型嵌入控制器中实时积分ż_hat v − σ0·|v|/g(v)·z_hat L·(可测误差项)其中L是观测器增益。这里注意如果系统有位置和速度测量可以用驱动力的残差来修正z的估计值避免开环积分漂移。观测器的时间常数要明显快于系统机械动态但慢于噪声频带这又是一个权衡。我个人的经验是高精度的前馈摩擦补偿往往不需要把观测器增益调到非常极端因为LuGre模型的z在多数工况下变化并不剧烈。关键是要保证模型参数实时准确否则前馈直接引入比不补偿更大的误差。6.3 参数随工况漂移时的在线调整LuGre模型最现实的问题六个参数并不是常量。温度、载荷、磨损、润滑状态都会改变参数。离线标定一次只能覆盖一个工况。在温度影响显著的场合我建议至少做一个简化在线标定控制器中实时计算跟踪误差和驱动力的相关性如果恒定磨损导致库仑摩擦力偏离预设值用一个慢速积分器在线修正Fc如果润滑特性变化导致Stribeck过渡点漂移提示操作人员重新标定而不是硬跑。这个方法不追求全参数在线辨识目标是保持前馈精度在可用范围内。对于那些参数变化剧烈的高动态系统可能要考虑增益调度——在不同工况区间切换不同参数组比单一参数集鲁棒得多。6.4 LuGre模型的边界和衍生模型最后说点实话LuGre模型不是万能的。它本质上是“单状态、集总参数”模型对许多现象的刻画是统计意义上的。当表面状态复杂到出现明显的非局部记忆时——比如润滑膜的记忆效应比机械接触本身还强——单个状态变量z就不够用了。这时候可以考虑Bouc-Wen模型、Maxwell滑移模型、广义Maxwell模型等它们用多个内部状态或分数阶微积分来刻画更丰富的摩擦历史依赖。但LuGre作为工业界最常用的动态摩擦模型价值在于提供了一个完整的分析范式用宏观可测的行为反推微观状态的演化方程再回到宏观力输出。这个“状态建模”的思路对后浪模型同样适用。对我来说身边装备了无数高精度伺服系统的今天低速段的力控品质依然是最能拉开系统差距的地方。如果你也被低速爬行、粘滑振荡、定位微抖这类问题困扰不妨先用LuGre把摩擦“拆开”看大概率能比盲目调PID多一条更可靠的路。
返回列表