3、动力学模型入门:牛顿-欧拉法与拉格朗日法、刚体动力学方程、惯性参数

好,咱们进入动力学模型这个硬核话题。说实话,很多做轨迹规划的朋友,一开始都觉得动力学是搞控制的人的事。但我在项目里吃过亏——纯运动学规划的轨迹,一到高速就抖得不行,电机还过载。后来才明白,动力学模型才是提升轨迹精度的真正底牌。

这一节,我带你从两个最经典的建模方法入手:牛顿-欧拉法和拉格朗日法。然后聊聊刚体动力学方程长什么样,最后把惯性参数(质量、质心、惯量张量)彻底讲透。

3.1 两种建模思路:牛顿-欧拉 vs 拉格朗日

建模方法说白了就两派。一派是“受力分析派”,另一派是“能量派”。

3.1.1 牛顿-欧拉法:力与力矩的硬碰硬

这个方法最直观。你想想看,每个连杆受到哪些力?重力、关节驱动力、相邻连杆的约束力。然后对每个连杆列牛顿方程和欧拉方程:

牛顿方程:F = m * a_c
欧拉方程:τ = I * α + ω × (I * ω)

我个人习惯用牛顿-欧拉法做实时控制。为什么?因为它可以递推计算,从基座往末端推速度加速度,再从末端往基座推力与力矩。计算效率高,适合嵌入式实现。

我的经验: 在六轴机器人上做力矩前馈控制时,牛顿-欧拉递推算法(RNEA)是我最常用的。一次正向递推+一次反向递推,复杂度只有O(n),n是关节数。比拉格朗日法快一个数量级。

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)不正定,那你的模型肯定有问题。

我曾经踩过的坑: 有一次做参数辨识,数据采集时激励轨迹没设计好,导致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是回归矩阵(只与运动状态有关),θ是惯性参数向量。这个线性形式是参数辨识的基础——用最小二乘法就能把θ辨识出来。

核心要点: 惯性参数是动力学模型的“灵魂”。模型辨识的本质,就是通过实验数据反推这10个参数。参数准了,模型就准了;模型准了,轨迹精度才能上去。

3.4 知识体系总览

下面这张图,我把本章的核心逻辑画出来了。你一看就明白:

动力学模型知识体系 牛顿-欧拉法 拉格朗日法 标准动力学方程:M(q)q̈ + C(q,q̇)q̇ + G(q) = τ 惯性参数:质量 m、质心 c、惯量张量 I (10个参数/连杆) 线性形式:τ = Y(q,q̇,q̈) · θ → 最小二乘参数辨识

从这张图你可以看到,不管用牛顿-欧拉还是拉格朗日,最终都归结到标准动力学方程。而方程里的系数,又由惯性参数决定。所以,参数辨识就是打通“模型→精度”的关键一步。

一个小建议: 刚开始学动力学时,别急着上复杂机器人。拿一个单摆或二连杆练手,手算拉格朗日方程,再用牛顿-欧拉验证结果。两种方法算出来应该完全一致。我当年就是这么入门的。

好了,动力学模型的基础框架就讲到这里。下一节我们会深入参数辨识的具体方法——怎么设计激励轨迹、怎么处理数据、怎么用最小二乘法把参数算出来。到时候我会拿出一个真实项目的案例,带你一步步走通整个流程。

可可精品资料库