第二章 动力学模型入门:牛顿-欧拉方程、拉格朗日动力学、关节空间与任务空间动力学

各位同学,欢迎来到力矩控制策略训练营的第二站。

说实话,动力学模型是很多工程师的拦路虎。我刚入行那会儿,也觉得这东西太抽象,不就是让机器人动起来吗?搞那么复杂干嘛。直到有一次,我在调试一个六轴协作臂的拖动示教功能时,机器人突然在奇异点附近剧烈抖动,差点把末端夹爪甩飞出去。嗯,从那以后,我老老实实把动力学补上了。

今天这一章,我们不讲虚的。直接上干货:牛顿-欧拉方程、拉格朗日动力学,以及关节空间和任务空间到底怎么用。

2.1 为什么需要动力学模型?

运动学只告诉你「关节转多少度,末端到哪」。动力学告诉你「关节需要多大扭矩,才能让末端以期望的加速度运动」。说白了,力矩控制的核心就是动力学逆问题:给定期望的运动轨迹,计算出每个关节该出多少力。

我个人习惯把动力学模型比作「机器人的身体感知」。没有它,你只能靠PID硬扛,遇到高速运动或重负载,系统很容易失稳。

核心要点: 动力学模型是力矩控制的基础。没有准确的模型,前馈补偿就是空谈,阻抗控制、力位混合控制都无从谈起。

2.2 牛顿-欧拉方程:最直观的动力学方法

牛顿-欧拉法,说白了就是「受力分析」。把机器人拆成一个个连杆,每个连杆都做一遍牛顿第二定律和欧拉方程。

牛顿方程(平动部分):

F = m * a

其中 F 是作用在连杆质心上的合力,m 是连杆质量,a 是质心加速度。

欧拉方程(转动部分):

τ = I * α + ω × (I * ω)

τ 是作用在连杆上的合力矩,I 是惯性张量,α 是角加速度,ω 是角速度。注意那个叉乘项,它代表陀螺效应——高速旋转时,这个项会变得非常大。

我在项目中遇到过一个问题:一个SCARA机器人在高速拾取时,末端总是有微小振动。排查了半天,发现是欧拉方程里的陀螺项被忽略了。加上之后,振动立刻消失。所以,千万别偷懒。

牛顿-欧拉递推算法:

实际工程中,我们不会手动去解每个连杆的方程。而是用递推算法:

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

这个算法计算量小,适合实时控制。我建议你在嵌入式控制器上优先用这个。

我的小技巧: 写牛顿-欧拉代码时,先把每个连杆的坐标系画清楚。坐标系一乱,后面的计算全错。我曾经因为一个旋转矩阵的方向搞反了,调试了整整两天。

2.3 拉格朗日动力学:从能量角度看问题

拉格朗日法跟牛顿-欧拉法完全不同。它不看力,看能量。

拉格朗日函数 L 定义为:

L = T - U

其中 T 是系统总动能,U 是系统总势能。

然后代入拉格朗日方程:

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

q 是广义坐标(关节角度),q̇ 是广义速度,τ 是广义力(关节扭矩)。

你想想看,这个方程的好处是什么?它自动消除了内部约束力。你只需要写出系统的动能和势能,然后求偏导就行。对于自由度较少的机器人(比如2-3轴),拉格朗日法非常简洁。

但缺点也很明显:随着自由度增加,表达式会爆炸式增长。我见过一个六轴机器人的拉格朗日方程,写满了三页A4纸。所以,实际工程中,自由度超过4个,我一般推荐用牛顿-欧拉法。

注意: 拉格朗日法推导出的动力学方程,通常写成标准形式:

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

M 是惯性矩阵,C 是科里奥利和离心力矩阵,G 是重力项。这个形式在控制中非常有用,因为你可以分别处理每一项。

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

搞清楚了动力学方程的形式,接下来要回答一个问题:我们在哪个空间里控制?

关节空间动力学:

直接以关节角度 q 为变量。方程就是上面那个标准形式。控制目标:让每个关节跟踪期望的角度轨迹。

  • 优点:模型简单,计算量小
  • 缺点:末端执行器的运动不直观,需要逆运动学转换

任务空间动力学:

以末端执行器的位姿 x 为变量。动力学方程变为:

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

Λ 是任务空间惯性矩阵,μ 是任务空间速度相关项,p 是重力项,F 是末端广义力。

我个人习惯在任务空间做阻抗控制。为什么呢?因为你可以直接设定末端的刚度、阻尼,让机器人像弹簧一样响应外力。这在人机协作场景下特别好用。

但任务空间动力学有个坑:当机器人接近奇异位形时,Λ 矩阵会变得病态,很小的末端力就会导致关节扭矩爆炸。我曾经在调试一个打磨机器人时,就因为这个原因烧坏过一个驱动器。所以,一定要加奇异点规避。

两者关系: 关节空间和任务空间可以通过雅可比矩阵 J 相互转换:

τ = J^T * F
ẋ = J * q̇

记住这个关系,它贯穿了整个机器人控制。

2.5 知识体系总览

下面这张图,是我自己总结的动力学模型知识框架。你可以把它当作本章的「地图」。

动力学模型知识体系 机器人动力学模型 牛顿-欧拉方程 拉格朗日动力学 关节/任务空间 正向递推 反向递推 动能 T 势能 U 关节空间 q 任务空间 x 实时力矩前馈补偿 阻抗/导纳控制 力位混合控制 核心:M(q)q̈ + C(q,q̇)q̇ + G(q) = τ 雅可比矩阵 J 连接关节空间与任务空间

2.6 实战建议

学完这一章,你可能会问:我到底该用哪种方法?

我的建议是:

  • 做实时控制(1kHz以上): 用牛顿-欧拉递推法,计算效率最高
  • 做仿真或离线规划: 用拉格朗日法,推导清晰,便于分析
  • 做人机协作或力控: 用任务空间动力学,控制更直观

避坑指南: 我曾经在项目里直接用了别人的动力学库,没仔细验证参数。结果机器人空载时表现完美,一抓取重物就开始抖。后来发现是惯性参数标定错了。所以,拿到机器人第一件事:做参数辨识。别偷懒。

好了,这一章就到这里。动力学模型是力矩控制的「内功心法」,练好了,后面的各种控制策略才能发挥威力。下一章我们开始讲具体的力矩控制算法,到时候会大量用到今天的内容。

可可精品资料库