4、手眼标定:眼在手上与眼在手外的标定原理、标定流程、误差分析与优化
手眼标定是机械臂视觉引导拣选系统中连接“眼睛”(相机)与“手”(机械臂)的关键环节。其本质是求解相机坐标系与机械臂末端(或基座)坐标系之间的空间变换矩阵。在机器人分拣抓取场景中,若手眼关系标定不准,即使视觉算法识别精度再高,机械臂也无法准确抓取目标。本章将系统讲解眼在手上(Eye-in-Hand)与眼在手外(Eye-to-Hand)两种模式的标定原理、完整流程、误差来源及优化策略,并结合实际拣选案例进行拆解。
上图展示了两种手眼标定模式的核心坐标系关系。眼在手外模式中,相机固定于工作空间上方,标定板安装在机械臂末端,通过移动机械臂获取多组位姿数据,求解相机与机械臂基座间的固定变换;眼在手上模式中,相机刚性安装于机械臂末端,标定板固定在工作台,通过机械臂带动相机运动,求解相机与机械臂末端间的固定变换。两种模式的标定数学本质均为求解 AX=XB 形式的矩阵方程,但数据采集策略和误差特性差异显著。
4.1 标定原理与数学模型
手眼标定的核心是求解齐次变换矩阵方程。设机械臂末端在基座坐标系下的位姿为 Tbe(由机械臂运动学正解获得),相机观测标定板得到标定板在相机坐标系下的位姿为 Tct,标定板在机械臂末端坐标系下的位姿为 Tet(眼在手外)或相机在末端坐标系下的位姿为 Tec(眼在手上)。对于眼在手外,有:
T_be1 * T_et = T_bc * T_ct1
T_be2 * T_et = T_bc * T_ct2
...
消去 T_et,可得:T_bc = T_be2 * inv(T_be1) * T_bc * inv(T_ct2) * T_ct1
即:AX = XB 形式,其中 A = inv(T_be2)*T_be1,B = inv(T_ct2)*T_ct1,X = T_bc
对于眼在手上,同理可得 T_ec 满足 AX=XB。求解该方程通常采用两步法:先求解旋转矩阵(利用罗德里格斯变换或四元数),再求解平移向量。常用算法包括 Tsai-Lenz 法、Park-Martin 法以及基于李代数的优化方法。
| 对比维度 | 眼在手外(Eye-to-Hand) | 眼在手上(Eye-in-Hand) |
|---|---|---|
| 相机安装位置 | 固定于工作空间上方/侧面 | 安装于机械臂末端法兰 |
| 标定板位置 | 安装在机械臂末端 | 固定在工作台/地面 |
| 求解目标 | Base→Cam 变换(固定) | End→Cam 变换(固定) |
| 视野特点 | 视野固定,覆盖整个工作区 | 视野随机械臂运动,可近距离观察目标 |
| 标定数据采集 | 移动机械臂使标定板在相机视野内变换姿态 | 移动机械臂使相机从不同角度观测固定标定板 |
| 典型应用场景 | 固定工位拣选、大范围定位 | 近距离精细抓取、移动目标跟踪 |
4.2 标定流程与操作步骤
无论采用哪种模式,标定流程均包含以下关键步骤。以眼在手外为例,完整流程如下:
- 准备阶段:固定相机,确保无振动;安装标定板于机械臂末端,记录标定板尺寸(如 10mm 方格,7×7 角点);连接机械臂与视觉系统,确认通信正常。
- 机械臂运动学校验:在机械臂零位下记录末端位姿,手动移动至几个已知点,验证正解精度。
- 数据采集:控制机械臂运动 15~20 个不同位姿,要求标定板始终在相机视野内,且姿态变化覆盖俯仰、偏航、翻滚各 ±30° 以上。每个位姿同时记录:机械臂末端位姿 T_be(从控制器读取)和相机检测到的标定板位姿 T_ct(通过 OpenCV solvePnP 或类似算法获得)。
- 数据预处理:剔除标定板检测置信度低(重投影误差 > 0.5 像素)的样本;检查位姿分布是否均匀,避免所有样本集中在同一区域。
- 求解计算:使用 Tsai-Lenz 或 OpenCV 的
calibrateHandEye()函数求解 X。输入为两组位姿序列:机械臂末端位姿(gripperPose)和标定板位姿(targetPose)。 - 验证与精化:将求解的 X 代入任意一组数据,计算重投影误差;若误差大于 1mm,则使用非线性优化(如 Levenberg-Marquardt)对所有参数进行全局优化。
4.3 案例拆解:分拣线手眼标定实战
某汽车零部件装配线部署了一套视觉引导拣选系统,采用眼在手外模式,相机安装于传送带上方 800mm 处,机械臂为六轴工业机器人。初始标定后,系统抓取精度仅为 ±5mm,无法满足 ±1mm 的装配要求。通过分析发现以下问题:
- 现象:在传送带中央区域抓取精度尚可(±2mm),但在视野边缘误差增大至 ±8mm。
- 根因分析:标定数据采集时,机械臂末端仅在工作空间中心区域运动,标定板未覆盖相机视野边缘;且相机镜头存在明显畸变,未进行充分的畸变校正。
- 优化措施:重新采集 25 组数据,确保标定板覆盖相机视野的四个角落和中心;使用 5×5 棋盘格标定板(角点数更多)重新进行相机内参标定,畸变系数从 0.15 降至 0.02;标定后使用 10 个验证点进行精度测试。
- 结果对比:优化后,视野边缘抓取精度提升至 ±0.8mm,中心区域 ±0.5mm,满足产线要求。
- 复盘经验:标定数据必须覆盖实际工作区域;相机内参标定与手眼标定应同步进行,不可分离;验证点应包含工作空间边界。
4.4 误差分析与优化策略
手眼标定误差主要来源于三个方面:机械臂运动学误差、相机标定误差、数据采集噪声。下表列出了主要误差源及优化方向:
| 误差来源 | 典型量级 | 优化策略 |
|---|---|---|
| 机械臂定位误差 | 0.1~1mm | 使用高精度机械臂;进行运动学参数辨识(DH 参数校准) |
| 相机内参标定误差 | 0.1~0.5 像素 | 使用高分辨率标定板;采集 20 张以上不同姿态图像;采用亚像素角点检测 |
| 标定板平面度误差 | 0.01~0.05mm | 选用陶瓷或玻璃基板标定板;避免使用柔性 PCB 标定板 |
| 数据采集噪声 | 0.1~0.3 像素 | 多次采集取平均;使用高亮度均匀光源;降低机械臂运动速度 |
| 求解算法数值误差 | 0.01~0.1mm | 增加样本数量至 20 组以上;使用非线性优化精化 |
优化手眼标定精度的核心原则是:数据多样性、位姿覆盖性、测量冗余性。在实际工程中,建议标定完成后使用 10~15 个独立验证点进行精度评估,验证点应随机分布在工作空间内,且包含不同高度平面。若验证误差超差,应优先检查机械臂运动学参数是否准确,其次检查相机内参是否可靠,最后再考虑重新采集标定数据。