4、视觉标定基础:相机标定、手眼标定(Eye-in-Hand与Eye-to-Hand)的原理与流程
视觉标定是工业机械臂机器视觉系统中决定定位精度与抓取可靠性的核心前置环节。在真实产线上,相机采集到的图像是二维像素坐标,而机械臂需要在三维笛卡尔空间完成运动规划。若缺少精确的标定参数,即便算法识别再准确,机械臂末端也无法对准目标。本章围绕相机内参标定、畸变矫正、手眼关系求解三大模块展开,重点区分Eye-in-Hand(眼在手上)与Eye-to-Hand(眼在手外)两种典型构型的原理差异、操作流程与工程陷阱。
上图展示了视觉标定的完整工程链路:从标定板设计、图像采集,到相机内参求解,再到手眼矩阵计算,最终输出可直接用于机器人抓取的坐标变换参数。下面分别对相机标定和手眼标定的原理、流程与实战要点进行深入拆解。
4.1 相机标定:内参与畸变模型
4.1.1 核心原理
相机标定的本质是求解从三维世界坐标到二维像素坐标的投影关系。理想针孔模型下,空间点 P(Xw, Yw, Zw) 通过相机光心投影到成像平面,再经像素坐标系离散化,其数学表达式为:
λ * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T
其中 K 为内参矩阵,包含焦距 fx、fy 和主点 cx、cy;[R | t] 为外参矩阵,描述相机在世界坐标系中的位姿。实际镜头存在畸变,主要包括径向畸变(桶形/枕形)和切向畸变(透镜与成像面不平行),需用多项式模型进行矫正。
| 参数类型 | 符号 | 物理意义 | 典型值范围 |
|---|---|---|---|
| 焦距 | fx, fy | 像素单位下的等效焦距 | 500~5000 pixel |
| 主点 | cx, cy | 光轴与成像面交点 | 图像中心附近 |
| 径向畸变 | k1, k2, k3 | 镜头曲率引起的畸变 | -0.5 ~ 0.5 |
| 切向畸变 | p1, p2 | 透镜装配误差 | -0.05 ~ 0.05 |
4.1.2 标定流程与操作要点
- 标定板准备:优先选用陶瓷或玻璃基板的高精度棋盘格(7×10或9×12),方格边长精度需达±0.01mm。若使用A4纸打印,需贴在刚性平板上并确认无褶皱。
- 图像采集:固定相机后,移动标定板拍摄15~20张图像。要求标定板出现在视野的不同区域(中心、四角、边缘),且倾斜角度在30°~60°之间变化,避免纯正面或纯侧面。
- 角点提取:使用OpenCV的
findChessboardCorners或Halcon的find_calib_object提取亚像素角点,剔除模糊或遮挡严重的图像。 - 参数求解:采用张正友标定法,先线性求解初值,再用Levenberg-Marquardt算法最小化重投影误差。
- 结果验证:重投影误差应小于0.1像素;若误差大于0.2像素,需检查标定板平整度、光照均匀性或图像数量。
4.1.3 实战场景:3C装配线的相机标定
某手机装配线使用500万像素工业相机检测连接器引脚位置,要求定位精度±0.05mm。初始标定重投影误差为0.35像素,导致抓取偏移。排查发现:标定板为普通打印纸,表面有轻微弯曲;且采集图像时部分图像标定板超出视野边缘。更换陶瓷标定板并重新采集20张覆盖全视野的图像后,重投影误差降至0.08像素,定位精度提升至±0.03mm。
4.1.4 常见误区
- 误区一:标定板越大越好。标定板应占视野的1/3~1/2,过大反而导致边缘畸变模型拟合不准确。
- 误区二:忽略畸变矫正。在视野边缘区域,未矫正的径向畸变可造成数像素误差,直接影响手眼标定精度。
- 误区三:标定后更换镜头或分辨率。任何光学或传感器参数变化都必须重新标定。
4.2 手眼标定:Eye-in-Hand与Eye-to-Hand
4.2.1 核心原理与数学建模
手眼标定解决的是相机坐标系与机械臂坐标系之间的变换关系。根据相机安装位置分为两种构型:
- Eye-in-Hand(眼在手上):相机固定在机械臂末端法兰上,随机械臂运动。标定目标是求解相机坐标系到末端坐标系的变换矩阵 H_CE。
- Eye-to-Hand(眼在手外):相机固定安装在支架上,不随机械臂运动。标定目标是求解相机坐标系到机械臂基座坐标系的变换矩阵 H_CB。
两种构型的标定方程均可归结为 AX = XB 问题。以Eye-in-Hand为例,机械臂从位姿1运动到位姿2时,末端位移矩阵为 A,相机观测同一标定板的位移矩阵为 B,待求的手眼矩阵 X 满足:
A * X = X * B
其中 A = inv(H_EE1) * H_EE2 (末端运动)
B = H_CB1 * inv(H_CB2) (相机运动)
通过至少3组非平行旋转轴的运动,即可线性求解旋转部分,再计算平移向量。工程中通常采集10~15组数据,使用Tsai-Lenz或Park-Martin算法进行优化。
| 对比维度 | Eye-in-Hand | Eye-to-Hand |
|---|---|---|
| 相机安装位置 | 机械臂末端法兰 | 固定支架/天花板 |
| 标定目标 | 相机→末端 (H_CE) | 相机→基座 (H_CB) |
| 视野特点 | 随臂移动,视野动态变化 | 视野固定,覆盖工作区域 |
| 标定板放置 | 固定在工作台面 | 固定在机械臂末端 |
| 优势 | 可近距离观察目标,精度高 | 不增加臂负载,视野稳定 |
| 劣势 | 增加末端负载,需考虑线缆管理 | 远距离观察,精度受分辨率限制 |
4.2.2 标定流程(以Eye-in-Hand为例)
- 准备工作:将标定板固定在工作台面上,确保机械臂运动范围内标定板始终在相机视野内。
- 数据采集:控制机械臂运动到10~15个不同位姿,记录每个位姿下的机械臂末端位姿(从控制器读取)和相机拍摄的标定板图像。
- 位姿求解:对每张图像进行相机外参求解,得到标定板在相机坐标系下的位姿。
- 方程构建:利用相邻位姿对构建 A 和 B 矩阵,代入 AX=XB 求解。
- 优化验证:使用全部数据做非线性优化,计算重投影误差和手眼矩阵的旋转矩阵正交性。
4.2.3 案例拆解:汽车焊接线的Eye-to-Hand标定
某汽车零部件焊接线采用Eye-to-Hand构型,相机安装在焊接工位上方2.5m处,用于引导机器人抓取不同规格的钣金件。初始标定后,抓取位置偏差达±3mm,超出工艺要求(±1mm)。分析发现:标定板固定在机械臂末端时,机械臂运动范围过大,导致部分标定板图像模糊;且标定板平面与相机光轴夹角接近90°,角点提取不稳定。
改进措施:
- 缩小机械臂运动范围,使标定板始终位于相机视野中心区域,且倾斜角控制在40°~50°。
- 增加光源照明,避免环境光变化导致图像过曝。
- 采集15组数据后,剔除重投影误差大于0.2像素的异常样本,重新求解。
优化后,抓取位置偏差降至±0.6mm,满足产线节拍要求。复盘经验:Eye-to-Hand标定中,标定板的运动轨迹应尽量覆盖实际工作区域,且避免纯平移运动(旋转轴需有变化)。
4.2.4 常见误区与总结
- 误区一:标定板运动范围过小。若机械臂末端位姿变化不足,A矩阵接近奇异,导致求解不稳定。
- 误区二:忽略相机内参更新。手眼标定前必须完成相机标定,且内参应使用最新标定结果。
- 误区三:混淆坐标系方向。Eye-in-Hand中,相机坐标系与末端坐标系的Z轴方向通常相反,需在验证阶段用已知点测试。