2、坐标系与运动学基础:笛卡尔坐标系、关节坐标系、工具坐标系;刚体运动描述(平移、旋转、齐次变换矩阵)

各位同学,咱们今天聊点实在的。坐标系和运动学,说白了就是给机器人一个「身份定位」。你想想看,一个机械臂在空间里乱动,总得有个参照系吧?我刚开始做多轴联动时,就吃过这个亏——坐标系没统一,结果末端执行器跑偏了半厘米,差点把工件干废。嗯,从那以后,我对坐标系的理解就深刻多了。

2.1 三种核心坐标系:你总得知道「我在哪」

做运动控制,绕不开三种坐标系。我个人习惯把它们比作「世界观」、「身体观」和「工具观」。

  • 笛卡尔坐标系(世界坐标系):这是最直观的。X、Y、Z三个轴,右手定则。我习惯把机器人底座中心设为原点。所有轨迹规划,最终都要映射到这个坐标系里。
  • 关节坐标系:每个关节自己的角度。比如六轴机器人,就是 J1、J2...J6。你在示教器上看到的「关节空间」,就是它。这里有个坑——关节坐标下做直线运动?不行,因为那是笛卡尔空间的插补。
  • 工具坐标系(TCP):这是最灵活的。焊枪尖、夹爪中心,都可以定义成工具坐标系的原点。我曾经在调试一个打磨项目时,工具坐标系偏了0.1度,结果打磨轨迹全歪了。后来我学乖了,每次换工具必做 TCP 标定。

核心要点:笛卡尔坐标是「目标位置」,关节坐标是「电机角度」,工具坐标是「末端姿态」。三者缺一不可。

2.2 刚体运动描述:平移与旋转

刚体运动,说白了就是「挪个地方」和「转个方向」。我见过不少新手,只关心位置,不关心姿态。结果机器人到位了,姿态不对,工件装不上。

2.2.1 平移变换

这个简单。一个向量 [dx, dy, dz] 就搞定了。比如从点 A 移动到点 B,就是坐标相加。但要注意——平移是在同一个坐标系下做的。跨坐标系平移?你得先做旋转。

2.2.2 旋转变换

旋转就有点意思了。绕 X 轴转、绕 Y 轴转、绕 Z 轴转,各有各的旋转矩阵。我给大家一个记忆口诀:「绕谁转,谁不变」。比如绕 Z 轴转 θ 角,Z 坐标不变,X 和 Y 按三角函数变化。

// 绕 Z 轴旋转 θ 角的旋转矩阵
Rz(θ) = | cosθ  -sinθ  0 |
        | sinθ   cosθ  0 |
        | 0      0     1 |

我的小技巧:实际项目中,我很少手动算旋转矩阵。都是用四元数或者欧拉角。但理解矩阵是基础,不然你连逆解都看不懂。

2.3 齐次变换矩阵:把平移和旋转打包

为什么要用齐次变换矩阵?说白了,就是为了「统一运算」。你想想看,平移是加法,旋转是乘法,混在一起多麻烦。齐次变换矩阵把 3x3 的旋转矩阵和 3x1 的平移向量,塞进一个 4x4 的矩阵里。这样,一次矩阵乘法,就完成了旋转+平移。

// 齐次变换矩阵 T
T = | R   t |
    | 0   1 |

// 其中 R 是 3x3 旋转矩阵,t 是 3x1 平移向量

举个例子:一个点 P 在坐标系 A 中,想变换到坐标系 B 中。只需要:

P_b = T_ab * P_a

一次乘法,搞定。我在做多轴联动插补时,每个周期都要做几十次这样的变换。效率很重要。

注意:齐次变换矩阵的乘法顺序不能乱!先旋转后平移,和先平移后旋转,结果完全不同。我见过有人把顺序搞反,结果机器人撞了限位。嗯,血的教训。

2.4 知识体系结构图

下面这张图,是我自己总结的坐标系与运动学核心逻辑。你看一眼,就能明白整个章节在讲什么。

坐标系与运动学基础 - 知识体系 笛卡尔坐标系 世界坐标 / 基坐标 关节坐标系 J1~J6 角度值 工具坐标系 TCP / 末端姿态 刚体运动描述 平移变换 [dx, dy, dz] 旋转变换 R(θ) 齐次变换矩阵 T

2.5 实战中的坐标系转换

讲个真实案例。有一次我做六轴机器人弧焊,工件是倾斜放置的。如果只用基坐标编程,轨迹计算量巨大。我的做法是:在工件上建立一个用户坐标系。这样,所有焊接轨迹都在工件坐标系下描述,简单多了。

具体步骤:

  1. 在工件上选三个点,定义用户坐标系的原点、X轴方向、Y轴方向
  2. 计算从基坐标到用户坐标的齐次变换矩阵 T_base_to_user
  3. 所有轨迹点,先在用户坐标下规划,再通过 T_base_to_user 变换到基坐标
  4. 最后通过逆运动学,解算出关节角度

一句话总结:坐标系转换,就是「在不同参考系之间来回切换」。齐次变换矩阵,就是你的「翻译官」。

好了,这一章的内容就这些。坐标系是运动控制的基石,你把它搞透了,后面的轨迹规划、插补算法,学起来就轻松多了。


专注资料整理