4. 动力学基础:牛顿-欧拉法、拉格朗日法、惯性参数辨识
动力学,说白了就是研究「力与运动的关系」。
运动学只告诉你关节怎么动,动力学才告诉你需要多大的力才能让它这么动。我刚开始做机器人控制时,总觉得动力学是理论家的事,直到有一次给一个六轴臂做高速搬运——不加动力学补偿,末端抖得像筛子。嗯,从那以后我再也不敢跳过动力学了。
核心观点:动力学模型是高性能控制的基础。没有准确的动力学,你的PID参数调得再好,高速场景下也会力不从心。
4.1 为什么需要动力学模型?
你想想看,运动学只告诉你关节角度和末端位姿的关系。但实际电机要克服的,除了惯性力,还有科里奥利力、离心力、重力、摩擦力。这些力如果不补偿,轨迹跟踪误差会随着速度增加而急剧放大。
我个人习惯把动力学模型的作用归纳为三点:
- 前馈补偿:提前计算出需要的力矩,叠加到反馈控制上,让响应更快
- 仿真验证:在实物调试前,先用模型跑一遍,避免撞机
- 负载辨识:通过动力学模型反推末端负载的重量和质心位置
我的经验:在调试高速拾放应用时,动力学前馈能让跟踪误差从5mm降到0.3mm。代价就是——你得花时间把模型参数标定准。
4.2 牛顿-欧拉法:递归的力与力矩传递
牛顿-欧拉法,说白了就是「从基座到末端,再从末端回到基座」的两趟计算。一趟算速度加速度,一趟算力与力矩。
它的思路很直观:每个连杆都满足牛顿方程和欧拉方程。
- 牛顿方程:\( F = m \cdot a \) —— 质心的平动
- 欧拉方程:\( \tau = I \cdot \alpha + \omega \times (I \cdot \omega) \) —— 绕质心的转动
具体分两步走:
- 正向递推(基座→末端):计算每个连杆的角速度、角加速度、线加速度
- 反向递推(末端→基座):根据末端负载力/力矩,反向计算每个关节的驱动力矩
我在项目中遇到过一个问题:反向递推时,如果末端负载很大,力矩会逐级放大,数值容易溢出。后来我改用双精度浮点,才稳住。
注意:牛顿-欧拉法的计算量是 \( O(n) \),n是关节数。对于六轴臂,实时性完全够用。但如果你用拉格朗日法的原始形式,计算量是 \( O(n^4) \)——嗯,那基本告别实时控制了。
4.3 拉格朗日法:从能量角度看动力学
拉格朗日法不直接分析力,而是从能量入手。它的核心公式就一个:
L = T - V
其中:
L —— 拉格朗日量
T —— 系统总动能
V —— 系统总势能
然后代入拉格朗日方程:
d/dt(∂L/∂q̇) - ∂L/∂q = τ
说白了,你只要写出每个连杆的动能和势能,剩下的就是求偏导。机械推导,不容易出错。
但代价是什么?
- 对于3轴以上的机器人,符号推导的表达式会爆炸式增长
- 一个六轴臂的拉格朗日方程展开后,可能有几百项
- 不适合实时计算,更适合离线分析和教学
我的建议:做理论研究或教学时用拉格朗日法,思路清晰。做工程控制时用牛顿-欧拉法,计算高效。我两种都用过,现在基本只用牛顿-欧拉。
4.4 两种方法的对比
| 对比维度 | 牛顿-欧拉法 | 拉格朗日法 |
|---|---|---|
| 计算复杂度 | O(n),适合实时控制 | O(n⁴),适合离线分析 |
| 推导难度 | 需要处理约束力,容易出错 | 从能量出发,推导更系统 |
| 物理意义 | 直接得到关节力矩 | 得到的是广义力 |
| 工程应用 | 工业机器人控制的主流 | 多用于学术研究和仿真 |
| 处理闭链机构 | 需要额外处理约束方程 | 自然支持约束 |
我个人习惯:工程用牛顿-欧拉,用拉格朗日。两者不冲突,理解一个就能理解另一个。
4.5 惯性参数辨识:让模型贴近现实
动力学模型写得再漂亮,参数不准也是白搭。每个连杆的质量、质心位置、惯性张量——这些参数从CAD模型里拿到的,和实际装配出来的,往往有偏差。
我曾经遇到过一台机器人,CAD里算的惯量比实际大了30%。结果前馈力矩给太大,电机反而过冲。后来老老实实做了参数辨识,才把问题解决。
惯性参数辨识的流程一般是:
- 设计激励轨迹:让机器人跑一组充分激发的轨迹,覆盖所有运动状态
- 采集数据:记录关节位置、速度、加速度、电流/力矩
- 数据预处理:滤波、去噪、剔除异常值
- 参数估计:用最小二乘法或递推最小二乘法求解
- 验证:用另一组轨迹验证辨识结果的预测精度
避坑指南:激励轨迹的设计很关键。如果轨迹不够丰富,某些参数会不可观。我曾经用傅里叶级数叠加多频率成分,效果比单频正弦好很多。
4.6 动力学知识体系总览
下面这张图,是我自己整理动力学知识时画的框架。你可以把它当作学习路线图:
4.7 工程实践中的注意事项
最后,分享几个我在实际项目中踩过的坑:
- 摩擦力不可忽略:很多动力学模型只考虑惯性项,但实际机器人的摩擦力(尤其是静摩擦+库仑摩擦)占比很大。我建议至少加上一个简单的摩擦模型。
- 减速器惯量要折算:电机端的惯量经过减速器后,反映到关节端要乘以减速比的平方。这个很多人会忘。
- 参数辨识不是一次性的:随着机械磨损、润滑状态变化,参数会漂移。我习惯每半年重新标定一次。
- 不要追求完美模型:模型越复杂,参数越多,辨识越困难。抓住主要项(惯量、重力、摩擦力),忽略次要项(柔性、间隙),工程上更实用。
重要提醒:动力学模型再准,也替代不了反馈控制。前馈是「锦上添花」,反馈才是「雪中送炭」。两者结合,才是工程上的最优解。