3. 机械臂动力学基础

运动学只回答“机械臂在哪里”,动力学才回答“要施加多大力矩才能让它按预期运动”。在联合仿真中,控制器输出的力矩进入物理模型,物理模型再返回关节加速度、速度与位置,因此动力学模型的正确性直接决定仿真结果是否可信。本节围绕两条主线展开:一是用拉格朗日方程从能量角度建立关节空间动力学模型,二是用牛顿-欧拉法从力与力矩递推角度高效计算同一模型,并重点解释惯性矩阵、科氏力与重力项各自的物理含义。

一、关节空间动力学方程的统一形式

对 n 自由度刚性机械臂,关节空间动力学方程可写成如下标准形式:

M(q)·q̈ + C(q, q̇)·q̇ + G(q) + τ_f(q̇) = τ

其中 q、q̇、q̈ 分别为关节位置、速度与加速度向量;M(q) 为 n×n 惯性矩阵;C(q,q̇)·q̇ 为科氏力与离心力项;G(q) 为重力项;τ_f 为摩擦项;τ 为关节驱动力矩。理解每一项的来源,比记住公式更重要:M(q) 描述“当前位形下各关节的等效惯量”,C 项描述“速度耦合带来的附加力矩”,G(q) 描述“为抵抗重力必须持续输出的力矩”。

二、拉格朗日方程:从能量到力矩

拉格朗日方法的核心是构造拉格朗日函数 L = K − P,其中 K 为系统总动能,P 为总势能,然后代入:

d/dt(∂L/∂q̇_i) − ∂L/∂q_i = τ_i

以两连杆平面机械臂为例,设连杆质量 m₁、m₂,长度 l₁、l₂,质心距关节 d₁、d₂,转动惯量 I₁、I₂,重力加速度 g 沿 −y 方向。其惯性矩阵可写为:

M11 = I1 + I2 + m1·d1² + m2·(l1² + d2² + 2·l1·d2·cos q2)
M12 = M21 = I2 + m2·(d2² + l1·d2·cos q2)
M22 = I2 + m2·d2²

可以看到 M11 随 q₂ 变化,说明“关节 1 感受到的惯量”取决于关节 2 的位形。这正是机械臂动力学强耦合的体现,也是仿真中不能把各关节当作独立单轴系统处理的原因。

三、牛顿-欧拉法:递推计算的高效路径

拉格朗日方程便于推导与理解,但符号展开随自由度增加迅速膨胀。牛顿-欧拉法采用“向外递推速度与加速度、向内递推力与力矩”的两遍算法,计算复杂度为 O(n),更适合实时控制与仿真。其流程为:

  1. 向外递推:从基座到末端,依次计算各连杆的角速度、角加速度、质心线加速度。
  2. 向内递推:从末端到基座,依次计算各连杆所受合力与合力矩,并投影到关节轴得到 τ_i。

在仿真实现中,通常用牛顿-欧拉法计算给定 (q, q̇, q̈) 下的 τ,再用它反推 M(q)、C(q,q̇) 与 G(q),例如令 q̇=0、q̈=0 得到 G(q),令 q̇=0、q̈=e_i 得到 M 的第 i 列。

机械臂动力学:拉格朗日法与牛顿-欧拉法对照 拉格朗日方程(能量法) 动能 K(q, q̇) + 势能 P(q) L = K − P d/dt(∂L/∂q̇) − ∂L/∂q = τ 符号推导,物理意义清晰 输出:M(q)、C(q,q̇)、G(q) M11 随 q₂ 变化 → 强耦合 适合建模、分析与教学 复杂度随自由度快速膨胀 实时计算负担较大 适合离线推导与验证 牛顿-欧拉法(递推法) 输入:q, q̇, q̈ 基座 → 末端 向外递推 计算各连杆 ω、α、a_c 速度与加速度传播 末端 → 基座 向内递推 合力 F、合力矩 N 投影到关节轴 输出 τ = M·q̈ + C·q̇ + G 复杂度 O(n),适合实时 可反推 M、C、G 各项 仿真与控制首选实现 等价

四、惯性矩阵、科氏力与重力项的物理含义

惯性矩阵 M(q):对角元 M_ii 表示关节 i 自身的等效惯量,非对角元 M_ij 表示关节 j 加速时对关节 i 产生的耦合力矩。M(q) 是对称正定矩阵,且随位形变化。在仿真中若忽略 M(q) 的位形依赖,机械臂在伸展与折叠状态下的响应会明显失真。

科氏力与离心力项 C(q,q̇)·q̇:当多个关节同时运动时,速度乘积项会产生附加力矩。例如 q̇₁·q̇₂ 项使关节 1 在关节 2 快速摆动时受到额外负载。低速仿真时该项较小,但高速轨迹跟踪中不可忽略,否则会出现明显的轨迹偏差。

重力项 G(q):G(q) = ∂P/∂q,表示在当前位形下为保持静止所需施加的关节力矩。对水平伸展的机械臂,肩关节重力矩最大;对竖直下垂位形,重力矩可能接近零。重力补偿是位置控制与力控制的基础环节。

五、联合仿真中的实现要点

在 Simulink/Simscape 或 Gazebo 等环境中,动力学通常由物理引擎自动计算,但理解上述各项有助于排查异常。例如:仿真中机械臂静止时关节持续输出较大力矩,说明重力项 G(q) 在起作用;高速运动时力矩出现剧烈波动,往往是科氏力项被激发;若把 M(q) 简化为常数矩阵,则轨迹跟踪在伸展位形下会出现系统性滞后。

建议在仿真中做一次“项分离”验证:令 q̇=0、q̈=0,记录 τ 即为 G(q);令 q̇=0,逐次给单个关节单位加速度,得到 M(q) 的列;再令 q̈=0,给定不同 q̇,观察 τ 中与速度平方相关的部分,即为 C(q,q̇)·q̇。这一组测试能快速确认动力学模型是否按预期工作。

掌握本节内容后,后续的关节空间控制、计算力矩控制以及动力学参数辨识,都将以 M(q)、C(q,q̇)、G(q) 这三项为核心展开。