2. 运动系统建模:刚体模型、柔性体模型、摩擦模型(库仑+粘滞),辨识方法简介

做运动控制这么多年,我越来越觉得一个道理:控制算法再漂亮,也架不住模型太粗糙。说白了,前馈补偿就是「你有多懂你的系统,你就能补偿得多准」。这一章,咱们就聊聊怎么把运动系统「看透」——从刚体到柔性体,再到那个让人头疼的摩擦。

2.1 刚体模型:最朴素的起点

刚体模型,其实就是牛顿第二定律的翻版。你想想看,一个电机带着负载转,忽略掉所有弹性变形,那就是一个转动惯量加上一个阻尼。

数学上长这样:

J * dω/dt = T_m - B * ω - T_load

其中:

  • J —— 等效转动惯量(电机转子+负载折算过来的)
  • ω —— 角速度
  • T_m —— 电机输出转矩
  • B —— 粘滞阻尼系数
  • T_load —— 负载转矩

这个模型简单吧?但别小看它。我在做小型桌面机械臂的时候,一开始就用这个模型做前馈,效果已经能覆盖80%的应用场景了。刚体模型最大的好处是——参数少,辨识快。你只需要做一次恒速运行和一次加速运行,就能把J和B估出来。

我的小技巧: 做刚体模型辨识时,记得让系统跑几个不同的速度点。只跑一个速度,你分不清阻尼和负载的区别。

2.2 柔性体模型:当「硬」碰上了「软」

但现实往往没那么理想。尤其是当你遇到长传动轴、同步带、或者减速器的时候,刚体模型就不够用了。为什么会这样?因为中间有弹性

我印象很深,有一次做一台大型龙门铣床的进给轴。电机转得挺欢,但负载端就是慢半拍。一测,发现传动轴的扭转刚度不够,整个系统在低频段有个明显的谐振峰。这就是典型的柔性体问题。

柔性体模型,最常用的是双惯量系统:

J_m * dω_m/dt = T_m - K_s * (θ_m - θ_l) - B_m * ω_m
J_l * dω_l/dt = K_s * (θ_m - θ_l) - B_l * ω_l - T_load

这里多了几个参数:

  • K_s —— 传动轴的扭转刚度
  • θ_m, θ_l —— 电机侧和负载侧的角度
  • J_m, J_l —— 电机惯量和负载惯量

这个模型能很好地描述系统的谐振特性。你想想看,两个惯量中间夹着一根「弹簧」,这不就是一个典型的二阶振荡系统吗?

重点: 柔性体模型的前馈补偿,不能只补偿电机侧,还要考虑负载侧的动态响应。否则你给电机加再大的前馈,负载端该抖还是抖。

2.3 摩擦模型:那个让人又爱又恨的非线性

摩擦,是运动控制里最「磨人」的东西。它不像惯量和刚度那样线性,它会变方向、会变大小、还会滞后

最经典的摩擦模型,就是库仑+粘滞:

T_f = T_c * sign(ω) + B_v * ω

其中:

  • T_c —— 库仑摩擦(静摩擦的近似,与速度方向有关)
  • B_v —— 粘滞摩擦系数(与速度大小成正比)

这个模型简单实用,但有个坑——在零速附近,它不连续。你想想看,sign(ω)在ω=0处跳变,这会导致前馈补偿在换向时出现突变。我曾经在一个精密定位平台上吃过这个亏,换向时总是有个小过冲,查了半天才发现是摩擦前馈补偿太「硬」了。

避坑指南: 如果你用库仑+粘滞模型做前馈,建议在零速附近加一个平滑过渡区。比如用tanh(ω/ε)代替sign(ω),ε取一个很小的值(比如0.01 rad/s)。这样换向时的补偿会平滑很多。

当然,还有更复杂的摩擦模型,比如Stribeck效应、LuGre模型等。但说实话,在工业现场,库仑+粘滞已经能解决90%的问题。剩下的10%,等你真遇到了再上复杂模型也不迟。

2.4 辨识方法简介:怎么拿到这些参数?

模型建好了,参数怎么来?总不能靠猜吧。这里我简单介绍几种我常用的方法。

2.4.1 最小二乘法(LS)

这是最基础的方法。你把系统方程写成矩阵形式:

y = X * θ

其中y是测量值(比如加速度),X是回归矩阵(比如速度、位置),θ是待辨识的参数向量。然后:

θ = (X^T * X)^{-1} * X^T * y

就这么简单。但要注意,激励信号要足够丰富。如果你只给一个恒速信号,那只能辨识出阻尼,辨识不出惯量。

2.4.2 频率响应法

这个方法特别适合柔性体模型。你给系统扫频,从低频到高频,记录幅值和相位的变化。然后通过拟合伯德图,就能得到惯量、刚度、阻尼等参数。

我个人习惯用这个方法做双惯量系统的辨识。因为谐振峰的位置和高度,直接对应了刚度和阻尼比,非常直观。

2.4.3 摩擦参数的单独辨识

摩擦参数最好单独辨识。怎么做?让系统以不同的恒定速度运行,记录稳态时的转矩。然后画一条「速度-转矩」曲线,斜率就是粘滞摩擦系数,截距就是库仑摩擦。

我的经验: 做摩擦辨识时,一定要让系统跑正反两个方向。因为很多机械的摩擦是不对称的——正转和反转的库仑摩擦可能差不少。

2.5 知识体系总览

说了这么多,我画了一张图帮你理清思路。这张图展示了运动系统建模的核心逻辑:从最简单的刚体,到更真实的柔性体,再到那个绕不开的摩擦。每一步都有对应的模型和辨识方法。

运动系统建模知识体系 刚体模型 J·dω/dt = T - B·ω 参数:J, B 适用:刚性传动、低速 辨识:最小二乘法 柔性体模型 双惯量 + 弹簧 参数:J_m, J_l, K_s, B 适用:长传动、同步带 辨识:频率响应法 摩擦模型 库仑 + 粘滞 参数:T_c, B_v 适用:所有运动系统 辨识:恒速稳态法 前馈补偿 基于模型的前馈 = 模型越准,补偿越好 三种模型从简单到复杂,从线性到非线性 实际应用中,根据精度需求选择合适的模型复杂度

2.6 小结

这一章我们聊了三种模型:刚体、柔性体、摩擦。它们不是互斥的,而是可以叠加使用的。比如,一个实际的伺服系统,你可以用「刚体+摩擦」做基础前馈,如果发现高频振动,再叠加上柔性体补偿。

记住一句话:模型是工具,不是目的。别为了建模而建模,够用就好。我在项目里经常看到有人把模型搞得很复杂,结果参数辨识不准,前馈反而比不用还差。嗯,这就不划算了。

下一章,我们会把这些模型用到前馈补偿的实战中去。到时候你就知道,今天花时间把模型搞明白,绝对值。


专注资料整理