3、动力学模型入门:牛顿-欧拉法与拉格朗日法、刚体动力学方程、惯性参数
好,咱们进入动力学模型这个硬核话题。说实话,很多做轨迹规划的朋友,一开始都觉得动力学是搞控制的人的事。但我在项目里吃过亏——纯运动学规划的轨迹,一到高速就抖得不行,电机还过载。后来才明白,动力学模型才是提升轨迹精度的真正底牌。
这一节,我带你从两个最经典的建模方法入手:牛顿-欧拉法和拉格朗日法。然后聊聊刚体动力学方程长什么样,最后把惯性参数(质量、质心、惯量张量)彻底讲透。
3.1 两种建模思路:牛顿-欧拉 vs 拉格朗日
建模方法说白了就两派。一派是“受力分析派”,另一派是“能量派”。
3.1.1 牛顿-欧拉法:力与力矩的硬碰硬
这个方法最直观。你想想看,每个连杆受到哪些力?重力、关节驱动力、相邻连杆的约束力。然后对每个连杆列牛顿方程和欧拉方程:
牛顿方程:F = m * a_c
欧拉方程:τ = I * α + ω × (I * ω)
我个人习惯用牛顿-欧拉法做实时控制。为什么?因为它可以递推计算,从基座往末端推速度加速度,再从末端往基座推力与力矩。计算效率高,适合嵌入式实现。
3.1.2 拉格朗日法:从能量角度看问题
拉格朗日法走的是另一条路。它不关心内部约束力,只关心系统的动能和势能:
L = T - V
τ = d/dt(∂L/∂q̇) - ∂L/∂q
这里L是拉格朗日量,T是总动能,V是总势能。你只需要写出每个连杆的动能和势能,然后对广义坐标求偏导,就能得到动力学方程。
这个方法的好处是——你不需要处理约束力。对于自由度少的系统(比如二连杆、倒立摆),手算很方便。但自由度一多,符号推导就爆炸了。
- 牛顿-欧拉法:力/力矩平衡,递推计算,适合实时控制
- 拉格朗日法:能量守恒,闭式方程,适合分析与仿真
3.2 刚体动力学方程的标准形式
不管用哪种方法,最终得到的动力学方程都可以写成统一形式:
M(q) * q̈ + C(q, q̇) * q̇ + G(q) = τ
我来拆解一下:
- M(q):惯性矩阵,n×n对称正定矩阵。它描述了各关节加速度之间的耦合关系。
- C(q, q̇):科里奥利力和离心力矩阵。说白了就是“动起来之后产生的附加力”。
- G(q):重力项。只与关节位置有关。
- τ:关节驱动力矩/力。
嗯,这里要注意:M(q)一定是正定的,这是物理约束。如果辨识出来的M(q)不正定,那你的模型肯定有问题。
3.3 惯性参数:质量、质心、惯量张量
动力学方程里的M(q)、C(q, q̇)、G(q)都依赖于一组基础参数——惯性参数。每个连杆有10个惯性参数:
| 参数 | 符号 | 单位 | 说明 |
|---|---|---|---|
| 质量 | m | kg | 连杆的总质量 |
| 质心位置 | cx, cy, cz | m | 在连杆坐标系中的质心坐标 |
| 惯量张量 | Ixx, Iyy, Izz | kg·m² | 绕三个轴的转动惯量 |
| 惯性积 | Ixy, Ixz, Iyz | kg·m² | 描述质量分布的不对称性 |
惯量张量是一个3×3对称矩阵:
I = [ Ixx Ixy Ixz ]
[ Ixy Iyy Iyz ]
[ Ixz Iyz Izz ]
为什么需要这10个参数?因为刚体动力学方程是这些参数的线性函数。也就是说,你可以把方程写成:
τ = Y(q, q̇, q̈) * θ
其中Y是回归矩阵(只与运动状态有关),θ是惯性参数向量。这个线性形式是参数辨识的基础——用最小二乘法就能把θ辨识出来。
3.4 知识体系总览
下面这张图,我把本章的核心逻辑画出来了。你一看就明白:
从这张图你可以看到,不管用牛顿-欧拉还是拉格朗日,最终都归结到标准动力学方程。而方程里的系数,又由惯性参数决定。所以,参数辨识就是打通“模型→精度”的关键一步。
好了,动力学模型的基础框架就讲到这里。下一节我们会深入参数辨识的具体方法——怎么设计激励轨迹、怎么处理数据、怎么用最小二乘法把参数算出来。到时候我会拿出一个真实项目的案例,带你一步步走通整个流程。