3. 动力学基础:牛顿-欧拉方程、拉格朗日方程、动力学参数辨识
各位同学,欢迎来到动力学这一章。
说实话,很多做运动控制的工程师,一听到「动力学」三个字就头大。我当年也一样。总觉得搞个PID就能跑,干嘛要学这些复杂的方程?直到有一次,我调试一台六轴机器人,末端负载一变化,整个系统就开始抖。那时候我才意识到——没有动力学模型,你就是在盲调。
这一章,咱们把动力学掰开揉碎了讲。核心就三块:牛顿-欧拉方程、拉格朗日方程、还有参数辨识。说白了,前两个是理论工具,第三个是工程落地的手段。
3.1 牛顿-欧拉方程:从力到运动的直接映射
牛顿-欧拉方程,我个人习惯叫它「N-E法」。它的思路很直接:对每个连杆,分别写出牛顿方程和欧拉方程。
牛顿方程管平动:
F = m * a_c
欧拉方程管转动:
τ = I * α + ω × (I * ω)
这里有个坑,我当年踩过。欧拉方程里的惯性张量 I,是相对于质心的。如果你用相对于关节轴的惯性矩,算出来全是错的。嗯,这一点千万注意。
N-E法的计算流程,一般是两步走:
- 正向递推:从基座到末端,计算每个连杆的速度、加速度
- 反向递推:从末端到基座,计算每个关节的力/力矩
你想想看,这其实就是一个「先算运动,再算力」的过程。我在做重载机器人项目时,就靠这个流程排查过一个关节过载的问题——反向递推时发现某个连杆的力矩异常大,最后查出来是减速器间隙导致的冲击。
核心要点:N-E法适合实时控制,计算量小。但推导过程繁琐,容易出错。
3.2 拉格朗日方程:从能量角度看问题
拉格朗日方程,说白了就是「能量守恒的升级版」。它不直接分析力,而是分析系统的动能和势能。
公式长这样:
τ = d/dt (∂L/∂q̇) - ∂L/∂q
其中 L = T - V,T是动能,V是势能。
我个人觉得,拉格朗日法比N-E法更「优雅」。为什么?因为它不需要考虑约束力。你只要写出系统的总能量,然后求导就行了。
举个例子,一个二连杆机械臂:
- 先写出两个连杆的动能 T1、T2
- 再写出势能 V1、V2
- 代入拉格朗日方程,直接得到关节力矩
我在做协作机器人动力学建模时,就用的拉格朗日法。因为协作机器人关节多,约束复杂,用N-E法推导容易漏项。拉格朗日法虽然计算量大一点,但不容易出错。
我的建议:做理论分析、离线仿真时,用拉格朗日法。做实时控制、嵌入式实现时,用N-E法。
3.3 动力学参数辨识:让模型落地
理论模型再漂亮,参数不对也是白搭。你想想看,每个连杆的质量、质心位置、惯性张量,这些值你从CAD里导出来,跟实际装配好的机器人能一样吗?
我遇到过最夸张的一次,CAD模型里连杆质量是12kg,实际称重是13.6kg。差了13%!用那个模型做前馈补偿,结果越补越差。
所以,参数辨识是必须的。常用的方法有:
- 最小二乘法:采集关节力矩和运动数据,用线性回归拟合参数
- 傅里叶级数激励轨迹:设计特定的运动轨迹,充分激励所有动力学参数
- 递推最小二乘:在线实时更新参数,适应磨损和温度变化
这里我分享一个实战经验。做参数辨识时,激励轨迹的设计非常关键。如果你只做正弦摆动,只能辨识出惯量和阻尼,摩擦力参数根本激不出来。我一般用「多频叠加」的轨迹,频率覆盖0.5Hz到5Hz,幅值从小到大变化。
注意:参数辨识不是一次性的。机器人使用一段时间后,关节磨损、润滑状态变化,动力学参数会漂移。我建议每运行500小时重新辨识一次。
3.4 三种方法的对比与选择
咱们做个表格,一目了然:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 牛顿-欧拉法 | 计算快,适合实时控制 | 推导繁琐,容易出错 | 嵌入式控制、高频伺服 |
| 拉格朗日法 | 推导简洁,物理意义清晰 | 计算量大,不适合实时 | 离线仿真、理论分析 |
| 参数辨识 | 模型准确,适应实际系统 | 需要实验数据,设计复杂 | 工程落地、前馈补偿 |
我个人习惯是:先用拉格朗日法推导模型结构,再用参数辨识获取实际数值,最后用N-E法做实时控制。三招齐下,基本不会出大问题。
3.5 知识体系总览
下面这张图,是我自己总结的动力学知识框架。你可以把它当成一张地图,随时回来对照:
这张图把三者的关系讲得很清楚。拉格朗日法负责「搭框架」,参数辨识负责「填数据」,牛顿-欧拉法负责「跑实时」。三者缺一不可。
好了,动力学基础就讲到这里。记住一句话:没有动力学模型的控制,就像蒙着眼睛走路。你也许能走几步,但永远走不远。
公众号:蓝海资料掘金营,微信deep3321