3. 视觉基础
机器臂视觉抓取系统的第一性原理,是让机械臂“知道”视觉传感器看到的物体在机器人坐标系中的精确位置。这一过程的核心桥梁,就是相机的成像模型与标定参数。如果相机内参、外参或畸变系数存在偏差,即便算法再先进,抓取精度也会在源头被破坏。本章将系统拆解针孔成像模型、内参外参的物理含义、畸变产生机理以及标定实施方法,为后续手眼标定奠定数学与工程基础。
3.1 针孔成像模型与四大坐标系变换
相机成像的本质是将三维空间点投影到二维像素平面的过程。针孔模型是这一过程的理想化数学描述,它假设光线沿直线传播并通过光心,在像平面上形成倒立实像。实际工程中,我们通过“等效正立虚像”简化计算,将投影关系表达为线性矩阵运算。
整个成像链路涉及四个坐标系的连续变换:世界坐标系 → 相机坐标系 → 图像坐标系 → 像素坐标系。世界坐标系是用户自定义的基准参考系,通常与机械臂基座或标定板绑定;相机坐标系以光心为原点,Z轴指向相机前方;图像坐标系以光轴与像平面的交点为原点,单位是毫米;像素坐标系以图像左上角为原点,单位是像素。
从世界坐标到相机坐标属于刚体变换,只包含旋转矩阵 R(3×3)和平移向量 t(3×1),这组参数被称为外参,它描述了相机在世界坐标系中的位姿。从相机坐标到像素坐标的变换由内参决定,包括焦距 fx、fy(单位像素)和主点 cx、cy(单位像素)。完整的投影方程如下:
Zc * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T
其中内参矩阵 K = [[fx, 0, cx],
[0, fy, cy],
[0, 0, 1]]
fx = f/dx,fy = f/dy,其中 f 为物理焦距(mm),dx、dy 为单个像素的物理尺寸(mm/pixel)。当像素为正方形时 fx = fy,但工业相机中两者常有微小差异,标定时必须分别求解。
| 坐标系 | 原点位置 | 单位 | 变换关系 |
|---|---|---|---|
| 世界坐标系 | 用户自定义 | mm | 基准参考系 |
| 相机坐标系 | 光心 | mm | 外参 R, t |
| 图像坐标系 | 光轴与像平面交点 | mm | 内参 fx, fy |
| 像素坐标系 | 图像左上角 | pixel | 主点 cx, cy |
3.2 畸变模型:径向畸变与切向畸变
实际镜头并非理想针孔,光线通过透镜时会发生折射偏差,导致成像点偏离理想位置,这就是畸变。畸变主要分为两类:径向畸变和切向畸变。径向畸变源于透镜形状误差,表现为图像点沿径向向内(桶形畸变)或向外(枕形畸变)偏移;切向畸变源于透镜与成像平面不平行,表现为图像点沿切线方向偏移。
径向畸变的数学模型用三个系数 k1、k2、k3 描述,切向畸变用 p1、p2 描述。设理想归一化坐标为 (x, y),畸变后的坐标为 (x_dist, y_dist),则:
x_dist = x * (1 + k1*r² + k2*r⁴ + k3*r⁶) + 2*p1*x*y + p2*(r² + 2x²)
y_dist = y * (1 + k1*r² + k2*r⁴ + k3*r⁶) + p1*(r² + 2y²) + 2*p2*x*y
其中 r² = x² + y²
对于工业机器臂视觉抓取场景,通常使用定焦镜头,k3 往往不需要标定(设为0),因为高次项对普通镜头影响极小。但若使用广角镜头或短焦距镜头,k3 必须参与标定。畸变系数属于内参的一部分,在标定过程中与内参矩阵联合优化求解。
3.3 标定方法:从张正友标定到实操流程
目前工业界最常用的相机标定方法是张正友标定法,它只需要拍摄不同姿态的平面棋盘格标定板即可完成标定,无需昂贵的精密三维标定块。其核心思想是利用棋盘格角点的共面约束,先通过单应矩阵求解内参初值,再通过非线性优化迭代精化所有参数。
标定操作流程分为五个关键步骤:
- 准备标定板:打印高精度棋盘格(建议 9×7 或 12×9 内角点),粘贴在平整刚性平板上,测量方格边长(如 30mm)。
- 采集图像:固定相机,移动标定板,采集 15~20 张不同姿态的图像。要求覆盖画面中心与边缘,倾斜角度从 0° 到 45° 变化,且标定板在画面中占比超过 1/3。
- 角点检测:使用 OpenCV 的
findChessboardCorners函数自动检测内角点,并利用cornerSubPix进行亚像素精化。 - 参数求解:调用
calibrateCamera函数,输入角点像素坐标和对应的世界坐标(以标定板平面为 Z=0),输出内参矩阵、畸变系数、每张图像的外参。 - 精度验证:计算重投影误差(reprojection error),通常要求小于 0.1 像素。若误差过大,需剔除异常图像或重新采集。
3.4 案例拆解:视觉抓取产线中的相机标定实战
某汽车零部件装配线需要机器人从传送带上抓取不同规格的螺栓,视觉系统采用 Basler acA2500-14gm 工业相机(500万像素,传感器尺寸 2/3"),搭配 12mm 定焦镜头,工作距离约 600mm。现场反馈抓取位置偏差达到 ±5mm,超出工艺允许的 ±1mm 范围。
初步排查:首先检查机械臂重复定位精度(±0.05mm)和传送带编码器同步,均正常。随后怀疑相机标定参数存在问题。使用 OpenCV 对标定结果进行复核,发现重投影误差高达 0.45 像素,远超 0.1 像素的合格线。
根因分析:进一步检查发现,现场标定时使用了 A4 纸打印的棋盘格,纸张未粘贴在刚性平板上,存在轻微弯曲;且采集的 12 张图像中,有 5 张标定板倾斜角小于 10°,姿态多样性不足。弯曲的标定板导致角点世界坐标与实际位置偏差,而姿态单一导致单应矩阵求解病态。
解决措施:重新制作标定板,将棋盘格打印后粘贴在 5mm 厚铝板上,确保平面度;重新采集 18 张图像,覆盖 0°~40° 倾斜角,并保证标定板出现在画面九个不同区域。标定后重投影误差降至 0.06 像素。随后重新执行手眼标定,抓取精度提升至 ±0.8mm,满足工艺要求。
| 参数 | 标定前(问题状态) | 标定后(优化状态) |
|---|---|---|
| 重投影误差 | 0.45 pixel | 0.06 pixel |
| fx | 3452.7 | 3481.2 |
| fy | 3448.3 | 3479.6 |
| cx | 1234.5 | 1228.9 |
| cy | 1023.8 | 1019.4 |
| k1 | -0.112 | -0.098 |
| 抓取精度 | ±5mm | ±0.8mm |
该案例表明,标定板平面度和图像姿态多样性是影响标定精度的两大关键因素。在机器臂视觉引导项目中,标定质量直接决定系统最终精度,任何环节的疏忽都会在后续手眼标定和抓取控制中被放大。
3.5 常见误区与总结复盘
在相机标定实施过程中,工程师常陷入以下误区,需要特别警惕:
- 误区一:标定板越大越好。标定板尺寸应与工作距离和视场匹配,过大可能导致部分角点超出视场,过小则角点像素分辨率不足。一般建议标定板在画面中占 1/3 到 1/2 面积。
- 误区二:忽略主点偏移。部分工程师认为 cx、cy 就是图像中心(如 1280×1024 图像的中心为 640, 512),直接使用默认值而不标定。实际镜头装配误差会导致主点偏移 10~30 像素,必须参与标定。
- 误区三:标定一次永久使用。镜头松动、温度变化、振动冲击都会导致内参漂移。建议每季度或每次镜头重新调焦后,重新执行标定。
- 误区四:混淆内参标定与手眼标定。内参标定是确定相机自身的投影参数,手眼标定是确定相机与机械臂之间的坐标变换关系。两者必须按顺序执行,不可颠倒。
相机标定是机器臂视觉抓取系统的基石,其精度上限决定了整个系统的精度上限。掌握针孔模型、畸变模型和标定方法,是每一位视觉工程师的基本功。在实际项目中,务必以严谨的流程执行标定,并用重投影误差和实际抓取精度双重验证标定结果,才能为后续的视觉引导算法提供可靠的数据源。