3. 视觉系统坐标系与标定原理

在 ROBOGUIDE 视觉应用离线验证中,标定不是“点几下按钮”的孤立操作,而是把图像中的像素位置与机器人能到达的物理位置建立可计算映射的过程。要理解这个过程,必须先把四个坐标系放在同一条变换链上:像素坐标系描述“点在图像里的位置”,相机坐标系描述“点在相机光心前方的三维位置”,机器人基坐标系描述“点在机器人工作空间中的绝对位置”,工具坐标系描述“机器人末端执行器(或相机)相对于法兰的姿态与位置”。离线标定的本质,就是求取这些坐标系之间的变换矩阵,使像素坐标能够被换算成机器人可执行的目标位姿。

四个坐标系的定义与层级关系

像素坐标系通常记作 (u, v),单位是像素,原点在图像左上角,u 向右、v 向下。它只描述二维投影位置,不包含深度。相机坐标系记作 (Xc, Yc, Zc),原点在相机光心,Zc 沿光轴指向拍摄方向,Xc、Yc 与图像平面平行。相机内参矩阵 K 把相机坐标系中的三维点投影到像素平面:

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

其中 fx、fy 是以像素为单位的焦距,cx、cy 是主点坐标。内参由相机本身决定,与机器人无关,离线时可通过相机参数表或标定板图像获得。机器人基坐标系记作 (Xb, Yb, Zb),是机器人工作空间的绝对参考,所有机器人运动指令最终都相对于它描述。工具坐标系记作 (Xt, Yt, Zt),原点在工具中心点 TCP,Zt 通常沿工具指向。当相机固定在机器人末端时,相机坐标系与工具坐标系之间存在固定的手眼变换;当相机固定在工位上方时,相机坐标系与基坐标系之间存在固定的外参变换。

视觉系统四坐标系变换链 像素坐标系 (u, v) 单位:像素 原点:图像左上角 u→右 v→下 相机坐标系 (Xc, Yc, Zc) 原点:相机光心 Zc 沿光轴指向 机器人基坐标系 (Xb, Yb, Zb) 原点:机器人底座 工作空间绝对参考 工具坐标系 (Xt, Yt, Zt) 原点:TCP Zt 沿工具指向 内参 K 外参 T 手眼 H 核心变换关系 像素 → 相机: [u,v,1]ᵀ = K · [Xc/Zc, Yc/Zc, 1]ᵀ 相机 → 基座: P_base = T_base_cam · P_cam 基座 → 工具: P_tool = T_tool_base · P_base 离线标定方法 • 九点标定:平面映射,求 2D 仿射矩阵 • 手眼标定:AX=XB,求相机-工具变换 • 张正友标定:棋盘格求内参与畸变系数 离线验证要点 • 标定板位姿覆盖工作空间 • 重投影误差 < 0.5 像素 • 验证点残差 < 1.0 mm

从像素到机器人位姿的完整变换链

假设相机固定在机器人末端(眼在手),要抓取传送带上一个工件,变换链如下。第一步,图像处理得到工件中心像素坐标 (u, v)。第二步,利用相机内参 K 和深度信息 Zc,反投影得到相机坐标系下的三维点 P_cam = Zc · K⁻¹ · [u, v, 1]ᵀ。第三步,通过手眼变换矩阵 T_cam_tool 把 P_cam 转到工具坐标系:P_tool = T_cam_tool · P_cam。第四步,结合机器人当前法兰位姿 T_flange_base 和工具偏移 T_tool_flange,得到基坐标系下的目标点 P_base = T_flange_base · T_tool_flange · P_tool。第五步,把 P_base 作为机器人运动目标,生成抓取指令。

如果相机固定在工位上方(眼在手外),则第三步和第四步合并为固定的外参矩阵 T_cam_base,P_base = T_cam_base · P_cam,与机器人当前姿态无关。两种安装方式的标定对象不同:眼在手标定的是相机与工具的相对关系,眼在手外标定的是相机与基座的相对关系。ROBOGUIDE 离线验证时,需要根据实际安装方式选择对应的标定模型,否则变换链会接错。

离线标定的数学基础

标定的数学本质是求解变换矩阵。对于平面九点标定,假设工作平面为 Z=0,像素坐标与机器人坐标之间满足二维仿射关系:

[Xb]   [a  b  c] [u]
[Yb] = [d  e  f] [v]
[1 ]   [0  0  1] [1]

采集至少三组不共线的 (u, v) 与 (Xb, Yb) 对应点,用最小二乘法解出 a 到 f 六个参数。九点标定通常采集 3×3 网格点,覆盖视野中心与边缘,能有效抑制镜头畸变带来的非线性误差。求解后,用未参与标定的验证点检查残差,若残差大于 1.0 mm,说明标定点分布不合理或图像中心提取有偏差,需要重新采集。

对于手眼标定,经典模型是 AX = XB。其中 A 是机器人两次运动的相对位姿,B 是相机两次观测到的标定板相对位姿,X 是待求的相机与工具(或基座)之间的变换。采集多组不同姿态下的 A 和 B,通过 Tsai-Lenz 或 Park-Martin 方法求解 X。离线时,可以在 ROBOGUIDE 中让虚拟机器人走若干标定位姿,记录法兰位姿,同时用虚拟相机拍摄标定板,计算 B,再运行标定算法得到 X。由于虚拟环境没有真实噪声,求解结果可以作为理论真值,用来验证后续图像处理算法和通信链路的正确性。

离线标定的操作流程与结果判读

在 ROBOGUIDE 中执行离线标定,建议按以下流程操作。首先,在虚拟工作站中导入与实际一致的相机模型,设置内参 fx、fy、cx、cy 和畸变系数。其次,放置标定板,确保标定板在相机视野内且姿态有变化。然后,编写或调用标定程序,控制机器人携带相机(或移动标定板)采集 9 到 15 组图像与对应位姿。接着,运行标定计算,输出变换矩阵和重投影误差。最后,用独立验证点检查标定精度。

结果判读时重点关注三个指标。重投影误差反映标定参数与观测数据的吻合程度,一般要求小于 0.5 像素;验证点残差反映标定结果在实际工作空间中的位置偏差,一般要求小于 1.0 mm;参数一致性检查变换矩阵是否满足正交性约束,旋转部分行列式应接近 1,平移部分量级应与实际安装尺寸相符。若重投影误差小但验证点残差大,通常是标定点集中在视野中心、边缘覆盖不足;若两者都大,则可能是图像中心提取错误或机器人位姿记录不同步。

离线标定的价值在于:可以在没有真实相机和机器人的情况下,验证坐标系定义、变换链顺序、标定算法和参数配置是否正确。把离线标定结果与理论值对比,能够提前发现手眼关系接反、单位不一致、旋转方向定义冲突等常见问题,避免到现场后反复试错。
坐标系方向约定必须在全文和图示中保持一致。例如,若定义机器人基坐标系 Zb 向上,则工具坐标系 Zt 和相机坐标系 Zc 的方向也应按同一约定描述。切换参照系时,必须明确说明当前点是在哪个坐标系下表达的,否则变换矩阵的乘法顺序容易出错。

总结来说,像素坐标系、相机坐标系、机器人基坐标系和工具坐标系构成了一条从二维图像到三维动作的变换链。内参 K 负责像素与相机的投影关系,外参 T 负责相机与机器人的空间关系,手眼矩阵 H 负责相机与工具的固定关系。离线标定就是通过采集对应点、建立方程、求解矩阵、验证残差,把这条链上的每个环节都量化确认。掌握这套数学基础,才能在 ROBOGUIDE 中正确配置视觉系统,并为后续的抓取、定位和检测应用提供可靠的位置输入。