3、动力学误差分析:惯性参数辨识误差、摩擦力与非线性扰动、关节柔性与弹性变形

各位同学,咱们今天聊点实在的。

轨迹规划写出来是一串漂亮的位移、速度、加速度曲线。但机器人一跑起来,实际轨迹跟规划轨迹之间总有偏差。为什么?说白了,就是动力学模型不够准。

我个人习惯把动力学误差分成三大类:惯性参数搞错了摩擦力没算对关节本身会变形。这三类误差,我每个都踩过坑。今天一个一个拆开讲。

核心观点:动力学误差是轨迹跟踪误差的主要来源。不搞定它,前馈补偿就是空中楼阁。

3.1 惯性参数辨识误差

先问一个问题:你凭什么觉得你写的动力学方程里的质量、质心、转动惯量是对的?

凭CAD模型?凭厂家手册?

嗯,这些都不靠谱。CAD模型里没算线缆、没算末端夹爪、没算工件。我做过一个项目,六轴机器人末端装了一个气动夹爪,CAD里标称重量0.8kg,实际称重1.6kg。你想想看,惯性参数直接翻倍,轨迹能准才怪。

惯性参数辨识误差具体表现在:

  • 质量误差:连杆实际质量与模型质量不符。尤其是末端负载变化频繁的场景。
  • 质心偏移:质心位置偏差会导致重力矩计算错误。低速时影响大,高速时影响更大。
  • 转动惯量误差:这个最隐蔽。惯量算错了,加速度阶段的力矩需求就不对。我见过一个案例,因为惯量低估了30%,导致加速阶段电机力矩饱和,轨迹直接跑飞。

我的经验:做惯性参数辨识,别信理论值。一定要做实验辨识。用最小二乘法或者扩展卡尔曼滤波,把实际参数辨识出来。我曾经在一个SCARA机器人上做过对比,辨识后的参数做前馈,轨迹跟踪误差从5mm降到了0.3mm。

为什么会这样?因为惯性参数直接影响动力学前馈的力矩计算。公式很简单:

τ = M(q) * q̈ + C(q, q̇) * q̇ + G(q) + τ_friction + τ_disturbance

其中M(q)就是惯性矩阵。M(q)错了,整个力矩前馈就偏了。你想想看,前馈力矩给错了,反馈控制器就得拼命补偿。但反馈有延迟,误差就出来了。

3.2 摩擦力与非线性扰动

摩擦力,是所有做轨迹控制的人的噩梦。

我刚开始做机器人控制时,觉得摩擦力不就是库仑摩擦加粘性摩擦嘛,一个公式搞定。结果第一次上机测试,低速时机器人一顿一顿的,像得了帕金森。为什么?因为低速时静摩擦和动摩擦的切换,产生了严重的非线性扰动。

摩擦力模型通常包括:

  • 库仑摩擦:与速度方向有关,大小恒定。τ_c = μ_c * sign(q̇)
  • 粘性摩擦:与速度成正比。τ_v = μ_v * q̇
  • Stribeck效应:低速时摩擦力反而更大。这个最坑人。
  • 静摩擦:速度为零时的最大静摩擦力。启动瞬间的"卡顿"就是它造成的。
摩擦类型 数学模型 对轨迹的影响
库仑摩擦 τ_c * sign(q̇) 速度过零时产生跳变,引起抖动
粘性摩擦 μ_v * q̇ 高速时力矩需求增加,跟踪滞后
Stribeck摩擦 非线性下降曲线 低速爬行,轨迹不平滑
静摩擦 τ_s (q̇=0时) 启动瞬间的"粘滞"现象

避坑指南:我曾经在一个精密装配项目中,因为没处理好Stribeck效应,导致机器人末端在接近目标点时反复震荡。后来加了基于LuGre模型的摩擦补偿,才把问题解决。记住:简单的库仑+粘性模型,在低速场景下基本不够用。

除了摩擦力,还有一类非线性扰动:齿轮间隙电机齿槽转矩线缆阻力。这些扰动很难建模,但确实存在。我个人习惯把它们统一归为"未建模扰动",然后用扰动观测器(DOB)去估计和补偿。

3.3 关节柔性与弹性变形

这个问题,很多人容易忽略。

你想想看,机器人关节里有减速器、有轴承、有传动带。这些东西都不是绝对刚性的。尤其是谐波减速器,它的柔性是出了名的。我做过一个协作机器人项目,关节刚度只有几千Nm/rad。你用力推一下末端,能明显感觉到弹性变形。

关节柔性带来的问题:

  • 位置误差:外力作用下关节产生弹性变形,实际位置与编码器读数不一致。
  • 振动:柔性关节加上负载,会形成弹簧-质量系统。轨迹规划中的加速度变化会激发谐振。
  • 轨迹滞后:柔性导致关节响应滞后,高速轨迹跟踪时误差明显增大。

怎么处理?我建议用关节柔性模型

τ = K_j * (q_m - q_l) + B_j * (q̇_m - q̇_l)

其中q_m是电机侧位置,q_l是连杆侧位置,K_j是关节刚度,B_j是阻尼系数。这个模型把关节当成一个弹簧-阻尼系统。电机转过去了,但连杆还没跟上,中间就有弹性变形。

关键点:关节柔性误差是高频误差。反馈控制很难完全消除,因为反馈带宽有限。我常用的方法是:在轨迹规划阶段就考虑柔性,做"输入整形"或者"陷波滤波",把谐振频率附近的激励成分滤掉。

我记得有一次调试一个重载机器人,末端负载20kg。规划了一条快速直线轨迹,结果末端一直在抖。查了半天,发现是关节柔性导致的二阶谐振。后来在轨迹中加了S型速度规划,把加速度变化率限制住,抖动就消失了。

3.4 三类误差的耦合关系

这三类误差不是独立的。它们会互相放大。

举个例子:惯性参数辨识不准 → 前馈力矩给错 → 反馈控制器加大增益去补偿 → 关节柔性被激发 → 产生振动 → 振动又影响摩擦力模型 → 摩擦补偿失效。

你看,一个误差引发连锁反应。

所以我的建议是:先做惯性参数辨识,再标定摩擦力模型,最后考虑关节柔性。一步一步来,别想一口吃成胖子。

实用技巧:如果你时间有限,优先处理惯性参数误差。因为它是"大误差",影响范围最广。摩擦力误差是"中误差",关节柔性是"小误差"(对大多数工业机器人而言)。先把大头搞定,剩下的慢慢优化。

动力学误差分类与耦合关系 动力学误差 惯性参数辨识误差 质量 / 质心 / 惯量 摩擦力与非线性扰动 库仑 / Stribeck / 齿槽 关节柔性与弹性变形 刚度 / 阻尼 / 谐振 互相放大 耦合效应 处理顺序:先惯性参数 → 再摩擦力 → 最后关节柔性 优先处理"大误差",逐步优化"小误差" 惯性参数 摩擦力 关节柔性

这张图把三类误差的关系画清楚了。你看,它们不是孤立的,而是互相影响。处理的时候要有全局观。

好了,这一章就到这里。记住:动力学误差分析是轨迹补偿的基础。参数不准,补偿就是瞎补。下一章我们聊具体的补偿方法,到时候会用到今天讲的内容。


专注资料整理