Halcon手眼标定实战:乒乓球替代标定板的两种模式深度解析
在工业自动化领域,视觉引导的机器人操作已成为提升产线灵活性的关键技术。传统标定板方案虽然成熟,但在狭小空间或特殊场景下往往捉襟见肘。这时,一颗直径40mm的标准乒乓球就能打开新世界的大门——它不仅成本低廉、易于获取,其完美的球体特性更使其成为理想的3D标定物替代方案。
1. 手眼标定模式的选择逻辑
1.1 安装场景的物理约束
Eye-in-Hand(眼在手上):相机安装在机器人末端执行器上,随机械臂移动。适用于:
- 需要动态跟踪目标的场景(如传送带抓取)
- 工作空间狭小,无法固定相机的环境
- 要求高精度局部定位的应用
Eye-to-Hand(眼在手外):相机固定在工作空间外。优势体现在:
- 全局视野稳定,不受机械臂运动干扰
- 适合大范围多工位监控
- 机械臂负载不受相机重量影响
实际项目中,我曾遇到一个典型案例:汽车零部件装配线上,由于机器人工作半径达3米,采用Eye-to-Hand模式后,单相机即可覆盖全部8个工位,相比移动相机方案节省了75%的硬件成本。
1.2 乒乓球标定的独特优势
| 特性 | 标定板方案 | 乒乓球方案 |
|---|---|---|
| 空间占用 | 大 | 极小 |
| 多角度可见性 | 受限 | 全向可见 |
| 曲面适应性 | 差 | 优秀 |
| 成本 | 高 | 极低 |
* 乒乓球模型生成示例 gen_sphere_object_model_3d_center (0, 0, 0, 20, SphereModel) convex_hull_object_model_3d (SphereModel, SphereModel)2. Eye-in-Hand模式实战详解
2.1 数据采集策略
平移组采集:保持机器人末端姿态不变,在XYZ方向各移动5-10个点位
- 每个点位确保乒乓球完整出现在视野中
- 移动间距建议为球直径的1.5-2倍
旋转组采集:固定TCP位置,进行Rx/Ry/Rz轴旋转
- 每次旋转角度建议15°-30°
- 至少覆盖两个旋转自由度
* 典型位姿序列示例 Pose1 := [100, 50, 200, 0, 0, 0] // 初始位姿 Pose2 := [120, 50, 200, 0, 0, 0] // X平移 Pose3 := [100, 70, 200, 0, 0, 0] // Y平移 Pose4 := [100, 50, 220, 0, 0, 0] // Z平移 Pose5 := [100, 50, 200, 30, 0, 0] // Rx旋转2.2 核心算法实现
关键点在于坐标系转换链:Camera → Target → Base ← Gripper。pose_invert算子的使用是精度的关键:
* 机器人位姿求逆转换 pose_invert (RobotPose, InvertedPose) vector_to_hom_mat3d ('rigid', BallXs, BallYs, BallZs, // 相机坐标系下的球心坐标 InvertedPose.X, InvertedPose.Y, InvertedPose.Z, // 基坐标系下的TCP坐标 HomMat3D)3. Eye-to-Hand模式的差异化处理
3.1 数据采集的逆向思维
与Eye-in-Hand模式相反,此时需要:
- 将乒乓球固定在机器人末端
- 相机观察固定位置的球体移动
- 仍保持平移组和旋转组的采集策略
3.2 算法实现的关键差异
- 不需要对机器人位姿求逆
- 旋转组计算时需考虑工具坐标系偏移
* 眼在手外模式的旋转组处理 pose_to_hom_mat3d (RobotPose, HomMat3D) create_matrix (3, 4, number(HomMat3D), RT) get_sub_matrix (RT, 0, 0, 3, 3, RotationMatrix) mult_matrix (RotationMatrix, CalibrationR, 'AB', CombinedR)4. 精度验证与误差分析
4.1 重投影误差计算
通过将标定结果反向投影到机器人坐标系,可直观评估标定质量:
affine_trans_point_3d (HomMat3D, MeasuredX, MeasuredY, MeasuredZ, ProjectedX, ProjectedY, ProjectedZ) * 计算欧氏距离误差 distance_pp_3d (ProjectedX, ProjectedY, ProjectedZ, GroundTruthX, GroundTruthY, GroundTruthZ, ErrorDistance)4.2 常见问题排查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 平移组误差大 | 移动距离不足 | 增大点位间距 |
| 旋转组误差大 | 旋转轴单一 | 增加多轴复合旋转 |
| 整体误差不稳定 | 乒乓球表面反光 | 使用哑光喷漆处理球体 |
| Z方向误差显著 | 深度测量不准 | 检查相机标定参数 |
在最近的一个电池组装项目中,通过优化采集策略(平移组12点位+旋转组24姿态),最终将手眼标定误差控制在0.3mm以内,完全满足±0.5mm的工艺要求。实际调试中发现,当环境光照强度超过1500lux时,乒乓球的高光点会导致球心定位偏差增大30%,通过加装偏振滤镜后问题得到解决。