二、空间描述与变换:位置与姿态的描述、旋转矩阵、齐次变换矩阵、平移与旋转的复合变换

各位同学,欢迎来到第二章。上一章我们聊了机器人学的基本概念,这一章我们要啃一块硬骨头——空间描述与变换。

说白了,就是回答一个问题:机械臂的每个关节、每个连杆,到底在哪儿?朝哪个方向?

我个人习惯把这一章叫做“机器人学的语言基础”。你想想看,如果连描述位置和姿态的语言都没掌握,后面谈运动学求解、轨迹规划,那都是空中楼阁。我在做第一个六轴机械臂项目时,就因为姿态描述搞混了,导致仿真里看着好好的,一上真机就撞了限位……嗯,从那以后我再也不敢轻视这部分内容了。

核心要点:空间描述是机器人学的基石。位置用坐标,姿态用旋转矩阵,合起来就是齐次变换矩阵。这三者构成了我们描述机械臂运动的完整语言。

2.1 位置与姿态的描述

先问个问题:你怎么告诉别人你手里拿着的螺丝刀在哪儿?

你可能会说:“在我手里,距离胸口30厘米,朝右偏15度。” 这其实就是位置和姿态的描述。

位置描述相对简单。我们用一个3×1的列向量来表示:

P = [x, y, z]^T

这里的x、y、z就是相对于某个参考坐标系的位置坐标。我在项目中习惯用毫米作为单位,因为大多数工业机械臂的精度都在毫米级。

姿态描述就有点意思了。它描述的是物体“朝哪个方向”。比如螺丝刀的尖端是朝上还是朝下?是水平还是倾斜?

我们用一个3×3的旋转矩阵来表示:

R = [r11 r12 r13;
     r21 r22 r23;
     r31 r32 r33]

这个矩阵的每一列,其实代表的是物体坐标系各轴在参考坐标系中的方向向量。听起来有点绕?我换个说法:

  • 第一列:物体x轴在参考系中的方向
  • 第二列:物体y轴在参考系中的方向
  • 第三列:物体z轴在参考系中的方向

我的小技巧:刚开始学的时候,可以把旋转矩阵想象成一个“方向说明书”。它告诉你:物体的每个轴,在参考系里是怎么“摆放”的。

2.2 旋转矩阵

旋转矩阵是姿态描述的核心工具。它有几个重要性质,我建议你记牢:

性质 说明 实际意义
正交性 R^T = R^{-1} 转置等于逆,计算方便
行列式为1 det(R) = 1 保证是纯旋转,没有缩放
单位向量 每列模长为1 方向向量是单位向量

绕三个坐标轴的基本旋转矩阵,是必须背下来的:

// 绕x轴旋转θ角
Rx(θ) = [1    0       0;
         0  cosθ  -sinθ;
         0  sinθ   cosθ]

// 绕y轴旋转θ角
Ry(θ) = [cosθ  0  sinθ;
         0     1    0;
        -sinθ  0  cosθ]

// 绕z轴旋转θ角
Rz(θ) = [cosθ -sinθ  0;
         sinθ  cosθ  0;
         0     0     1]

我曾经犯过一个低级错误:把绕y轴的旋转矩阵符号搞反了。结果仿真里机械臂的末端姿态怎么都对不上。排查了整整一个下午,才发现是sinθ的符号问题。所以,绕y轴的旋转矩阵和其他两个轴不一样,sinθ的位置和符号要特别注意。

2.3 齐次变换矩阵

位置用向量,姿态用矩阵,能不能合在一起?当然可以。这就是齐次变换矩阵:

T = [R   P;
     0   1]

其中R是3×3旋转矩阵,P是3×1位置向量。最后一行是[0 0 0 1]。

为什么叫“齐次”?说白了,就是把旋转和平移统一到一个4×4的矩阵里。这样,连续变换就可以用矩阵乘法来完成了。

重要理解:齐次变换矩阵T描述了从一个坐标系到另一个坐标系的完整变换。它既告诉你“怎么转”,也告诉你“怎么移”。

2.4 平移与旋转的复合变换

实际应用中,很少只有纯旋转或纯平移。大多数情况是:先旋转,再平移;或者先平移,再旋转。

复合变换的顺序很重要。我强调一下:矩阵乘法不满足交换律。先旋转后平移,和先平移后旋转,结果完全不同。

举个例子:

// 先旋转再平移
T = Trans(P) * Rot(θ)

// 先平移再旋转
T = Rot(θ) * Trans(P)

这两种顺序,得到的是不同的末端位姿。我在调试一个焊接机器人时,就遇到过这个问题。程序里写的是先平移后旋转,但实际工艺要求是先旋转后平移。结果焊枪的轨迹完全偏了,焊缝质量不合格。后来检查代码才发现是变换顺序搞反了。

避坑指南:我曾经因为变换顺序搞反,导致一台价值50万的机器人差点撞坏夹具。记住:左乘是相对于固定坐标系,右乘是相对于当前坐标系。这个规则一定要刻在脑子里。

下面这张图展示了整个空间描述与变换的知识体系:

空间描述与变换知识体系 位置描述 3×1位置向量 姿态描述 3×3旋转矩阵 齐次变换矩阵 4×4变换矩阵 关键点 • 相对于参考坐标系 • 用列向量表示 • 单位:毫米/米 关键点 • 正交矩阵 • 行列式为1 • 绕轴旋转公式 关键点 • 旋转+平移统一 • 4×4矩阵 • 连续变换用乘法 复合变换:平移 + 旋转 注意:矩阵乘法顺序不可交换 应用:机械臂运动学建模、正逆解计算、轨迹规划

总结一下这一章的核心:

  • 位置用3×1向量,姿态用3×3旋转矩阵
  • 齐次变换矩阵把两者统一成4×4矩阵
  • 复合变换要注意顺序,左乘右乘要分清

这些概念看起来抽象,但一旦你开始写机械臂的运动学代码,就会发现它们无处不在。下一章我们会用这些工具来建立机械臂的连杆坐标系,那才是真正开始“玩”运动学了。