4、手眼标定基础:眼在手上与眼在手外的区别与适用场景

说到手眼标定,很多刚入行的朋友第一反应就是「好难」。其实说白了,就是搞清楚相机和机器人手臂之间的位置关系。你想想看,机器人要抓一个零件,它得知道零件在哪儿。但相机看到的坐标,和机器人手臂的坐标,是两个不同的坐标系。

那怎么把这两个坐标系关联起来?这就是手眼标定要干的事。

我个人习惯把这个问题分成两类:眼在手上(Eye-in-Hand)和眼在手外(Eye-to-Hand)。这两种方式,从安装到算法,再到适用场景,差别还挺大的。

4.1 眼在手上(Eye-in-Hand)

什么叫眼在手上?相机装在机器人末端,跟着机械臂一起动。相机看到的视野,会随着机器人姿态的变化而变化。

这种配置下,标定的目标是求相机坐标系到机器人末端坐标系的变换矩阵。我一般记作 camTend 或 X。

核心公式: AX = XB
其中 A 是机器人末端的位姿变化,B 是相机观测到的标定板位姿变化。

我在项目中遇到过不少用眼在手上的场景。比如汽车焊装线上的零件抓取,机器人需要从料筐里取零件,位置不太固定。相机装在手上,靠近了拍,精度很高。

眼在手上的优点

  • 视野灵活:相机跟着机械臂走,想看哪儿就看哪儿。大零件可以分区域拍。
  • 精度高:相机离目标近,图像分辨率高,定位误差小。
  • 无遮挡问题:相机可以绕到目标上方或侧面,避开障碍物。

眼在手上的缺点

  • 标定复杂:需要机器人带着相机走多个位姿,采集多组数据。
  • 运动模糊:机器人运动时拍照,容易模糊。我一般会让机器人在拍照位短暂停顿。
  • 视野变化:每次移动,视野都变,标定板可能跑出画面。

4.2 眼在手外(Eye-to-Hand)

眼在手外,相机固定安装在机器人外部,比如天花板上、支架上。相机不动,机器人动。

这种配置下,标定的目标是求相机坐标系到机器人基坐标系的变换矩阵。我记作 camTbase。

核心公式: AX = XB(形式一样,但 A 和 B 的含义不同)
这里的 A 是机器人末端到基座的变换,B 是标定板在相机坐标系下的位姿变化。

眼在手外适合什么场景?我记得有一次做物流分拣项目,传送带上的包裹源源不断。相机固定在上方,拍一张全景图,机器人根据坐标去抓。这种场景下,眼在手外就很合适。

眼在手外的优点

  • 标定一次管很久:相机固定不动,标定完成后,只要不移动相机,就不用重新标。
  • 视野稳定:每次拍照,视野都一样,标定板不会跑出画面。
  • 适合大范围:相机可以架高,覆盖整个工作区域。

眼在手外的缺点

  • 容易遮挡:机器人或工件可能挡住相机视线。
  • 精度受限:相机离目标远,像素当量(mm/pixel)大,精度不如眼在手上。
  • 安装要求高:相机支架必须稳固,不能有振动。

4.3 两种方式的对比

我整理了一个表格,方便你对比。嗯,这个表格我用了很多次,每次培训都拿出来讲。

对比项 眼在手上(Eye-in-Hand) 眼在手外(Eye-to-Hand)
相机安装位置 机器人末端 机器人外部(固定)
标定目标 相机 → 末端 相机 → 基座
标定频率 较高(换工具需重标) 较低(一次标定长期使用)
视野范围 小、灵活 大、固定
定位精度 高(近距拍摄) 中等(远距拍摄)
遮挡问题 不易遮挡 容易遮挡
运动模糊 需注意 无(相机静止)
典型应用 抓取、装配、焊接 分拣、码垛、检测

4.4 如何选择?

你可能会问,那我到底该用哪种?其实没有的好坏,关键看场景。

我个人有几个判断原则:

  1. 看工作范围:如果目标位置分散、范围大,优先考虑眼在手外。如果目标集中、需要高精度,眼在手上更合适。
  2. 看遮挡情况:如果机器人动作过程中会挡住相机,那就别犹豫,用眼在手上。
  3. 看精度要求:需要亚毫米级精度?眼在手上。毫米级就够了?眼在手外也能干。
  4. 看维护成本:不想频繁标定?眼在手外。愿意花时间调参?眼在手上上限更高。
我的经验: 如果项目预算允许,我建议两种都装上。眼在手外做粗定位,眼在手上做精定位。这种「粗精结合」的方案,在3C电子装配中很常见。

4.5 知识结构图

下面这张图,是我自己画的手眼标定知识结构。你可以看到两种方式的定位关系。

手眼标定知识结构 手眼标定 眼在手上 眼在手外 相机 → 机器人末端 公式:AX = XB 适用:抓取、装配、焊接 相机 → 机器人基座 公式:AX = XB 适用:分拣、码垛、检测 两种方式的核心公式形式相同,但 A 和 B 的物理含义不同,求解方法也有差异

4.6 避坑指南

最后,分享几个我踩过的坑。

我曾经犯过的错:
  • 标定板太小:眼在手上时,标定板要足够大,保证机器人移动到任何位姿,相机都能看到完整的标定板。我第一次做的时候,标定板只有A4纸大小,结果机器人一偏,标定板就跑出视野了。
  • 忽略机器人运动学误差:机器人本身的定位精度会影响标定结果。尤其是老旧的机器人,关节间隙大,标定出来的结果可能不准。
  • 拍照时机不对:眼在手上时,一定要等机器人完全停止再拍照。我见过有人边运动边拍照,结果图像模糊,标定失败。

嗯,关于手眼标定的基础概念,就讲这么多。你只要记住:眼在手上求的是相机到末端的变换,眼在手外求的是相机到基座的变换。选哪种,看你的应用场景。