第二章 运动控制基础:坐标系与变换、运动学与动力学

各位同学,大家好。我是你们这门课的老张。今天咱们聊点真正的基础——坐标系、变换,还有运动学和动力学。你别看这些词儿听着挺唬人,其实说白了,就是搞清楚“机器人的胳膊在哪儿”、“它要怎么动”以及“动起来有多费劲”。

我刚开始做运动控制那会儿,就吃过坐标系的亏。有一次调试一个六轴机械臂,死活走不对点位,折腾了两天。最后发现,是我把工具坐标系的零点给设错了。嗯,从那以后,我再也不敢小看坐标系了。

2.1 世界坐标系与关节坐标系

先说说坐标系。你想想看,我们描述一个东西的位置,总得有个参考吧?在运动控制里,最常用的两个参考就是世界坐标系和关节坐标系。

  • 世界坐标系:也叫基坐标系。它是固定在机器人底座或者工作台上的一个绝对参考系。说白了,就是整个空间的“大地原点”。所有物体的位置,最终都要换算到这个坐标系里来。
  • 关节坐标系:这个就简单了。它描述的是每个关节自己的角度或者位置。比如,第一个关节转了30度,第二个关节伸出了100毫米。每个关节各管各的,互不干扰。

核心区别:世界坐标系关心的是“手在哪儿”,关节坐标系关心的是“电机转了多少”。

我在项目中遇到过一个问题:操作员想用手动模式把机械臂末端移动到某个点。他习惯性地在关节坐标系下推摇杆,结果发现末端走的轨迹完全不是直线,而是画了个弧线。为什么会这样?因为关节坐标系下,你改变一个关节的角度,其他关节不动,末端自然就走弧线了。所以,做直线运动,一定要在世界坐标系下编程。

2.2 坐标变换:从关节到世界

那么问题来了:我们怎么把关节的角度,换算成世界坐标系下的位置?这就涉及到坐标变换了。核心就是矩阵乘法,尤其是齐次变换矩阵。

一个齐次变换矩阵 T,它长这样:

T = [ R   t ]
    [ 0   1 ]

其中 R 是 3x3 的旋转矩阵,t 是 3x1 的平移向量。这个矩阵能把一个点从一个坐标系,映射到另一个坐标系。

举个例子,假设有两个坐标系 {A} 和 {B}。如果我知道 {B} 相对于 {A} 的变换矩阵 T_AB,那么 {B} 里的一个点 P_B,换算到 {A} 里就是:

P_A = T_AB * P_B

就这么简单。但实际工程中,我们往往要串联多个变换。比如,从基座到第一个关节,再到第二个关节……一直到末端。这就是所谓的“运动学链”。

我的小技巧:写代码的时候,我习惯把每个关节的变换矩阵单独算出来,然后一个一个乘。千万别图省事写成一个长公式,调试起来你会哭的。

2.3 运动学:正解与逆解

运动学分两种:正运动学和逆运动学。

  • 正运动学:已知每个关节的角度,求末端的位置和姿态。这个简单,就是上面说的矩阵连乘,结果唯一。
  • 逆运动学:已知末端的位置和姿态,反求每个关节的角度。这个就麻烦了,因为解不唯一,甚至可能无解。

我记得有一次,一个学生问我:“张老师,为什么我算出来的逆解,机械臂总是撞到旁边的工件?”我一看,他用的是一组解析解,但那组解对应的关节角度,刚好让机械臂穿过了一个障碍物。所以,逆运动学不仅要算得出来,还要选一个“安全”的解。

避坑指南:我曾经在项目里直接用数值法(比如牛顿迭代法)求逆解,结果因为初始值选得不好,迭代发散,差点把电机烧了。后来我学乖了,先用解析法算一个近似解,再用数值法精调。这样既快又稳。

2.4 动力学:力与运动的关系

运动学只关心“动没动”,不关心“怎么动的”。动力学就不一样了,它研究的是力和运动之间的关系。说白了,就是“我要用多大的力,才能让机械臂按我想要的加速度运动”。

动力学方程一般写成:

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

其中:

  • τ 是关节力矩(你要输出的力)
  • M(q) 是惯性矩阵(跟质量分布有关)
  • C(q, q̇) 是科里奥利力和离心力项
  • G(q) 是重力项

你想想看,如果忽略重力项 G(q),在垂直方向上,你算出来的力矩就会偏小,机械臂就会往下掉。我刚开始做高速拾取机器人时,就犯过这个错。结果机械臂在高速运动时,末端抖动得厉害,根本没法用。后来加上重力补偿和科里奥利力补偿,才稳下来。

工程经验:对于低速、轻载的场合,可以只做重力补偿,忽略科里奥利力。但对于高速、重载的场合,三个项一个都不能少。否则,轻则精度不够,重则结构损坏。

2.5 知识体系总览

为了让大家更直观地理解本章的知识结构,我画了一张图。你看,从坐标系出发,经过变换,进入运动学,再到动力学,这是一条完整的链路。

运动控制基础:知识体系 坐标系 坐标变换 运动学 动力学 世界坐标系 关节坐标系 齐次变换矩阵 旋转 + 平移 正运动学 逆运动学 惯性力 / 科里奥利力 / 重力

你看,从坐标系到变换,再到运动学和动力学,这是一条完整的知识链。每一个环节都环环相扣,缺一不可。

学习建议:我建议你先把坐标系和变换搞透,再学运动学。动力学可以放在最后,因为它需要微积分和物理基础。别急着一步到位,慢慢来,比较快。

好了,这一章的内容就到这里。坐标系、变换、运动学、动力学,这四个概念是后续所有控制算法的基础。你想想看,如果连“手在哪儿”都说不清楚,还谈什么控制呢?


专注资料整理