2. 机器人动力学基础:牛顿-欧拉方程、拉格朗日方程、惯性矩阵、科里奥利力与离心力、重力项
做力矩控制,绕不开动力学。说白了,你得知道机器人动起来需要多大的力,以及这些力都去哪儿了。我刚开始接触这个领域时,总觉得动力学就是一堆公式推导,直到在项目里被一个抖动问题折磨了两周……嗯,从那以后我老老实实把动力学基础补了一遍。
这一章我们聚焦五个核心概念:牛顿-欧拉方程、拉格朗日方程、惯性矩阵、科里奥利力与离心力、重力项。它们构成了机器人动力学建模的基石,也是后续力矩控制算法的理论支撑。
2.1 牛顿-欧拉方程:从单刚体到多连杆
牛顿-欧拉法,我个人习惯叫它“力平衡法”。它从牛顿第二定律和欧拉方程出发,逐连杆递推计算每个关节所需的力和力矩。
对于单个刚体,牛顿方程描述平动:
F = m * a_c
欧拉方程描述转动:
τ = I * α + ω × (I * ω)
其中 F 是合力,m 是质量,a_c 是质心加速度,τ 是合力矩,I 是惯性张量,α 是角加速度,ω 是角速度。
应用到多连杆机器人时,算法分为两步:
- 正向递推:从基座到末端,计算每个连杆的速度、加速度。
- 反向递推:从末端到基座,计算每个关节的力和力矩。
我在项目中遇到过一个问题:用牛顿-欧拉法建模时,如果坐标系定义不统一,递推结果会完全错误。你想想看,一个关节的力矩算出来是负的,电机还怎么控?
2.2 拉格朗日方程:能量视角的优雅解法
拉格朗日法走的是另一条路——从能量角度出发。它不直接分析力,而是通过系统的动能和势能来推导运动方程。
拉格朗日函数定义为:
L = T - V
其中 T 是系统总动能,V 是系统总势能。然后代入拉格朗日方程:
d/dt (∂L/∂q̇) - ∂L/∂q = τ
这里 q 是广义坐标(关节角度),q̇ 是广义速度,τ 是广义力(关节力矩)。
为什么说它优雅?因为拉格朗日法自动处理了约束力和内部耦合,你只需要写出能量表达式就行。我记得第一次用拉格朗日法推导六轴机器人的动力学方程时,虽然代数运算量很大,但最终结果的结构非常清晰。
| 对比项 | 牛顿-欧拉法 | 拉格朗日法 |
|---|---|---|
| 计算效率 | 高(递推形式,适合实时控制) | 低(需要大量符号运算) |
| 物理直观性 | 强(直接对应力和力矩) | 弱(通过能量间接推导) |
| 适用场景 | 实时控制、嵌入式实现 | 理论分析、离线仿真 |
| 处理约束 | 需要显式处理 | 自动包含 |
2.3 惯性矩阵:质量分布的数字画像
惯性矩阵 M(q) 描述了机器人各关节的惯性特性。它是一个对称正定矩阵,维度等于机器人的自由度。
对于 n 自由度机器人,惯性矩阵的形式是:
M(q) = [m₁₁ m₁₂ ... m₁ₙ]
[m₂₁ m₂₂ ... m₂ₙ]
[ ... ... ... ... ]
[mₙ₁ mₙ₂ ... mₙₙ]
其中 mᵢⱼ 表示关节 j 的加速度对关节 i 的力矩贡献。对角元素是各关节自身的惯性,非对角元素是耦合惯性。
在实际控制中,惯性矩阵有两个关键作用:
- 前馈补偿: 根据期望加速度计算所需的惯性力矩。
- 解耦控制: 通过矩阵求逆消除关节间的惯性耦合。
你想想看,如果忽略非对角元素,一个关节的运动会干扰其他关节,控制精度就会下降。我在做精密装配项目时,就遇到过因为没补偿耦合惯性导致末端抖动的问题。
2.4 科里奥利力与离心力:速度引起的“隐形力”
科里奥利力和离心力都跟速度有关,它们合起来写成 C(q, q̇)q̇。其中 C(q, q̇) 是科里奥利-离心力矩阵。
这两个力的物理含义:
- 科里奥利力: 当一个关节运动时,另一个关节的运动受到的影响。比如,肩关节转动时,肘关节的运动会产生一个垂直于两者运动方向的力。
- 离心力: 关节自身旋转产生的离心效应。速度越快,离心力越大。
我记得在调试一个高速搬运机器人时,发现当末端速度超过 2 m/s 时,轨迹跟踪误差突然变大。排查后发现是科里奥利力项被忽略了。加上之后,误差立刻降了下来。
2.5 重力项:最容易被低估的力
重力项 G(q) 是机器人动力学中最直观也最容易被低估的部分。它只跟关节位置有关,跟速度、加速度无关。
重力项的计算公式:
G(q) = ∂V(q) / ∂q
其中 V(q) 是系统的重力势能。对于串联机器人,每个连杆的重力势能是 mᵢ * g * hᵢ(q),hᵢ 是连杆质心的高度。
为什么说它容易被低估?因为很多人觉得重力补偿就是加一个固定值。但实际中,机器人构型变化时,重力矩的变化范围可能很大。比如一个六轴机器人,从水平姿态到竖直姿态,肩关节的重力矩可能变化 3-5 倍。
我曾经在一个协作机器人项目里,只做了静态重力补偿,结果机器人在某些姿态下会“溜肩”——就是关节锁不住,慢慢往下掉。后来加了实时重力补偿,问题才解决。
2.6 知识体系总览
下面这张图把本章的核心概念串起来了。你可以看到,动力学建模的两条路径最终都汇入同一个标准形式:
M(q)q̈ + C(q, q̇)q̇ + G(q) = τ
2.7 动力学参数辨识:从理论到工程
理论公式写好了,但实际中你还需要知道具体的参数值:质量、质心位置、惯性张量。这些参数通常通过辨识实验获得。
常用的辨识方法:
- CAD 模型提取: 从三维模型直接读取,但精度受限于模型与实际的一致性。
- 最小二乘辨识: 让机器人按激励轨迹运动,采集力矩和运动数据,离线拟合参数。
- 自适应在线辨识: 在控制过程中实时更新参数,适合负载变化的场景。
我记得第一次做参数辨识时,用了最简单的“单关节正弦激励法”。虽然精度一般,但胜在实现简单,适合快速验证。后来做高精度应用时,才改用“傅里叶级数激励轨迹”。