4. 手眼标定基础:眼在手上与眼在手外的区别与适用场景
手眼标定,说白了就是让机器人知道它的“眼睛”和“手”之间到底是什么关系。我刚开始接触这个领域时,觉得这名字挺唬人,后来才发现,它其实就是求解两个坐标系之间的变换矩阵。
但这里有个关键问题——你的相机到底装在哪?装的位置不同,标定的逻辑、算法、甚至坑点都完全不一样。今天我们就来把这两种模式掰开揉碎了讲清楚。
4.1 眼在手上(Eye-in-Hand)
什么叫眼在手上?相机固定在机器人末端法兰盘上,跟着机械臂一起动。你想想看,相机和末端之间是刚性连接,相对位置固定不变。
核心关系:相机坐标系 → 末端坐标系 → 基坐标系
我们要求解的是:camTgripper(相机到末端的变换矩阵)
4.1.1 适用场景
- 小范围高精度抓取:比如桌面上的螺丝、芯片、小零件
- 需要近距离观察:相机离目标近,分辨率高,细节看得清
- 目标位置不固定:传送带上的工件、料框里的散件
4.1.2 我在项目中遇到的典型问题
有一次做手机中框抓取,相机装在手上。标定完一切正常,但一跑起来,抓取点总是偏那么一两毫米。排查了半天,发现是末端负载变化导致法兰盘轻微变形。嗯,这里要注意——眼在手上对末端刚度要求很高。
我的习惯:标定前先让机器人带着相机走一遍全姿态,看看标定板在不同角度下的成像质量。如果某个角度图像模糊,那这个姿态的数据就别用了。
4.1.3 标定流程简述
- 固定标定板在工作空间内(不动)
- 控制机器人运动到 N 个不同姿态
- 每个姿态下:记录末端位姿 + 拍摄标定板图像
- 提取标定板角点,求解相机外参
- 构建方程
AX = XB,求解camTgripper
4.2 眼在手外(Eye-to-Hand)
眼在手外就好理解了——相机固定安装在机器人外部,比如架在工位上方、侧面,或者装在支架上。相机不动,机器人动。
核心关系:相机坐标系 → 基坐标系 → 末端坐标系
我们要求解的是:camTbase(相机到机器人基座的变换矩阵)
4.2.1 适用场景
- 大范围作业:比如整个工作台、传送带区域
- 重载或大工件:相机装在手上可能干涉或超载
- 多机器人共用相机:一台相机给多台机械臂提供视觉信息
4.2.2 避坑指南
我曾经在一个汽车零部件项目中踩过坑。相机装在工位上方,标定完精度还行,但运行一段时间后,抓取偏差越来越大。后来发现是车间温度变化导致支架热胀冷缩,相机位置发生了微米级偏移。所以——眼在手外一定要考虑环境稳定性。
注意:眼在手外模式下,如果相机支架松动或受到碰撞,必须重新标定。我建议每次换产前都做一次快速验证。
4.2.3 标定流程简述
- 在机器人末端安装标定板
- 控制机器人运动到 N 个不同姿态
- 每个姿态下:记录末端位姿 + 相机拍摄标定板
- 提取标定板角点,求解相机外参
- 构建方程,求解
camTbase
4.3 两种模式的核心对比
| 对比维度 | 眼在手上 | 眼在手外 |
|---|---|---|
| 相机安装位置 | 机器人末端 | 外部固定 |
| 求解目标 | camTgripper | camTbase |
| 标定板位置 | 固定在工作空间 | 装在机器人末端 |
| 视野范围 | 随机器人移动,局部 | 固定,全局 |
| 精度影响因素 | 末端刚度、负载变化 | 支架稳定性、环境温度 |
| 典型应用 | 小零件抓取、装配 | 大工件定位、码垛 |
4.4 如何选择?我的经验法则
很多新手会问:到底选哪种?我的回答是——看你的工件和场景。
- 工件小、精度要求高、工作范围小 → 眼在手上
- 工件大、工作范围大、环境稳定 → 眼在手外
- 不确定? 我个人的习惯是优先考虑眼在手上,因为灵活性更高,后期调整空间大
一个小技巧:如果预算允许,可以在同一个工位同时部署两种模式。眼在手外做粗定位,眼在手上做精抓取。我在一个3C项目中就是这么干的,效果非常好。
4.5 两种模式的知识体系结构
下面这张图帮你理清两种模式的核心逻辑和关系:
4.6 一个容易混淆的点
我经常被问到:标定板到底放哪?其实记住一句话就行——标定板放在不动的那一侧。
- 眼在手上:相机动,标定板不动 → 标定板固定
- 眼在手外:相机不动,机器人动 → 标定板装在机器人末端
这个逻辑想通了,后面学标定算法就顺了。
一句话总结:眼在手上适合灵活抓取,眼在手外适合稳定大范围。没有的好坏,只有合不合适的场景。