4、手眼标定问题建模:Eye-in-Hand vs Eye-to-Hand 两种构型、AX=XB 与 AX=ZB 数学方程推导
好,我们正式进入手眼标定的核心环节——问题建模。
说白了,标定就是解一个方程。但方程长什么样,取决于你的机器人怎么「看」世界。我见过不少新手,一上来就套公式,结果标定出来误差大得离谱。为什么?因为构型没搞清楚,方程选错了。
这一节,我们就来彻底理清两种构型,以及它们对应的数学方程。
4.1 两种构型:Eye-in-Hand 与 Eye-to-Hand
先看名字。Eye 是相机,Hand 是机器人末端(法兰盘)。
- Eye-in-Hand(眼在手上):相机固定在机器人末端,跟着手臂一起动。
- Eye-to-Hand(眼在手外):相机固定在工作空间外,看着机器人干活。
这两种构型,在实际项目里都很常见。我个人习惯,做精密装配时偏爱 Eye-in-Hand,因为相机离工件近,视野清晰。但做大范围抓取时,Eye-to-Hand 更省事,不用拖着相机线缆来回甩。
核心区别一句话:
Eye-in-Hand 标定的是 相机相对于末端 的位姿。
Eye-to-Hand 标定的是 相机相对于机器人基座 的位姿。
你想想看,这两种构型,标定的目标完全不同,方程自然也不一样。
4.2 Eye-in-Hand 构型与 AX=XB 方程
先讲 Eye-in-Hand。这是最常见的构型,也是很多教科书里第一个讲的。
我们来看一下坐标系关系:
- Base:机器人基座坐标系
- End:机器人末端(法兰盘)坐标系
- Cam:相机坐标系
- Obj:标定板(或固定特征点)坐标系
机器人移动末端,相机跟着动。每次移动,我们都能从机器人控制器读到末端位姿 Tbase→end,从相机拍到标定板算出相机位姿 Tcam→obj。
这里有一个关键点:标定板是固定不动的。所以,Obj 相对于 Base 的位姿是常量。
好,我们写一个闭环关系:
T_base→obj = T_base→end × T_end→cam × T_cam→obj
其中 Tend→cam 就是我们要求的 X。
现在,让机器人做两次不同的运动,得到两组位姿:
运动1: T_base→obj = A1 × X × B1
运动2: T_base→obj = A2 × X × B2
因为 Tbase→obj 不变,所以:
A1 × X × B1 = A2 × X × B2
整理一下:
(A2⁻¹ × A1) × X = X × (B2 × B1⁻¹)
令 A = A2⁻¹ × A1,B = B2 × B1⁻¹,就得到了经典的:
AX = XB
这就是 Eye-in-Hand 的核心方程。
我的经验: 解 AX=XB 时,运动幅度要大一点。平移和旋转都要有变化,否则方程会退化。我曾经因为运动太小,解出来的 X 精度很差,折腾了两天才发现是数据采集的问题。
4.3 Eye-to-Hand 构型与 AX=ZB 方程
再来看 Eye-to-Hand。这个构型,相机固定,机器人带着标定板动。
坐标系关系:
- Base:机器人基座坐标系
- End:机器人末端(法兰盘)坐标系
- Cam:相机坐标系(固定)
- Obj:标定板坐标系(固定在末端)
注意,这里标定板是装在机器人末端上的,跟着手臂一起动。
我们关心的未知量变了:这次要求的是 相机相对于机器人基座的位姿,记作 Z。
同样,写闭环关系:
T_cam→obj = Z⁻¹ × T_base→end × T_end→obj
其中 Tend→obj 是标定板相对于末端的位姿,是常量,记作 X。
做两次运动:
运动1: B1 = Z⁻¹ × A1 × X
运动2: B2 = Z⁻¹ × A2 × X
消去 X,得到:
B1 × B2⁻¹ = Z⁻¹ × (A1 × A2⁻¹) × Z
令 A = A1 × A2⁻¹,B = B1 × B2⁻¹,整理后得到:
AX = ZB
这就是 Eye-to-Hand 的核心方程。
避坑指南: 我曾经在 Eye-to-Hand 标定时,把标定板装歪了,导致 Tend→obj 不是常量。结果解出来的 Z 完全不对。后来我加了一个校验步骤:让机器人做几个不同姿态,检查标定板在相机视野里的重投影误差。如果误差波动大,说明安装有问题。
4.4 两种方程对比
| 对比项 | AX = XB(Eye-in-Hand) | AX = ZB(Eye-to-Hand) |
|---|---|---|
| 未知量 | 相机相对于末端的位姿 | 相机相对于基座的位姿 |
| 标定板位置 | 固定在工作空间 | 固定在机器人末端 |
| 方程形式 | 齐次变换矩阵的相似变换 | 齐次变换矩阵的共轭变换 |
| 求解难度 | 相对简单,解法成熟 | 稍复杂,需要两步求解 |
| 常见应用 | 精密装配、焊缝跟踪 | 大范围抓取、视觉引导 |
4.5 知识结构图
下面这张图,把两种构型的坐标系关系和方程推导路径画清楚了。
4.6 小结
这一节,我们做了两件事:
- 区分了两种构型:Eye-in-Hand 和 Eye-to-Hand,它们的标定目标完全不同。
- 推导了两个方程:AX=XB 和 AX=ZB,它们来自不同的坐标系闭环关系。