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 知识结构图

下面这张图,把两种构型的坐标系关系和方程推导路径画清楚了。

手眼标定两种构型对比 手眼标定两种构型对比 Eye-in-Hand Base(基座) End(末端) Cam(相机) Obj(标定板) AX = XB 未知量 X:相机→末端 Eye-to-Hand Base(基座) End(末端) Cam(相机) Obj(标定板) AX = ZB 未知量 Z:相机→基座 核心区别:标定板固定(左) vs 标定板随末端运动(右) 方程形式不同,求解方法也不同

4.6 小结

这一节,我们做了两件事:

  1. 区分了两种构型:Eye-in-Hand 和 Eye-to-Hand,它们的标定目标完全不同。
  2. 推导了两个方程:AX=XB 和 AX=ZB,它们来自不同的坐标系闭环关系。