1. 项目背景与需求分析

大家好,我是老张。在机器视觉这行摸爬滚打了十几年,今天咱们来聊聊手眼标定。

说实话,我刚入行那会儿,觉得标定这事儿挺玄乎的。不就是让机器人知道相机在哪儿吗?后来被现实狠狠教育了几次,才明白——手眼标定是整个机器人视觉系统的基石。基础不牢,地动山摇。

1.1 什么是手眼标定?

先给个最直白的定义:手眼标定,就是求解相机坐标系与机器人坐标系之间的变换关系。

你想想看,相机能看到工件的位置,但机器人要去抓取它。相机说“工件在图像坐标(320, 240)”,机器人听不懂啊。机器人只认自己的坐标系——基座标系、工具坐标系。所以我们需要一个数学桥梁,把相机看到的坐标,翻译成机器人能执行的坐标。

这个桥梁,就是手眼标定要算出来的那个变换矩阵。说白了,就是一组旋转和平移参数。

核心公式(简化版):

机器人抓取位姿 = 手眼矩阵 × 相机检测位姿

其中,手眼矩阵 = 相机坐标系 → 机器人坐标系的刚体变换

我记得有一次在汽车零部件产线上,一个年轻工程师问我:“张工,我直接用尺子量一下相机到机器人法兰盘的距离,填进去不行吗?”

我当时就笑了。理论上可以,但实际中你量不准。相机安装有角度偏差,机器人连杆有挠度,法兰盘加工有公差。你量出来的那点误差,放到几百毫米的臂展上,末端偏差可能直接到毫米级——对于精密装配来说,这就是废品。

所以,手眼标定不是“量”出来的,是“算”出来的。通过数学优化,把各种误差平均掉,得到一个统计意义上的最优解。

1.2 为什么需要手眼标定?

这个问题,我换个角度回答你——没有手眼标定,机器人视觉就是瞎子指路。

具体来说,手眼标定解决了三个核心问题:

  1. 坐标统一:把相机看到的像素坐标,映射到机器人能执行的物理坐标。
  2. 误差补偿:消除安装误差、镜头畸变、机器人运动学误差的综合影响。
  3. 动态跟随:在Eye-in-Hand模式下,让机器人知道“我动的时候,相机看到的工件到底在哪儿”。

我做过一个项目,客户说“我们之前没做标定,也凑合能抓”。我去现场一看,确实能抓——但抓10个掉3个,剩下的还有一半位置偏了。做了手眼标定之后,抓取成功率直接干到99.5%以上。这就是差距。

避坑指南:

我曾经在一个项目中,因为赶工期,手眼标定只做了粗略的9点标定。结果产线一跑起来,工件在视野边缘时,抓取偏差直接飙到5mm。后来老老实实做了全视野的标定采集,偏差降到0.3mm以内。所以——标定精度,直接决定了你的系统能不能用。

1.3 Eye-in-Hand vs Eye-to-Hand 场景选择

这是手眼标定里最基础、也最容易搞混的问题。我见过不少工程师,选错了方案,后面整个项目推倒重来。

先看一张对比图,帮你快速建立直观印象:

Eye-in-Hand vs Eye-to-Hand 结构对比 Eye-in-Hand(眼在手上) 机器人本体 法兰盘 相机 视野随机器人移动 工件 Eye-to-Hand(眼在手外) 机器人 末端 工件 相机 视野固定 左:相机随机器人运动,视野动态变化 | 右:相机固定安装,视野覆盖工作区域

好,现在咱们具体聊聊这两种方案怎么选。

Eye-in-Hand(眼在手上)

相机装在机器人末端法兰盘上,跟着机器人一起动。这是最常见的方案。

优点:

  • 视野灵活,可以靠近工件,精度高
  • 可以多角度观察,适合复杂工件
  • 不受机器人遮挡影响

缺点:

  • 标定相对复杂(需要求解相机与法兰盘的固定变换)
  • 相机线缆需要随机器人运动,容易磨损
  • 视野范围有限,大工件需要多次拍照拼接

我的经验:

Eye-in-Hand最适合高精度、小范围、多角度的场景。比如手机零部件装配、PCB插件、精密焊接。我做过一个手机摄像头模组装配项目,用的就是Eye-in-Hand,标定精度做到0.05mm以内。

Eye-to-Hand(眼在手外)

相机固定安装在机器人工作空间上方或侧面,不随机器人运动。

优点:

  • 标定相对简单(只需要一次标定)
  • 视野覆盖整个工作区域,适合大范围定位
  • 相机线缆固定,可靠性高

缺点:

  • 容易被机器人本体遮挡
  • 距离工件远,精度受限于视野大小
  • 无法多角度观察,对工件姿态有限制

避坑指南:

我曾经在一个码垛项目中,客户坚持用Eye-in-Hand。结果因为码垛范围太大(2m×1.5m),相机每次都要移动到不同位置拍照,效率极低。后来换成Eye-to-Hand,一个固定相机覆盖整个区域,效率提升3倍。所以——别盲目追求精度,先看你的工作范围。

如何选择?一张表说清楚

对比维度 Eye-in-Hand Eye-to-Hand
精度 高(可近距离拍摄) 中等(受视野距离限制)
工作范围 小(随机器人移动) 大(固定视野覆盖)
标定复杂度 高(需要求解手眼矩阵) 低(一次标定即可)
遮挡问题 无遮挡 可能被机器人遮挡
多角度观察 支持 不支持
线缆可靠性 低(随动磨损) 高(固定安装)
典型应用 精密装配、焊接、检测 码垛、分拣、大范围定位

嗯,这里要注意一点:没有的好坏,只有合不合适的场景。我个人的习惯是:

  • 如果工件精度要求 < 0.5mm,优先考虑Eye-in-Hand
  • 如果工作范围 > 1m²,优先考虑Eye-to-Hand
  • 如果两者都有需求,可以考虑混合方案(一个Eye-to-Hand做粗定位,一个Eye-in-Hand做精定位)

本章核心要点:

  • 手眼标定 = 求解相机与机器人的坐标变换关系
  • 没有标定,视觉引导就是空中楼阁
  • Eye-in-Hand:精度高、范围小、标定复杂
  • Eye-to-Hand:范围大、精度中等、标定简单
  • 选择方案时,先看精度要求和工作范围