空间几何基础:坐标系与变换、齐次变换矩阵、旋转矩阵与欧拉角

各位同学,欢迎来到第二章。说实话,这一章是整个六轴机械臂算法的基石。你想想看,机械臂要抓东西,首先得知道自己的手在哪儿,目标在哪儿,对吧?这背后全是坐标系和变换的事儿。我当年刚入行时,觉得这玩意儿太理论,结果第一次调机器人就栽了跟头——坐标系搞反了,手臂直接往桌面上砸。嗯,从那以后,我再也不敢小看这些基础了。

2.1 坐标系:给机器人一个“世界观”

我们先聊聊坐标系。说白了,坐标系就是给空间定个“原点”和“方向”。机械臂的世界里,最常见的就两种:

  • 世界坐标系:固定在机器人底座或工作台上的全局坐标系。所有东西的位置,最终都要换算到这个坐标系下。
  • 工具坐标系:固定在机械臂末端(比如夹爪或焊枪)上的坐标系。它跟着手臂动,用来描述“手”在干什么。

我个人习惯,在调试时一定先把世界坐标系标定好。有一次我在现场,发现机器人抓取总是偏2毫米,查了半天,原来是世界坐标系的原点被谁碰歪了。所以,坐标系就是机器人的“世界观”,世界观错了,动作全错。

2.2 旋转矩阵:描述“姿态”的数学工具

位置好说,三个坐标(x,y,z)就搞定。但姿态呢?机械臂不光要移动到某点,还得让末端以特定角度去抓取。这时候,旋转矩阵就登场了。

旋转矩阵是一个3x3的矩阵,它的每一列代表旋转后的新坐标轴在原坐标系中的投影。比如绕Z轴旋转θ角:

R_z(θ) = | cosθ  -sinθ  0 |
         | sinθ   cosθ  0 |
         | 0      0     1 |

我记得第一次手算这个矩阵时,总觉得符号容易搞混。后来我总结了一个小技巧:右手定则——大拇指指向旋转轴正方向,四指弯曲方向就是正角度方向。你试试看,绕Z轴转,大拇指朝上,正角度就是逆时针。

我的避坑指南: 我曾经在项目中直接用欧拉角做插值,结果机械臂在运动过程中出现了“万向锁”——姿态突然卡死,差点撞坏工件。后来我改用四元数做插值,问题就解决了。所以,旋转矩阵适合做静态描述,但做动态插值时,要小心万向锁。

2.3 欧拉角:更直观的“姿态语言”

旋转矩阵虽然严谨,但不够直观。你想想看,你跟现场工人说“旋转矩阵是[[0.707, -0.707, 0], [0.707, 0.707, 0], [0, 0, 1]]”,他肯定一脸懵。但你说“绕Z轴转45度”,他就懂了。这就是欧拉角的价值。

欧拉角用三个角度(通常叫滚转、俯仰、偏航)来描述姿态。常见的顺序有ZYX、ZYZ等。不同的顺序,结果完全不同。我建议你记住:顺序决定了最终姿态

欧拉角顺序 典型应用 特点
ZYX(偏航-俯仰-滚转) 无人机、移动机器人 直观,符合人体直觉
ZYZ 工业六轴机械臂 避免万向锁,计算方便

为什么工业机械臂常用ZYZ?因为它的奇异点通常出现在机械臂工作空间的边缘,而ZYX的奇异点可能在中间区域。我调过一台六轴机器人,用ZYX顺序时,在某个中间姿态突然失控,换成ZYZ就没事了。这就是经验。

2.4 齐次变换矩阵:位置+姿态的“全家桶”

好了,现在我们有位置(平移向量)和姿态(旋转矩阵),怎么把它们合在一起?答案就是齐次变换矩阵。它是一个4x4的矩阵:

T = | R   t |
    | 0   1 |

其中R是3x3旋转矩阵,t是3x1平移向量。最后一行是[0 0 0 1]。为什么加这一行?说白了,就是为了让矩阵乘法能同时处理旋转和平移。你想想看,如果没有这一行,你没法用矩阵乘法把两个变换“串联”起来。

举个例子,机械臂从基座到末端,中间经过好几个关节。每个关节的变换就是一个齐次矩阵。把它们乘起来,就得到末端在基座坐标系下的位姿。这就是正运动学的核心思想。

核心公式: 机械臂正运动学 = T1 * T2 * T3 * ... * T6,其中每个Ti是相邻关节间的齐次变换矩阵。

2.5 知识体系总览

为了让你更直观地理解这一章的知识结构,我画了一张图。你看,坐标系是基础,旋转矩阵和欧拉角是描述姿态的两种方式,齐次变换矩阵则是把它们打包成一个整体。整个机械臂的运动学,就是在这个框架上搭建的。

空间几何基础:知识体系 坐标系 旋转矩阵 欧拉角 齐次变换矩阵 → 正运动学、逆运动学、轨迹规划

2.6 实战中的小贴士

最后,分享几个我在项目中踩过的坑,希望能帮你少走弯路:

  • 坐标系方向要统一:我见过一个团队,有人用右手系,有人用左手系,结果联调时机器人乱转。建议团队内统一用右手系。
  • 欧拉角顺序要明确:在代码里,一定要注释清楚用的是哪种顺序。我曾经接手一个项目,前任没写注释,我花了三天才猜出他用的ZYZ顺序。
  • 齐次矩阵的逆:求逆时,旋转矩阵部分直接转置,平移部分要乘以转置后的旋转矩阵再取负。这个公式我每次写代码都要默念一遍,防止出错。
警告: 千万不要直接用欧拉角做连续旋转的插值!万向锁会让你怀疑人生。如果要做姿态平滑过渡,请使用四元数或旋转矩阵的球面线性插值(SLERP)。

好了,这一章的内容就到这里。空间几何基础是机械臂算法的“内功心法”,看似简单,但越往后学,你越会发现它的重要性。下一章,我们将正式进入正运动学的推导,到时候你会看到,今天学的齐次变换矩阵会频繁出现。


公众号:蓝海资料掘金营,微信deep3321