3. 图像采集与相机标定基础

在 VisionPro 机器人视觉引导系统中,图像采集与标定是整条链路的地基。相机选错、镜头畸变未校正、标定坐标系定义混乱,后续无论用 PatMax 还是 Caliper 做得多么精确,机器人抓取都会出现系统性偏差。本节围绕四个相互衔接的问题展开:选什么相机、镜头如何把三维世界映射到二维像素、像素如何变成机器人坐标、相机与机器人之间的坐标关系如何建立。

一、相机选型:从视野与精度反推分辨率

选型不应从“买多少万像素”开始,而应从任务精度反推。核心关系是:单像素物理分辨率 = 视野(FOV)÷ 相机分辨率。若要求系统能稳定分辨 0.1 mm 的特征,考虑亚像素算法通常可达到 1/4~1/10 像素,则单像素对应物理尺寸宜控制在 0.4~0.5 mm 左右。例如视野为 400 mm × 300 mm,选 1280 × 960 相机,单像素约 0.31 mm,配合亚像素可满足 0.1 mm 级定位;若视野扩大到 800 mm,同样相机单像素变为 0.63 mm,精度就吃紧。

除分辨率外,还需关注:传感器尺寸(决定镜头焦距与工作距离的匹配)、帧率(节拍要求,如 20 件/分钟则单次采集加处理需小于 3 s)、接口(GigE 适合长距离、USB3 适合高带宽)、快门类型(运动工件必须用全局快门,卷帘快门会产生果冻畸变)、黑白/彩色(尺寸测量优先黑白,对比度更高、无插值误差)。

二、镜头畸变模型:为什么直线会变弯

针孔模型假设世界点、光心、像点共线,但真实镜头存在畸变,最典型的是径向畸变:距光轴越远,放大率偏差越大,表现为桶形(负)或枕形(正)畸变。VisionPro 的 CogCalib 使用含径向与切向项的模型:

x_u = x_d (1 + k1 r² + k2 r⁴ + k3 r⁶) + 2 p1 x_d y_d + p2 (r² + 2 x_d²)
y_u = y_d (1 + k1 r² + k2 r⁴ + k3 r⁶) + p1 (r² + 2 y_d²) + 2 p2 x_d y_d

其中 (x_d, y_d) 为畸变后的归一化像点,(x_u, y_u) 为理想点,k1、k2、k3 为径向系数,p1、p2 为切向系数。标定时通过拍摄多姿态标定板,用最小二乘求解这些系数,再对图像做反向映射校正。工程上判断畸变是否可接受,可看校正后棋盘格直线的残余弯曲:若在视野边缘仍超过 0.5 像素,说明标定姿态覆盖不足或镜头质量偏弱。

三、九点标定:像素坐标到机器人坐标的平面映射

九点标定解决的是“图像里的 (u, v) 对应机器人平面上的哪个 (X, Y)”。做法是让机器人末端(或标定针)依次移动到 3×3 共九个位置,每个位置记录机器人坐标,同时用相机拍下标记点并提取像素坐标,得到九组对应点。由于两平面之间是仿射关系,可用齐次变换表示:

[X]   [a  b  c] [u]
[Y] = [d  e  f] [v]
[1]   [0  0  1] [1]

用九组点超定求解 a~f 六个参数,即可把任意像素点映射为机器人坐标。九点而非三点,是为了让最小二乘平均掉标记提取噪声,并检验残差。判断标定质量:计算九个点的反算误差,若最大残差超过 0.2 mm(视精度要求而定),应检查标记中心提取是否偏心、机器人是否重复定位不良、或视野边缘畸变未校正。

四、手眼标定:Eye-to-Hand 与 Eye-in-Hand

九点标定只给出“图像平面→机器人平面”的二维关系,前提是相机与机器人基座相对固定且工件在同一平面。当需要三维引导或相机装在机器人末端时,必须做手眼标定,求解相机坐标系与机器人坐标系之间的刚体变换(旋转 R + 平移 t)。

两种构型:Eye-to-Hand(相机固定在支架上,看整个工作区)——标定相机相对机器人基座的外参,机器人运动不改变相机位姿;Eye-in-Hand(相机装在末端法兰)——标定相机相对法兰的外参,相机随机器人运动,适合大工件局部高精度拍摄。经典求解方式是让机器人带动标定板做多组不同姿态,利用 AX = XB 形式求解,VisionPro 的 CogCalib 与机器人端可配合完成。

无论哪种构型,标定后都要做验证:让机器人移动到若干验证点,用视觉算出坐标并对比机器人实际坐标,残差应在精度要求内。若 Eye-in-Hand 在不同姿态下误差方向随姿态旋转,通常是旋转矩阵求解不准;若误差恒定,则多为平移量或工具坐标(TCP)定义有误。

图像采集与标定链路:从三维世界到机器人坐标 三维世界 工件 / 标定板 (Xw, Yw, Zw) 镜头 + 畸变 k1,k2,k3 / p1,p2 径向 + 切向 相机传感器 像素 (u, v) 分辨率 / 快门 机器人坐标 (Xr, Yr, Zr) 抓取 / 引导 九点标定(平面仿射) 3×3 对应点 最小二乘求 a~f 六参数 手眼标定(刚体变换) Eye-to-Hand:相机固定,求相机↔基座 Eye-in-Hand:相机随末端,求相机↔法兰 AX = XB 多姿态求解 R、t 标定验证与残差判读 九点残差 > 0.2 mm → 查标记偏心 / 重复定位 / 畸变 误差随姿态旋转 → 旋转矩阵不准;误差恒定 → 平移或 TCP 有误

五、工程落地要点

实际集成时,建议按以下顺序推进:先确定精度与节拍,反推相机分辨率与镜头焦距;再固定相机与光源,采集标定板图像,用 CogCalib 完成畸变校正;随后做九点标定得到平面映射;若需三维或末端相机,再补手眼标定。每一步都要保留残差记录,作为后续排障的基线。

标定板应覆盖视野 70% 以上区域,并包含边缘位置,否则畸变系数在边缘外推会失真。标定完成后不要随意移动相机或更换镜头,任何机械变动都需重新标定。
常见误区:把九点标定当作手眼标定使用。九点标定只适用于同一平面内的二维引导;若工件高度变化或相机装在机器人末端,必须做完整手眼标定,否则 Z 向误差会直接传递到抓取。

掌握本节四个环节后,后续的视觉工具配置与机器人通信才有可靠的坐标基础。标定精度决定了系统精度的上限,任何算法优化都无法弥补标定环节的系统性偏差。