4. 相机成像模型与坐标系

在KUKA机器人视觉抓取系统中,要让机器人知道“目标在空间中的哪个位置”,必须先把图像上的一个像素点,逐步还原到机器人能够理解的三维世界坐标。这个过程依赖四个层层递进的坐标系:像素坐标系、图像坐标系、相机坐标系和世界坐标系。理解它们的定义与转换关系,是后续相机标定、手眼标定和抓取位姿计算的基础。

四个坐标系的定义

像素坐标系以图像左上角为原点,单位为像素。通常记作 (u, v),u 向右为正,v 向下为正。它直接对应图像矩阵的行列索引,是我们在图像处理中最早接触到的坐标。

图像坐标系同样位于成像平面上,但原点移到光轴与图像平面的交点(主点),单位为物理长度(如毫米)。记作 (x, y),x 向右、y 向下,与像素坐标方向一致。像素坐标与图像坐标之间通过像素物理尺寸 dx、dy 和主点像素坐标 (u₀, v₀) 建立线性关系:

u = x / dx + u₀
v = y / dy + v₀

相机坐标系以相机光心为原点,Zc 轴沿光轴指向拍摄方向,Xc、Yc 分别与图像坐标系的 x、y 平行,单位为毫米。它描述的是目标相对于相机的位置,是连接二维图像与三维空间的关键一环。

世界坐标系是描述真实场景的绝对坐标系,可根据需要定义在机器人基座、标定板或工作台上。记作 (Xw, Yw, Zw),单位为毫米。相机坐标系与世界坐标系之间通过旋转矩阵 R 和平移向量 t 建立刚体变换关系。

从像素到世界的转换链

整个转换可以拆成三步:像素坐标 → 图像坐标 → 相机坐标 → 世界坐标。前两步是平面内的线性缩放与平移,第三步是透视投影的逆过程,第四步是刚体变换。

由针孔相机模型,相机坐标系下的点 (Xc, Yc, Zc) 投影到图像坐标满足:

x = f · Xc / Zc
y = f · Yc / Zc

其中 f 为焦距。写成齐次矩阵形式,即内参矩阵 K:

[u]   [fx  0  u₀] [Xc/Zc]
[v] = [0  fy  v₀] [Yc/Zc]
[1]   [0   0   1] [  1  ]

其中 fx = f/dx,fy = f/dy。内参矩阵只与相机自身有关,通过相机标定获得。

相机坐标系到世界坐标系的变换为:

[Xc]       [Xw]
[Yc] = R · [Yw] + t
[Zc]       [Zw]

R 和 t 合称外参,描述相机在世界坐标系中的位姿。在KUKA手眼系统中,若相机固定在机器人末端(eye-in-hand),外参还会随机器人运动变化,需要结合手眼标定矩阵一起使用。

一个教学示例

假设某相机标定后得到内参:fx = 1200 px,fy = 1200 px,u₀ = 640 px,v₀ = 360 px。图像中检测到目标中心像素坐标为 (820, 480),已知目标在相机坐标系下的深度 Zc = 500 mm。先求图像坐标:

x = (820 - 640) × 500 / 1200 = 75 mm
y = (480 - 360) × 500 / 1200 = 50 mm

于是相机坐标系下目标点为 (75, 50, 500) mm。若外参 R 为单位阵、t = (0, 0, 0),则世界坐标也是 (75, 50, 500) mm。若相机安装在机器人末端,还需通过手眼矩阵把该点转换到机器人基座坐标系,才能发送给KUKA控制器执行抓取。

深度 Zc 无法仅由单张图像获得,通常需要深度相机、双目视觉或已知平面约束来提供。没有 Zc,像素点只能确定一条射线,不能确定唯一三维点。

转换关系总览

像素坐标系 (u, v) 单位: px 原点: 图像左上角 图像坐标系 (x, y) 单位: mm 原点: 主点 (u₀,v₀) 相机坐标系 (Xc, Yc, Zc) 单位: mm 原点: 光心 世界坐标系 (Xw, Yw, Zw) 单位: mm dx,dy,u₀,v₀ 内参 K + Zc 外参 R,t 转换公式链 ① 像素 → 图像: x = (u - u₀)·dx , y = (v - v₀)·dy ② 图像 → 相机: Xc = x·Zc / f , Yc = y·Zc / f , Zc 由深度获取 ③ 相机 → 世界: [Xw,Yw,Zw]ᵀ = R⁻¹·([Xc,Yc,Zc]ᵀ - t) ④ 综合: s·[u,v,1]ᵀ = K·[R|t]·[Xw,Yw,Zw,1]ᵀ

上图中,从左到右依次是四个坐标系及其转换条件。实际工程中,内参 K 由相机标定得到,外参 R、t 由手眼标定得到,深度 Zc 由深度传感器或已知平面提供。三者缺一不可,否则无法完成从像素到世界坐标的完整还原。

注意:不同软件库对像素坐标原点、Y轴方向的定义可能不同。OpenCV 以左上角为原点、Y向下;部分机器人视觉库以左下角为原点、Y向上。在KUKA视觉集成中,必须确认图像处理库与机器人坐标系的轴向约定一致,否则会出现抓取方向翻转或偏移。

在KUKA抓取中的实际意义

当机器人接收到一个抓取任务时,视觉系统输出的通常是像素坐标 (u, v)。要把它变成机器人能执行的位姿,需要依次完成:用内参把像素坐标转为相机坐标下的方向向量,结合深度得到相机坐标下的三维点,再用外参和手眼矩阵转换到机器人基座坐标系,最后叠加抓取姿态偏移量,生成 KUKA 可识别的 XYZABC 位姿。整个链条中任何一步参数错误,都会导致抓取点偏移。因此,标定完成后应通过已知世界坐标的标定板角点进行反向验证:把角点的世界坐标投影到图像,与检测到的像素坐标比较,误差通常应控制在 1~2 像素以内。

理解这四个坐标系的定义和转换关系,不仅有助于正确配置标定参数,也能在抓取出现偏差时快速定位问题出在哪一层转换,是视觉抓取调试中最重要的基础之一。