4、相机标定:内参、外参、畸变模型、标定板与标定流程,手眼标定(Eye-in-Hand / Eye-to-Hand)

在3D机器视觉引导工业机器人Pick and Place作业中,相机标定是连接“像素坐标”与“机器人世界坐标”的桥梁。若标定精度不足,后续的3D点云重建、目标识别与抓取位姿解算都将失去物理意义。本章将系统拆解相机内参、外参、畸变模型、标定板设计、标定流程以及手眼标定(Eye-in-Hand与Eye-to-Hand)的核心原理与工程落地方法。

相机标定与手眼标定工程链路图 相机标定(内参/外参/畸变) 内参矩阵 K fx, fy, cx, cy 像素-物理映射 畸变模型 k1,k2,p1,p2,k3 径向/切向校正 外参:R(旋转) | t(平移) 标定板:棋盘格/圆点阵 手眼标定 Eye-in-Hand 相机随机械臂运动 AX = XB Eye-to-Hand 相机固定于环境 AX = XB 标定板固定于机器人工作台 输出:相机→机器人基座变换矩阵 最终目标:像素坐标 → 机器人基座坐标 → 抓取位姿 精度要求:平移误差 < 1mm,旋转误差 < 0.5°

4.1 相机内参、外参与畸变模型

4.1.1 核心原理:从三维世界到像素的映射

相机成像本质上是将三维空间点(Xw, Yw, Zw)通过刚体变换(外参)映射到相机坐标系,再通过透视投影(内参)映射到图像平面,最后叠加镜头畸变得到实际像素坐标。内参矩阵K描述了焦距(fx, fy)与主点偏移(cx, cy),其物理意义是像素坐标系与物理成像平面之间的缩放与平移关系。外参矩阵由旋转矩阵R和平移向量t组成,表示相机坐标系相对于世界坐标系的位姿。

畸变模型主要分为径向畸变(k1, k2, k3)与切向畸变(p1, p2)。径向畸变源于镜头曲率,导致直线在图像边缘弯曲;切向畸变源于镜头与成像平面不平行,产生梯形失真。OpenCV与Halcon均采用Brown-Conrady模型进行校正,校正公式为:

x_corrected = x * (1 + k1*r² + k2*r⁴ + k3*r⁶) + 2*p1*x*y + p2*(r² + 2*x²)
y_corrected = y * (1 + k1*r² + k2*r⁴ + k3*r⁶) + p1*(r² + 2*y²) + 2*p2*x*y

其中r² = x² + y²,x、y为归一化平面坐标。工程中,若使用广角镜头或低畸变镜头,k3通常可忽略;但使用鱼眼镜头时,必须引入k3甚至更高阶项。

4.1.2 判断方法:如何评估标定质量

标定质量的核心指标是重投影误差(Reprojection Error),即标定板角点的实际像素坐标与通过内外参反投影得到的像素坐标之间的均方根误差。经验阈值如下:

应用场景允许最大重投影误差推荐标定板图像数
Pick and Place(抓取)< 0.15 pixel15-20张
高精度测量< 0.05 pixel25-30张
视觉引导装配< 0.1 pixel20-25张

此外,还需检查标定板在不同姿态下的覆盖范围:图像中心、四角、近距、远距均应包含标定板,避免出现“平面标定”导致的病态矩阵。

4.1.3 案例拆解:3D相机标定中的常见问题

某汽车零部件产线使用结构光3D相机引导机器人抓取变速箱壳体。初始标定后,重投影误差为0.32像素,导致抓取位置偏差达3mm。分析发现:标定板仅拍摄了12张,且全部集中在相机正前方,未覆盖视场边缘。重新采集22张图像,包含俯仰、偏航、滚转及四角位置后,重投影误差降至0.08像素,抓取偏差缩小至0.5mm以内。复盘经验:标定板姿态应覆盖相机视场的“球面”而非“平面”,且每张图像中标定板面积占比应大于15%。

4.1.4 常见误区与总结

误区1:认为标定板越大越好。实际上,标定板过大可能导致边缘角点超出畸变严重区域,反而降低标定精度。
误区2:忽略标定板平面度。亚克力板在高温下易变形,建议使用陶瓷或玻璃基板。
误区3:标定后未验证。标定完成后,应使用独立测试板(非标定板)进行验证,而非直接使用标定板本身。

4.2 标定板设计与标定流程

4.2.1 标定板选型与设计原则

标定板分为棋盘格与圆点阵两类。棋盘格角点检测精度高,但受光照反射影响较大;圆点阵对光照鲁棒性更好,且支持亚像素级圆心提取。对于3D相机(如结构光或ToF),推荐使用漫反射材质的陶瓷标定板,避免镜面反射干扰深度测量。标定板尺寸应满足:在最近工作距离下,标定板占据视场面积的1/3以上;方格边长应大于相机分辨率的5倍(例如500万像素相机,方格边长≥10mm)。

4.2.2 标准标定流程(以OpenCV为例)

  1. 采集图像:固定相机,移动标定板至不同位置与姿态,采集15-25张图像。确保标定板在图像中完整可见,且姿态差异明显。
  2. 角点检测:使用cv2.findChessboardCorners()或cv2.findCirclesGrid()提取特征点,并利用cv2.cornerSubPix()进行亚像素细化。
  3. 内参标定:调用cv2.calibrateCamera(),输入世界坐标(假设Z=0平面)与像素坐标,输出内参矩阵、畸变系数、每张图像的外参。
  4. 重投影验证:计算重投影误差,若大于阈值,剔除误差最大的图像并重新标定。
  5. 保存参数:将内参矩阵与畸变系数保存为YAML或JSON文件,供后续手眼标定与3D重建使用。

4.2.3 实战场景:3D相机标定的特殊处理

对于3D相机,除了2D内参外,还需标定深度映射参数(如结构光相机的相位-深度转换系数)。推荐使用“两步法”:先标定2D内参,再使用已知高度的平面靶标(如精密量块)标定深度方向的比例因子。某物流分拣线使用双目3D相机,在标定深度映射时发现近端(500mm)误差0.8mm,远端(1500mm)误差2.5mm。通过分段线性拟合深度误差曲线,将全量程误差控制在1.2mm以内。

4.2.4 标定流程复盘

经验提醒:标定环境的光照应尽量接近实际生产环境。若产线有强光或反光,应在标定时加入相同光源,否则标定参数在实拍时可能失效。此外,标定板应保持清洁,指纹或油污会直接影响角点检测精度。

4.3 手眼标定:Eye-in-Hand与Eye-to-Hand

4.3.1 核心原理:AX = XB 问题

手眼标定解决的是相机坐标系与机器人末端(或基座)坐标系之间的变换关系。Eye-in-Hand(眼在手上)中,相机固定在机械臂末端,标定目标是求取相机与末端之间的固定变换矩阵X;Eye-to-Hand(眼在手外)中,相机固定在工作环境上方,标定目标是求取相机与机器人基座之间的变换矩阵X。两者均通过多次移动机械臂,观测标定板在不同位姿下的外参,构建齐次方程AX = XB,其中A为机械臂末端位姿变化,B为相机外参变化。

求解AX = XB的常用方法包括Tsai-Lenz法、Park-Martin法以及基于李代数的优化方法。工程中推荐使用OpenCV的cv2.calibrateHandEye()函数,支持多种求解算法。注意:机械臂运动应包含旋转与平移的混合变化,避免纯平移或纯旋转导致方程退化。

4.3.2 操作流程与数据采集要求

步骤Eye-in-HandEye-to-Hand
1. 固定标定板标定板固定在工作台,不随机械臂运动标定板固定在机械臂末端
2. 机械臂运动控制机械臂移动至15-20个不同位姿控制机械臂移动至15-20个不同位姿
3. 数据记录记录机械臂末端位姿(T_base_to_end)与相机外参(T_cam_to_board)记录机械臂末端位姿与相机外参
4. 求解XX = T_end_to_camX = T_base_to_cam

数据采集时,机械臂位姿应覆盖多个旋转角度(如俯仰±30°、偏航±30°、滚转±30°),且平移量应大于100mm,以保证方程条件数良好。

4.3.3 案例拆解:Eye-in-Hand标定精度优化

某3C电子厂使用六轴机器人进行PCB板元件抓取,采用Eye-in-Hand方案。初次标定后,抓取位置偏差达2.8mm。分析发现:机械臂运动范围过小(仅200mm×200mm),且所有位姿的旋转角度几乎相同,导致AX = XB方程病态。重新设计采集方案:机械臂运动范围扩大至500mm×500mm,并加入3组不同俯仰角(-20°、0°、+20°)与2组滚转角(-15°、+15°)。标定后,抓取偏差降至0.6mm。复盘经验:手眼标定的精度上限受限于机械臂重复定位精度(通常±0.02mm)与相机标定精度(重投影误差<0.1像素),若偏差仍大,应优先检查机械臂法兰盘与相机安装架的机械刚性。

4.3.4 常见误区与工程建议

误区1:使用机械臂示教器读取的位姿精度不足。应通过机器人控制器API实时读取末端位姿,而非手动记录。
误区2:忽略标定板与机械臂末端的同步运动。Eye-to-Hand中标定板固定在末端,若标定板松动,将直接引入误差。
误区3:标定后未进行“手眼一致性”验证。建议在标定完成后,控制机械臂末端指向空间中的固定点,通过相机观测该点像素坐标,反算末端位姿,与机器人实际位姿对比,验证误差是否在允许范围内。

4.4 标定精度验证与系统集成

完成相机标定与手眼标定后,必须进行端到端验证。典型验证方法:在机器人工作空间内放置一个已知直径的精密钢球(如Ø25.4mm),控制机械臂末端安装探针接触球心,记录机器人坐标;同时使用相机识别球心像素坐标,通过标定参数反算机器人坐标。对比两组坐标的偏差,应小于1mm。若偏差超差,需逐项排查:相机内参是否准确、手眼标定矩阵是否收敛、机械臂DH参数是否准确、相机安装是否松动。

在系统集成阶段,建议将标定参数写入配置文件,并在每次开机时自动加载。对于温度变化较大的环境(如注塑车间),应定期(每月或每季度)重新标定,因为热胀冷缩会导致相机支架微小变形,影响外参精度。

风险提示:切勿在产线运行时进行标定操作,以免机械臂运动与标定板干涉造成安全事故。标定过程应设置安全围栏,并降低机械臂速度至安全阈值。