2、关节动力学基础:牛顿-欧拉方程、拉格朗日方程、关节空间与任务空间动力学

聊到关节标定,绕不开的就是动力学。说白了,动力学就是研究「力怎么让关节动起来」的学问。我刚开始做机器人控制那会儿,总觉得动力学是理论派的东西,直到有一次在产线上调试六轴机器人,发现力矩输出总是抖得厉害——嗯,从那以后我才真正意识到,不懂动力学,力矩控制就是空中楼阁。

这一节,我带你过一遍关节动力学的核心内容。不搞花架子,全是实战用得上的东西。

2.1 牛顿-欧拉方程:最直观的力与运动

牛顿-欧拉方程,我个人习惯叫它「N-E法」。它把机器人拆成一个个连杆,每个连杆都当成刚体来处理。你想想看,一个连杆受到哪些力?重力、驱动力、相邻连杆的约束力,还有惯性力。

核心公式其实就两个:

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

前者管平动,后者管转动。我在项目中遇到过一个问题:用N-E法做前向动力学仿真时,如果忽略了科里奥利力项(就是那个ω × (I * ω)),仿真结果在高速运动时会完全跑偏。所以,千万别偷懒。

N-E法的优势在于计算效率高,适合实时控制。它采用递推形式,从基座递推到末端,再从末端递推回基座,两次递推就能算出所有关节力矩。

实际工程中,我一般这样用:

  • 正向递推:从基座到末端,计算每个连杆的速度、加速度
  • 反向递推:从末端到基座,计算每个关节的驱动力矩

这样做的好处是,你不需要解大型方程组,计算量是O(n)级别的。对于六轴机器人,一次完整的N-E递推大概只需要几十微秒。

我的小技巧:在嵌入式平台上实现N-E法时,尽量用定点数代替浮点数。我曾经在STM32F4上跑过,定点数版本比浮点数快了将近3倍,精度损失不到0.1%。

2.2 拉格朗日方程:从能量角度看问题

拉格朗日方程是另一种思路。它不看力,看能量。公式长这样:

L = T - V
τ = d/dt(∂L/∂q̇) - ∂L/∂q

其中L是拉格朗日量,T是动能,V是势能。q是关节位置,q̇是关节速度。

说实话,拉格朗日法在工程中不如N-E法常用,因为计算量大。但它有一个巨大的优势——物理意义清晰。你一眼就能看出哪些项是惯性力,哪些是离心力/科里奥利力,哪些是重力。

举个例子,一个二连杆机器人的拉格朗日动力学方程展开后是这样的:

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

M是惯性矩阵,C是离心力和科里奥利力项,G是重力项。我在做力矩前馈控制时,就喜欢用拉格朗日法推导出这些项,然后单独补偿重力——效果立竿见影。

注意:拉格朗日法推导出的动力学方程,在关节空间中是耦合的。也就是说,一个关节的运动会影响另一个关节的力矩。如果你做独立PD控制,这种耦合效应会导致精度下降。我曾经吃过这个亏,后来加了前馈补偿才解决。

2.3 关节空间与任务空间动力学

这两个概念,我建议你分清楚。

关节空间动力学,描述的是关节力矩与关节位置、速度、加速度之间的关系。公式是:

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

这个方程在关节空间里写,每个变量都是关节角度。做关节标定时,我们主要用这个模型。

任务空间动力学,描述的是末端执行器受到的力与末端位姿之间的关系。公式是:

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

其中Λ是任务空间的惯性矩阵,μ是科里奥利力,p是重力。F是末端受到的力/力矩。

两者之间通过雅可比矩阵J关联:

τ = Jᵀ·F
ẋ = J·q̇

我在做力控打磨项目时,就用了任务空间动力学。因为打磨时,你关心的是末端与工件之间的接触力,而不是关节力矩。但最终控制还是要映射回关节空间——毕竟电机装在关节上。

下面这张图,是我梳理的动力学知识体系,帮你理清思路:

关节动力学知识体系 牛顿-欧拉方程 拉格朗日方程 空间动力学 正向递推:速度/加速度 反向递推:力矩 O(n)计算复杂度 适合实时控制 动能T - 势能V 惯性矩阵M(q) 科里奥利力C(q,q̇) 物理意义清晰 关节空间:τ = Mq̈ + C + G 任务空间:F = Λẍ + μ + p 雅可比矩阵J关联 力控场景常用 关节标定 → 力矩控制精度提升 关键点:动力学参数辨识(质量、惯量、摩擦) 是关节标定的核心,直接影响力矩控制精度

2.4 动力学参数辨识:标定的核心

有了动力学模型,下一步就是确定模型里的参数。这些参数包括:

参数类别 具体参数 辨识方法 我的经验
惯性参数 质量m、质心位置r、惯量张量I 最小二乘法拟合 激励轨迹要设计好,否则辨识结果不可靠
摩擦参数 库仑摩擦fc、粘性摩擦fv 恒速运动测试 低速时摩擦非线性明显,建议分段建模
柔性参数 关节刚度K、阻尼B 频率响应测试 谐波减速器的柔性不可忽略

我在做六轴机器人标定时,发现一个常见问题:很多人只辨识惯性参数,忽略了摩擦和柔性。结果就是,低速运动时力矩控制误差很大。为什么会这样?因为低速时惯性力很小,摩擦占主导。你不辨识摩擦参数,低速力矩控制就是瞎蒙。

避坑指南:我曾经在辨识摩擦参数时,只用了正方向运动的数据。结果反方向运动时,力矩误差大了两倍。后来我才意识到,摩擦是有方向性的——正反转的库仑摩擦系数可能不一样。所以,一定要正反两个方向都测。

2.5 从理论到实践:我的工作流

说了这么多,我总结一下在实际项目中,我是怎么用这些动力学知识的:

  1. 建模阶段:用拉格朗日法推导动力学方程,明确M、C、G各项的形式
  2. 参数辨识阶段:设计激励轨迹,采集关节力矩、位置、速度数据,用最小二乘法辨识参数
  3. 验证阶段:用N-E法做前向仿真,对比仿真力矩和实测力矩
  4. 控制阶段:在关节空间做重力补偿+前馈控制,必要时切换到任务空间做力控

这套流程我用了好几年,在多个项目上都验证过。效果嘛——力矩控制精度从原来的±15%提升到了±3%以内。你想想看,这个提升对精密装配、力控打磨来说,意味着什么。

好了,动力学基础就聊到这儿。下一节我们深入关节标定的具体方法,到时候我会拿实际案例出来讲。

一句话总结:牛顿-欧拉法适合实时计算,拉格朗日法适合理论分析,关节空间动力学是标定的主战场,任务空间动力学是力控的利器。三者结合,才能把力矩控制做到位。
可可精品资料库