3. 手眼标定基础
手眼标定,说白了就是让机器人知道它的「手」和「眼」之间到底是个什么关系。你想想看,相机看到了一个零件,但机器人要去抓它,这中间缺了一个坐标变换。没有这个变换,机器人根本不知道往哪儿伸手。
我刚开始做这个的时候,觉得标定就是个数学公式套一套的事。后来在产线上被坑过几次,才明白——选错标定方式、用错标定板,后面全是白干。今天咱们就把这两个核心问题聊透。
3.1 两种手眼关系:Eye-in-Hand vs Eye-to-Hand
先看一张图,把两种结构的核心逻辑理清楚。
3.2 Eye-in-Hand:相机跟着手走
这种方案,相机装在机器人末端法兰上。机器人动,相机跟着动。标定要解的是 相机坐标系到末端坐标系的变换矩阵,记作 T_cam_to_end。
核心公式(AX = XB):
标定过程中,机器人移动多个位姿,在每个位姿下拍摄固定标定板。通过机器人运动学得到末端位姿变化 A,通过视觉得到相机位姿变化 B,求解 X 满足 AX = XB。
优点:
- 相机视野随末端移动,可以近距离观察目标,精度高
- 适合抓取、装配等需要精细定位的场景
缺点:
- 标定板必须固定在工作空间内,不能移动
- 机器人运动范围受限时,标定数据采集困难
我的经验: 做 Eye-in-Hand 标定时,我习惯让机器人走 15-20 个不同姿态。别只在一个平面内转,要让相机从不同角度看到标定板。平移和旋转都要覆盖,不然解出来的矩阵在某个方向上会「飘」。
3.3 Eye-to-Hand:相机固定,手在下面动
相机固定在工作空间上方,机器人末端带着标定板移动。标定要解的是 相机坐标系到机器人基座坐标系的变换矩阵,记作 T_cam_to_base。
公式形式上还是 AX = XB,但 A 和 B 的含义变了——A 是机器人末端位姿变化,B 是标定板在相机视野中的位姿变化。
优点:
- 相机视野固定,适合大范围监控
- 标定板固定在末端,采集数据灵活
缺点:
- 相机离目标远,精度受分辨率限制
- 标定板遮挡问题需要特别注意
避坑指南: 我曾经遇到过一个 Eye-to-Hand 标定失败的情况,折腾了两天才发现——标定板装反了。标定板有正反面,棋盘格或圆点阵列必须在相机视野内清晰可见。装反了,算法检测到的角点全是错的。
3.4 两种方案怎么选?
| 对比维度 | Eye-in-Hand | Eye-to-Hand |
|---|---|---|
| 相机安装位置 | 机器人末端 | 固定支架 |
| 标定板位置 | 固定在工作空间 | 固定在机器人末端 |
| 求解变换 | T_cam_to_end | T_cam_to_base |
| 视野灵活性 | 高,随末端移动 | 低,固定视野 |
| 近距离精度 | 高 | 受限于相机分辨率 |
| 标定数据采集 | 需机器人多姿态运动 | 需标定板多姿态摆放 |
| 典型应用 | 抓取、装配、焊接 | 码垛、分拣、大范围定位 |
我个人建议:如果你的工作空间小、目标零件小、对抓取精度要求高,选 Eye-in-Hand。如果工作空间大、机器人活动范围广、相机需要覆盖整个区域,选 Eye-to-Hand。
3.5 标定板选择与制作规范
标定板选不对,标定精度直接崩。我见过有人用 A4 纸打印棋盘格贴在纸板上,结果标定出来的矩阵误差 5 毫米以上。嗯,这种「省钱」方式,最后往往更费钱。
3.5.1 常见标定板类型
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 棋盘格(Checkerboard) | 角点检测稳定,算法成熟 | 通用标定,精度要求中等 |
| 圆点阵列(Circle Grid) | 圆心定位精度高,抗畸变好 | 高精度标定,大畸变镜头 |
| ChArUco 板 | 结合棋盘格与 ArUco 编码 | 需要自动识别标定板 ID |
| AprilTag | 编码信息丰富,鲁棒性强 | 多相机系统、动态标定 |
我的习惯: 做 3D 视觉标定,我优先用 圆点阵列。圆心检测精度比角点高一个量级,尤其当镜头畸变较大时,圆心的亚像素定位更稳定。棋盘格在边缘畸变大的区域,角点会「跑偏」。
3.5.2 标定板制作规范
不管用哪种标定板,以下几个参数必须严格控制:
- 平面度: 标定板必须贴在刚性平板上,平面度误差 < 0.1 mm。陶瓷板或玻璃板最佳,亚克力板次之。
- 尺寸精度: 棋盘格边长或圆点间距的加工误差 < 0.05 mm。用高精度打印机或工业印刷制作。
- 对比度: 黑白区域反射率差异 > 80%。哑光材质,避免反光。
- 环境适应性: 如果产线温度变化大,选热膨胀系数低的材料(如石英玻璃)。
避坑指南: 我曾经在一条产线上做标定,白天标定结果正常,晚上就偏了。查了半天,发现是标定板用的亚克力板,晚上车间温度降了 10 度,亚克力收缩了 0.3 mm。从那以后,我要求所有标定板必须用陶瓷或玻璃基底。
3.5.3 标定板尺寸怎么定?
标定板尺寸取决于相机视野和标定距离。一个经验公式:
标定板边长 ≈ 视野短边的 1/3 ~ 1/2
举个例子:相机视野是 600 mm × 400 mm,标定板边长取 150 mm ~ 200 mm 比较合适。太小了,角点数量不够;太大了,边缘畸变影响标定精度。
| 相机视野(mm) | 推荐标定板尺寸(mm) | 棋盘格数量 |
|---|---|---|
| 300 × 200 | 80 ~ 100 | 7 × 5 |
| 600 × 400 | 150 ~ 200 | 9 × 7 |
| 1000 × 700 | 250 ~ 350 | 11 × 9 |
| 1500 × 1000 | 400 ~ 500 | 13 × 11 |
3.6 标定流程要点
不管 Eye-in-Hand 还是 Eye-to-Hand,标定流程都遵循以下步骤:
- 准备标定板: 按规范制作,测量实际尺寸输入标定程序
- 采集数据: 机器人走 15-20 个位姿,每个位姿记录机器人关节角和标定板图像
- 角点/圆心检测: 用 OpenCV 或 Halcon 提取特征点,亚像素精度
- 求解变换矩阵: 用 Tsai 法或 Park 法解 AX = XB
- 验证标定结果: 用已知点验证重投影误差,误差 < 0.5 mm 算合格
验证方法: 标定完成后,让机器人末端带一个尖点去触碰工作空间内的一个固定尖点。相机检测尖点位置,机器人根据标定结果去抓——如果偏差在 1 mm 以内,标定合格。