坐标系基础:世界坐标系、相机坐标系、图像坐标系、像素坐标系、机器人基坐标系、工具坐标系
做手眼标定,说白了就是搞清楚「眼睛」和「手」之间的位置关系。而这一切的前提,是你得先把坐标系搞明白。
我刚开始接触这个领域时,觉得坐标系不就是数学课上那点东西吗?后来在实际项目中栽了跟头,才发现——坐标系没理清,后面全是坑。
这一章,我们把六个核心坐标系一个一个拆开讲。你不需要一次性全记住,但得知道它们各自在哪儿、干什么用、怎么互相转换。
1. 世界坐标系(World Coordinate System)
世界坐标系,你可以理解为整个场景的「参考系」。它固定不动,所有其他坐标系都相对于它来定义。
- 作用:描述物体在真实世界中的位置和姿态。
- 特点:一旦定义,不再改变。
- 常见定义方式:以工作台一角、机器人底座中心、或标定板某个角点为原点。
2. 相机坐标系(Camera Coordinate System)
相机坐标系是以相机光心为原点、光轴为 Z 轴的三维坐标系。它描述的是「相机看到的3D世界」。
- 原点:相机光心(透镜中心)。
- Z 轴:沿光轴方向,指向被拍摄物体。
- X、Y 轴:与图像平面平行。
我记得有一次做双目视觉定位,相机坐标系没校准好,结果测出来的距离偏差了 5 毫米。嗯,从那以后我每次都会先做一遍相机内参标定,再谈别的。
3. 图像坐标系(Image Coordinate System)
图像坐标系是二维的,位于相机成像平面上。它以图像中心为原点,单位是毫米或微米。
- 作用:描述物体在成像平面上的物理位置。
- 与相机坐标系的关系:通过透视投影(小孔成像模型)转换。
这里有个容易混淆的点:图像坐标系和像素坐标系不是一回事。图像坐标系是物理单位,像素坐标系是离散的像素单位。
4. 像素坐标系(Pixel Coordinate System)
像素坐标系就是我们平时说的「图片坐标」。它以图像左上角为原点,单位是像素(pixel)。
- 原点:图像左上角。
- u 轴:水平向右。
- v 轴:垂直向下。
从图像坐标系到像素坐标系,其实就是一次缩放加平移。公式很简单,但参数(像元尺寸、主点偏移)必须从相机标定里拿到。
世界坐标系 → 相机坐标系 → 图像坐标系 → 像素坐标系
每一步都有对应的变换矩阵,手眼标定就是把这些矩阵串起来。
5. 机器人基坐标系(Robot Base Coordinate System)
机器人基坐标系固定在机器人底座上。它是机器人运动的「根坐标系」。
- 原点:通常位于机器人底座安装面中心。
- Z 轴:垂直于安装面向上。
- X、Y 轴:根据机器人品牌定义(如 ABB、KUKA、Fanuc 各有差异)。
我遇到过不少工程师,直接把世界坐标系和机器人基坐标系当成同一个。其实它们之间有一个固定的变换关系,这个关系需要在系统集成时标定出来。
6. 工具坐标系(Tool Coordinate System)
工具坐标系定义在机器人末端执行器上。比如你装了一个夹爪、一个焊枪、或者一个吸盘,工具坐标系就描述这个工具的位姿。
- 原点:工具中心点(TCP,Tool Center Point)。
- 作用:让机器人知道「我的手在哪儿」。
7. 六个坐标系的关系图
下面这张图展示了六个坐标系之间的转换关系。箭头方向表示「从源坐标系到目标坐标系的变换」。
8. 坐标系转换速查表
| 转换方向 | 变换类型 | 关键参数 | 备注 |
|---|---|---|---|
| 世界 → 相机 | 刚体变换(R, t) | 旋转矩阵 R,平移向量 t | 即相机外参 |
| 相机 → 图像 | 透视投影 | 焦距 f | 小孔成像模型 |
| 图像 → 像素 | 仿射变换 | 像元尺寸 dx, dy,主点 u0, v0 | 相机内参的一部分 |
| 世界 → 机器人基 | 刚体变换 | 系统标定参数 | 通常固定不变 |
| 机器人基 → 工具 | 运动学正解 | 关节角度、连杆参数 | 由机器人控制器实时计算 |
| 相机 → 机器人基 | 刚体变换 | 手眼矩阵 | 手眼标定的目标 |
世界坐标系是「根」,相机和机器人基坐标系是「枝」,图像和像素坐标系是「叶」,工具坐标系是「果」。
手眼标定,就是找到「枝」与「枝」之间的连接关系。
好了,六个坐标系讲完了。你可能会觉得有点抽象,没关系——后面每一章都会反复用到这些概念。尤其是当你开始做实际标定时,坐标系之间的关系会越来越清晰。
我个人建议,你可以先画一张类似上面那样的关系图,贴在工位上。每次做标定前看一眼,思路会清楚很多。