PART 02 · CHAPTER 08

描述空间:坐标系、矩阵、旋转与齐次变换

一句话理解

机器人必须先统一“从哪里看、朝哪个方向、相隔多远”,才能把相机、机械臂和世界说成同一件事。

约 2,241 字约 5 分钟3 个来源3 幅教学图

点、向量和坐标系

空间中的点是位置,向量是带方向和大小的量。向量 \(\mathbf p=[x,y,z]^T\) 里的三个数没有脱离坐标系的绝对含义。同一个杯子,在世界坐标系中可能是 \([1.2,0.4,0.8]^T\) 米,在相机坐标系中可能是 \([0.1,-0.2,0.7]^T\) 米。两个数值都正确,它们回答的是不同观察者的问题。

一个三维坐标系由原点和三条相互垂直的轴构成。机器人项目通常至少有世界、地图、里程计、机身、各关节、末端工具、相机、物体等坐标系。给每个坐标系清楚命名,并记录它们的父子关系,是排查“看见了却抓不到”的第一步。

矩阵可以理解为一个把向量从一种表达转换成另一种表达的线性机器。矩阵乘法有顺序:\(\mathbf A\mathbf B\) 表示先执行 \(\mathbf B\),再执行 \(\mathbf A\)。这与日常语言从左到右的阅读直觉相反,是变换链中最常见的错误源。

向量点积

\[\mathbf a^T\mathbf b=\|\mathbf a\|\,\|\mathbf b\|\cos\theta\]

衡量两个方向的对齐程度,也能计算一个向量在另一个方向上的投影。叉积 \(\mathbf a\times\mathbf b\) 得到垂直于二者的向量,其大小等于两向量张成平行四边形的面积;机器人用它表达旋转轴、力矩 \(\boldsymbol\tau=\mathbf r\times\mathbf f\) 和角速度引起的线速度。

FIGURE 01同一点的三种坐标表达点没有改变改变的是观察坐标系坐标系 A任何位置数值都必须和坐标系一起读。
图 1 点没有改变,改变的是观察坐标系。

矩阵的秩表示它能独立表达多少个方向。满秩方阵存在逆矩阵;非方阵或秩不足时,常用最小二乘寻找最接近的解:

\[\mathbf x^*=\arg\min_{\mathbf x}\|\mathbf A\mathbf x-\mathbf b\|^2, \qquad \mathbf x^*=\mathbf A^\dagger\mathbf b.\]

\(\mathbf A^\dagger\) 是 Moore–Penrose 伪逆。奇异值分解 \(\mathbf A=\mathbf U\boldsymbol\Sigma\mathbf V^T\) 把映射分解成输入方向、各方向缩放和输出方向;\(\boldsymbol\Sigma\) 中接近零的奇异值表示某个方向几乎无法产生或观测,也意味着求逆会放大噪声。后文的雅可比奇异性、最小二乘标定和状态估计都会重复使用这一思想。

旋转矩阵:方向的无歧义表达

三维旋转矩阵 \(\mathbf R\in SO(3)\) 满足

\[\mathbf R^T\mathbf R=\mathbf I,\qquad \det(\mathbf R)=1.\]

第一条表示旋转后长度和夹角不变,矩阵的逆等于转置;第二条排除镜像反射。若 \({}^{A}\mathbf R_B\) 描述 \(B\) 坐标系相对 \(A\) 的方向,那么一个在 \(B\) 中表达的向量 \({}^{B}\mathbf p\) 可写到 \(A\) 中:

\[{}^{A}\mathbf p={}^{A}\mathbf R_B\,{}^{B}\mathbf p.\]

旋转矩阵直观、计算稳定,但有九个数表达三个自由度。欧拉角和滚转—俯仰—偏航角只用三个数,适合人读,却依赖旋转顺序,并在特定姿态出现万向节锁。轴角用单位轴 \(\hat{\boldsymbol\omega}\) 和角度 \(\theta\) 表示旋转。单位四元数 \(\mathbf q=[q_w,q_x,q_y,q_z]\) 用四个数表达三个自由度,适合插值和数值积分,但 \(\mathbf q\)\(-\mathbf q\) 表示同一旋转,使用前还要归一化。

这些表示没有“永远最好”的一个。接口对人显示时常用欧拉角;内部计算常用旋转矩阵或四元数;优化与微小误差常在李代数的三维切空间中表示。工程关键是明确约定和转换测试。

FIGURE 02旋转表示的选择同一旋转可以有多种表选择取决于接口计算任务。旋转工程事故的常见根因是约定不清。
图 2 同一旋转可以有多种表示,选择取决于接口和计算任务。

齐次变换:把旋转和平移放进同一个对象

刚体位姿同时包含方向和位置。齐次变换矩阵写成

\[{}^{A}\mathbf T_B= \begin{bmatrix} {}^{A}\mathbf R_B & {}^{A}\mathbf t_B\\ \mathbf 0^T & 1 \end{bmatrix}\in SE(3),\]

其中 \({}^{A}\mathbf t_B\)\(B\) 原点在 \(A\) 中的位置。给点补一个 1,得到齐次坐标 \(\bar{\mathbf p}=[x,y,z,1]^T\),旋转和平移就能一次完成:

\[{}^{A}\bar{\mathbf p}={}^{A}\mathbf T_B\,{}^{B}\bar{\mathbf p}.\]

变换可以链式组合。若知道相机相对末端工具的变换 \({}^{E}\mathbf T_C\),又知道末端相对机器人底座的变换 \({}^{B}\mathbf T_E\),那么相机相对底座为

\[{}^{B}\mathbf T_C={}^{B}\mathbf T_E{}^{E}\mathbf T_C.\]

逆变换有明确结构:

\[\mathbf T^{-1}= \begin{bmatrix} \mathbf R^T & -\mathbf R^T\mathbf t\\ \mathbf 0^T & 1 \end{bmatrix}.\]

负号前还要乘 \(\mathbf R^T\),因为平移向量也要换观察坐标系。

FIGURE 03雅可比的双向桥梁奇异性=桥梁丢失方雅可比把运动力的两种坐标语言连接起来。速度映射与静力映射是同一几何关系的两面。
图 3 雅可比把运动与力的两种坐标语言连接起来。

速度、扭量与雅可比

刚体瞬时运动由线速度 \(\mathbf v\) 和角速度 \(\boldsymbol\omega\) 组成,合写为六维扭量 \(\mathbf V=[\boldsymbol\omega^T,\mathbf v^T]^T\)。机械臂关节速度 \(\dot{\mathbf q}\) 与末端速度之间由雅可比矩阵联系:

\[\mathbf V=\mathbf J(\mathbf q)\dot{\mathbf q}.\]

\(\mathbf J\) 的每一列表示“只让某个关节以单位速度运动时,末端会产生怎样的瞬时运动”。因此雅可比同时连接关节空间与任务空间,也把末端受力映射为关节力矩:

\[\boldsymbol\tau=\mathbf J^T\mathbf F.\]

这里 \(\mathbf F\) 是末端的力与力矩组成的六维力旋量,\(\boldsymbol\tau\) 是关节力矩。若 \(\mathbf J\) 在某姿态失去秩,某些方向的末端速度需要无限大的关节速度才能产生,这就是运动学奇异性。

工程例子:相机看到的物体为什么总偏五厘米

视觉算法输出杯子在相机系中的位姿,机械臂规划器需要杯子在底座系中的位姿。系统必须组合“底座到末端”“末端到相机”“相机到杯子”三段变换。偏差可能来自手眼标定、时间不同步、坐标轴约定、单位错误或矩阵顺序。

排查时先用静态目标验证每一段变换,再移动单个关节观察预测是否一致;用单位测试检查 \(\mathbf T\mathbf T^{-1}\approx\mathbf I\);打印时间戳;最后才调视觉或控制参数。如果偏差随手臂姿态变化,常见原因是外参或运动学参数;若始终固定,可能是工具中心点或目标模型的平移偏置。

深入阅读