3. 动力学基础

动力学,说白了就是研究「力与运动的关系」。在机器人抓取里,你光知道怎么走轨迹还不够,还得知道电机该出多大力、关节会不会抖、末端会不会把工件捏碎。这一章,我把三种最常用的动力学建模方法掰开揉碎讲清楚。

核心观点: 牛顿-欧拉法适合实时控制,拉格朗日法适合理论分析,操作空间动力学才是抓取场景的最终归宿。

3.1 牛顿-欧拉方程:从力到加速度的直通车

我个人习惯把牛顿-欧拉法叫做「暴力递推法」。为什么?因为它就是对着每个连杆,硬生生写出牛顿方程和欧拉方程,然后从基座一路推到末端,再从末端反推回关节力矩。

先看牛顿方程:

F = m * a_c    (质心平动)
τ = I * α + ω × (I * ω)    (刚体转动)

嗯,这里要注意——欧拉方程里的那个叉乘项 ω × (I * ω),很多新手会漏掉。我在项目里遇到过,仿真跑得好好的,一上真机就抖成筛子,查了两天才发现是陀螺力矩没加。

递推分两步:

  1. 正向递推: 从基座到末端,算每个连杆的角速度、角加速度、线加速度
  2. 反向递推: 从末端到基座,算每个关节的力和力矩

举个例子,六轴工业机器人抓取一个 5kg 的工件,末端速度 1m/s,加速度 2m/s²。用牛顿-欧拉法,你只需要知道每个连杆的质量、惯量、质心位置,就能算出每个关节的驱动力矩。计算量小,实时性好,控制周期能做到 1ms 以内。

我的经验: 如果你做的是高速抓取(比如每分钟 60 次以上的 pick-and-place),优先用牛顿-欧拉法。它的递推结构天然适合嵌入式实现,我曾在 STM32H7 上跑过,单次计算不到 50μs。

3.2 拉格朗日法:从能量角度看问题

拉格朗日法走的是另一条路——不直接跟力较劲,而是盯着系统的动能和势能。

L = T - V    (拉格朗日函数)
τ = d/dt(∂L/∂q̇) - ∂L/∂q    (拉格朗日方程)

你想想看,对于一个六轴机器人,你要写出所有连杆的动能和势能,然后对每个关节求偏导。听起来很麻烦,但好处是——你不需要处理约束力。所有内力自动消掉了。

我曾经用拉格朗日法推导过一个七自由度冗余机械臂的动力学模型。说实话,推导过程写了整整三页纸,但最后得到的方程形式非常漂亮,能直接看出科里奥利力和离心力的结构。

对比项 牛顿-欧拉法 拉格朗日法
计算效率 高(O(n)) 低(O(n⁴))
物理直观性 强(力/力矩直接可见) 弱(能量抽象)
约束处理 需要显式处理 自动消去
适用场景 实时控制、仿真 理论分析、控制器设计
避坑指南: 我曾经用拉格朗日法直接做实时控制,结果计算时间超过 10ms,控制周期根本跑不满。后来才明白,拉格朗日法更适合离线分析,在线控制还是得用牛顿-欧拉。

3.3 关节空间与操作空间动力学

这两个概念,我刚开始学的时候也绕了很久。说白了:

  • 关节空间动力学: 用关节角度、角速度、角加速度来描述系统
  • 操作空间动力学: 用末端位姿、速度、加速度来描述系统

关节空间的动力学方程长这样:

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

其中 M 是惯性矩阵,C 是科里奥利/离心力矩阵,G 是重力项。

操作空间呢?把上面的方程映射到末端:

Λ(x) * ẍ + μ(x, ẋ) + p(x) = F

Λ 是操作空间惯性矩阵,F 是末端力。

为什么抓取场景要用操作空间动力学?因为你的控制目标在末端——你要让夹爪以特定力接触工件,而不是让某个关节转到特定角度。

关键公式: 关节空间到操作空间的映射靠雅可比矩阵 J:
ẋ = J * q̇
ẍ = J̇ * q̇ + J * q̈
F = J⁻ᵀ * τ

我记得有一次做精密装配,要求末端力控制在 ±0.1N。如果只用关节空间控制,末端力误差会被运动学误差放大好几倍。换成操作空间阻抗控制后,力控精度直接提升了一个数量级。

3.4 三种方法的选型指南

说了这么多,到底该用哪个?我总结了一个简单的决策树:

动力学方法选型决策树 动力学建模需求 实时控制 理论分析 牛顿-欧拉法 拉格朗日法 关节空间控制 操作空间控制 直接力矩控制 阻抗/力位混合控制 抓取场景推荐:操作空间 + 牛顿-欧拉
我的建议: 如果你刚开始做抓取控制,先拿拉格朗日法推导一遍完整模型,理解动力学结构。然后换成牛顿-欧拉法做实际控制。最后,一定要把控制器写在操作空间里——这是抓取成功的关键。