1. 手眼标定概述
什么是手眼标定?
手眼标定,说白了就是让机器人知道自己的「手」和「眼」之间到底是个什么位置关系。
你想想看,机器人要抓一个杯子。它的眼睛(相机)看到了杯子在空间里的坐标,但它的手(机械臂末端)要移动过去抓。如果眼睛和手之间的坐标关系没算清楚,那手伸过去肯定抓歪了。
我刚开始做这个的时候,觉得不就是个坐标转换嘛,有什么难的?结果第一次现场调试,机器人直接把手伸到了工件后面,差点把夹具撞坏。嗯,从那以后我再也不敢小看这一步了。
手眼标定要解决的,本质上就是两个坐标系之间的变换矩阵——相机坐标系和机器人末端坐标系之间的旋转和平移关系。这个关系用一个 4×4 的齐次变换矩阵来表示:
| R t |
| 0 1 |
其中 R 是 3×3 的旋转矩阵,t 是 3×1 的平移向量。标定的目标就是算出这 12 个未知数。
核心概念:手眼标定 = 求解相机与机器人末端之间的刚体变换关系。
为什么需要手眼标定?
这个问题其实很直接。没有标定,机器人的视觉系统就是「睁眼瞎」。
我遇到过不少刚入行的朋友,他们觉得相机装好了,图像能拍到,那就行了。但实际不是这样。相机看到的是像素坐标,机器人要的是世界坐标。中间差了好几个坐标系转换:
- 像素坐标系 → 图像坐标系 → 相机坐标系
- 相机坐标系 → 机器人末端坐标系(这就是手眼标定要算的)
- 机器人末端坐标系 → 机器人基坐标系
你看,中间只要有一个环节错了,最终抓取位置就会偏。我见过最夸张的一次,标定误差差了 5 毫米,结果机器人抓一个 3 毫米的螺丝,直接抓了个空。
我的经验:手眼标定的精度直接决定了视觉引导的最终精度。标定做不好,后面算法再牛也白搭。
手眼标定的应用场景
手眼标定不是实验室里的理论游戏,它在工业现场到处都是。我挑三个最常见的场景说说:
1. 机器人抓取
这是最经典的应用。流水线上来一个工件,相机拍一下,告诉机器人「工件在哪儿」,机器人伸手去抓。
我记得有一次做汽车零部件的抓取项目,工件是随机摆放的,位置偏差很大。标定精度要求 0.5 毫米以内。我们反复做了三遍标定,最后才达到要求。那段时间我天天盯着标定板看,眼睛都快花了。
抓取场景对实时性要求高,一般用眼在手外(Eye-to-Hand)的配置,相机固定安装,机器人运动时相机不动。
2. 视觉引导
视觉引导比单纯抓取更复杂。它不仅要告诉机器人「目标在哪儿」,还要告诉机器人「怎么过去」。比如焊接、涂胶、装配这些工艺,机器人需要沿着特定的轨迹运动。
我做过一个手机壳涂胶的项目。手机壳的来料位置有偏差,相机拍完后要引导机器人调整轨迹。标定误差如果超过 1 毫米,胶水就会涂偏,产品直接报废。那批手机壳单价 200 多块,你说压力大不大?
这种场景常用眼在手上(Eye-in-Hand)的配置,相机装在机器人末端,跟着机器人一起动。
3. 自动化装配
装配是精度要求最高的场景。轴孔装配、齿轮啮合、精密零件对位,这些都需要亚毫米级的精度。
我参与过一个精密轴承装配项目,要求装配间隙 0.02 毫米。手眼标定只是其中一环,但这一环如果差了 0.1 毫米,后面再怎么调都调不回来。那次我们用了高精度标定板,还做了温度补偿——因为车间温度变化会导致机械臂热胀冷缩,标定结果也会漂。
注意:装配场景下,标定板的设计和材质选择非常关键。普通纸板标定板在精密装配中根本不够用,建议使用陶瓷或玻璃基底的标定板。
手眼标定的两种配置
刚才提到了两种配置,我整理了一个表格,方便你对比:
| 配置方式 | 相机位置 | 标定目标 | 典型应用 | 精度特点 |
|---|---|---|---|---|
| 眼在手上(Eye-in-Hand) | 装在机器人末端 | 相机与末端的变换关系 | 焊接、涂胶、检测 | 近距离精度高,远距离误差大 |
| 眼在手外(Eye-to-Hand) | 固定安装在外部 | 相机与机器人基座的变换关系 | 抓取、码垛、分拣 | 全局精度均匀,受视野限制 |
选哪种配置,取决于你的应用场景。我个人习惯是:抓取用眼在手外,工艺用眼在手上。当然也有混合配置的,但那是进阶玩法了。
手眼标定的知识体系
为了让你对整个章节有个全局认识,我画了一张知识结构图:
小结
这一章我们聊了手眼标定的基本概念。说白了,它就是让机器人的眼睛和手「对齐」的过程。没有这一步,视觉系统看到的和机器人实际做的就是两码事。
我做了这么多年机器人视觉,最大的体会就是:标定是基础,基础不牢,地动山摇。很多项目后期出问题,追根溯源都是标定没做好。所以别嫌标定麻烦,它值得你花时间。
我的建议:刚开始学手眼标定,别急着上复杂算法。先把坐标系转换搞明白,把标定板选对,把数据采好。基础打牢了,后面自然水到渠成。