2、关节动力学基础:牛顿-欧拉方程、拉格朗日方程、关节空间与任务空间动力学
聊到关节标定,绕不开的就是动力学。说白了,动力学就是研究「力怎么让关节动起来」的学问。我刚开始做机器人控制那会儿,总觉得动力学是理论派的东西,直到有一次在产线上调试六轴机器人,发现力矩输出总是抖得厉害——嗯,从那以后我才真正意识到,不懂动力学,力矩控制就是空中楼阁。
这一节,我带你过一遍关节动力学的核心内容。不搞花架子,全是实战用得上的东西。
2.1 牛顿-欧拉方程:最直观的力与运动
牛顿-欧拉方程,我个人习惯叫它「N-E法」。它把机器人拆成一个个连杆,每个连杆都当成刚体来处理。你想想看,一个连杆受到哪些力?重力、驱动力、相邻连杆的约束力,还有惯性力。
核心公式其实就两个:
牛顿方程:F = m * a
欧拉方程:τ = I * α + ω × (I * ω)
前者管平动,后者管转动。我在项目中遇到过一个问题:用N-E法做前向动力学仿真时,如果忽略了科里奥利力项(就是那个ω × (I * ω)),仿真结果在高速运动时会完全跑偏。所以,千万别偷懒。
实际工程中,我一般这样用:
- 正向递推:从基座到末端,计算每个连杆的速度、加速度
- 反向递推:从末端到基座,计算每个关节的驱动力矩
这样做的好处是,你不需要解大型方程组,计算量是O(n)级别的。对于六轴机器人,一次完整的N-E递推大概只需要几十微秒。
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是重力项。我在做力矩前馈控制时,就喜欢用拉格朗日法推导出这些项,然后单独补偿重力——效果立竿见影。
2.3 关节空间与任务空间动力学
这两个概念,我建议你分清楚。
关节空间动力学,描述的是关节力矩与关节位置、速度、加速度之间的关系。公式是:
τ = M(q)·q̈ + C(q, q̇)·q̇ + G(q) + τ_friction
这个方程在关节空间里写,每个变量都是关节角度。做关节标定时,我们主要用这个模型。
任务空间动力学,描述的是末端执行器受到的力与末端位姿之间的关系。公式是:
F = Λ(x)·ẍ + μ(x, ẋ) + p(x)
其中Λ是任务空间的惯性矩阵,μ是科里奥利力,p是重力。F是末端受到的力/力矩。
两者之间通过雅可比矩阵J关联:
τ = Jᵀ·F
ẋ = J·q̇
我在做力控打磨项目时,就用了任务空间动力学。因为打磨时,你关心的是末端与工件之间的接触力,而不是关节力矩。但最终控制还是要映射回关节空间——毕竟电机装在关节上。
下面这张图,是我梳理的动力学知识体系,帮你理清思路:
2.4 动力学参数辨识:标定的核心
有了动力学模型,下一步就是确定模型里的参数。这些参数包括:
| 参数类别 | 具体参数 | 辨识方法 | 我的经验 |
|---|---|---|---|
| 惯性参数 | 质量m、质心位置r、惯量张量I | 最小二乘法拟合 | 激励轨迹要设计好,否则辨识结果不可靠 |
| 摩擦参数 | 库仑摩擦fc、粘性摩擦fv | 恒速运动测试 | 低速时摩擦非线性明显,建议分段建模 |
| 柔性参数 | 关节刚度K、阻尼B | 频率响应测试 | 谐波减速器的柔性不可忽略 |
我在做六轴机器人标定时,发现一个常见问题:很多人只辨识惯性参数,忽略了摩擦和柔性。结果就是,低速运动时力矩控制误差很大。为什么会这样?因为低速时惯性力很小,摩擦占主导。你不辨识摩擦参数,低速力矩控制就是瞎蒙。
2.5 从理论到实践:我的工作流
说了这么多,我总结一下在实际项目中,我是怎么用这些动力学知识的:
- 建模阶段:用拉格朗日法推导动力学方程,明确M、C、G各项的形式
- 参数辨识阶段:设计激励轨迹,采集关节力矩、位置、速度数据,用最小二乘法辨识参数
- 验证阶段:用N-E法做前向仿真,对比仿真力矩和实测力矩
- 控制阶段:在关节空间做重力补偿+前馈控制,必要时切换到任务空间做力控
这套流程我用了好几年,在多个项目上都验证过。效果嘛——力矩控制精度从原来的±15%提升到了±3%以内。你想想看,这个提升对精密装配、力控打磨来说,意味着什么。
好了,动力学基础就聊到这儿。下一节我们深入关节标定的具体方法,到时候我会拿实际案例出来讲。