4. 手眼标定基础

手眼标定,说白了就是让机器人知道它的“眼睛”和“手”之间到底是什么关系。我刚开始接触这个领域时,觉得这名字挺唬人,后来才发现,它其实就是求解两个坐标系之间的变换矩阵。

但这里有个关键问题——你的相机到底装在哪?装的位置不同,标定的逻辑、算法、甚至坑点都完全不一样。今天我们就来把这两种模式掰开揉碎了讲清楚。

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

什么叫眼在手上?相机固定在机器人末端法兰盘上,跟着机械臂一起动。你想想看,相机和末端之间是刚性连接,相对位置固定不变。

核心关系:相机坐标系 → 末端坐标系 → 基坐标系

我们要求解的是:camTgripper(相机到末端的变换矩阵)

4.1.1 适用场景

  • 小范围高精度抓取:比如桌面上的螺丝、芯片、小零件
  • 需要近距离观察:相机离目标近,分辨率高,细节看得清
  • 目标位置不固定:传送带上的工件、料框里的散件

4.1.2 我在项目中遇到的典型问题

有一次做手机中框抓取,相机装在手上。标定完一切正常,但一跑起来,抓取点总是偏那么一两毫米。排查了半天,发现是末端负载变化导致法兰盘轻微变形。嗯,这里要注意——眼在手上对末端刚度要求很高。

我的习惯:标定前先让机器人带着相机走一遍全姿态,看看标定板在不同角度下的成像质量。如果某个角度图像模糊,那这个姿态的数据就别用了。

4.1.3 标定流程简述

  1. 固定标定板在工作空间内(不动)
  2. 控制机器人运动到 N 个不同姿态
  3. 每个姿态下:记录末端位姿 + 拍摄标定板图像
  4. 提取标定板角点,求解相机外参
  5. 构建方程 AX = XB,求解 camTgripper

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

眼在手外就好理解了——相机固定安装在机器人外部,比如架在工位上方、侧面,或者装在支架上。相机不动,机器人动。

核心关系:相机坐标系 → 基坐标系 → 末端坐标系

我们要求解的是:camTbase(相机到机器人基座的变换矩阵)

4.2.1 适用场景

  • 大范围作业:比如整个工作台、传送带区域
  • 重载或大工件:相机装在手上可能干涉或超载
  • 多机器人共用相机:一台相机给多台机械臂提供视觉信息

4.2.2 避坑指南

我曾经在一个汽车零部件项目中踩过坑。相机装在工位上方,标定完精度还行,但运行一段时间后,抓取偏差越来越大。后来发现是车间温度变化导致支架热胀冷缩,相机位置发生了微米级偏移。所以——眼在手外一定要考虑环境稳定性。

注意:眼在手外模式下,如果相机支架松动或受到碰撞,必须重新标定。我建议每次换产前都做一次快速验证。

4.2.3 标定流程简述

  1. 在机器人末端安装标定板
  2. 控制机器人运动到 N 个不同姿态
  3. 每个姿态下:记录末端位姿 + 相机拍摄标定板
  4. 提取标定板角点,求解相机外参
  5. 构建方程,求解 camTbase

4.3 两种模式的核心对比

对比维度 眼在手上 眼在手外
相机安装位置 机器人末端 外部固定
求解目标 camTgripper camTbase
标定板位置 固定在工作空间 装在机器人末端
视野范围 随机器人移动,局部 固定,全局
精度影响因素 末端刚度、负载变化 支架稳定性、环境温度
典型应用 小零件抓取、装配 大工件定位、码垛

4.4 如何选择?我的经验法则

很多新手会问:到底选哪种?我的回答是——看你的工件和场景。

  • 工件小、精度要求高、工作范围小 → 眼在手上
  • 工件大、工作范围大、环境稳定 → 眼在手外
  • 不确定? 我个人的习惯是优先考虑眼在手上,因为灵活性更高,后期调整空间大

一个小技巧:如果预算允许,可以在同一个工位同时部署两种模式。眼在手外做粗定位,眼在手上做精抓取。我在一个3C项目中就是这么干的,效果非常好。

4.5 两种模式的知识体系结构

下面这张图帮你理清两种模式的核心逻辑和关系:

手眼标定两种模式知识体系 手眼标定 眼在手上 (Eye-in-Hand) 眼在手外 (Eye-to-Hand) 相机固定在机器人末端 求解:camTgripper 标定板固定在工作空间 相机固定在外部支架 求解:camTbase 标定板装在机器人末端 核心区别: 眼在手上 → 相机随动,局部视野;眼在手外 → 相机固定,全局视野

4.6 一个容易混淆的点

我经常被问到:标定板到底放哪?其实记住一句话就行——标定板放在不动的那一侧。

  • 眼在手上:相机动,标定板不动 → 标定板固定
  • 眼在手外:相机不动,机器人动 → 标定板装在机器人末端

这个逻辑想通了,后面学标定算法就顺了。

一句话总结:眼在手上适合灵活抓取,眼在手外适合稳定大范围。没有的好坏,只有合不合适的场景。