4. 手眼标定问题建模
手眼标定的核心是求解机器人末端执行器(或基座)与相机坐标系之间的空间变换关系。根据相机安装位置的不同,标定问题分为两种经典构型:眼在手外(Eye-to-Hand)和眼在手上(Eye-in-Hand)。两种构型的数学模型均基于齐次变换矩阵的闭环约束,但求解的目标矩阵和坐标链不同。
4.1 眼在手外(Eye-to-Hand)数学模型
在 Eye-to-Hand 构型中,相机固定安装在机器人工作空间之外,不随机器人运动。标定板(或特征物体)安装在机器人末端法兰盘上。相机观察标定板,同时记录机器人关节角度,从而建立约束方程。
4.1.1 坐标链与符号定义
定义以下齐次变换矩阵(4×4):
- B:机器人基座坐标系(Base)
- E:机器人末端法兰盘坐标系(End-effector)
- C:相机坐标系(Camera)
- P:标定板坐标系(Pattern/Calibration Object)
在 Eye-to-Hand 中,待求解的未知矩阵为 X = BTC(相机到机器人基座的变换)。已知量包括:
- A = BTE:机器人正运动学给出的末端到基座的变换(随关节角变化)。
- B = CTP:相机观测标定板得到的标定板到相机的变换(通过PnP或3D配准获得)。
4.1.2 闭环约束方程推导
对于机器人两个不同的位姿 i 和 j,标定板固定在末端上,因此标定板在机器人基座下的坐标是固定的(但未知)。通过坐标链传递,可以得到:
# 位姿 i 下的坐标链
<sup>B</sup>T<sub>P</sub> = <sup>B</sup>T<sub>E_i</sub> · <sup>E_i</sup>T<sub>P</sub>
# 位姿 j 下的坐标链
<sup>B</sup>T<sub>P</sub> = <sup>B</sup>T<sub>E_j</sub> · <sup>E_j</sup>T<sub>P</sub>
# 由于标定板固定在末端,<sup>E</sup>T<sub>P</sub> 是常数矩阵(记为 M)
# 同时,相机观测给出 <sup>C</sup>T<sub>P</sub>,而 <sup>B</sup>T<sub>C</sub> = X 是未知常数
# 因此:<sup>B</sup>T<sub>P</sub> = X · <sup>C</sup>T<sub>P</sub>
# 联立两个位姿,消去常数 M 和 <sup>B</sup>T<sub>P</sub>,得到:
A_i · M = X · B_i
A_j · M = X · B_j
# 两式相减消去 M,得到经典 AX = XB 形式:
(A_j⁻¹ · A_i) · X = X · (B_j⁻¹ · B_i)
令 A = Aj⁻¹ · Ai,B = Bj⁻¹ · Bi,则方程简化为:
A · X = X · B其中 A 是机器人末端运动的相对变换,B 是相机观测标定板的相对变换,X 是待求的相机到基座变换。
4.2 眼在手上(Eye-in-Hand)数学模型
在 Eye-in-Hand 构型中,相机固定在机器人末端法兰盘上,随机器人一起运动。标定板固定放置在机器人工作空间中的某个位置。相机随末端运动,在不同位姿下拍摄同一块固定标定板。
4.2.1 坐标链与符号定义
同样使用上述坐标系定义,但待求解的未知矩阵变为 X = ETC(相机到末端法兰盘的变换)。已知量包括:
- A = BTE:机器人正运动学给出的末端到基座的变换。
- B = CTP:相机观测固定标定板得到的标定板到相机的变换。
4.2.2 闭环约束方程推导
对于两个不同位姿 i 和 j,标定板固定在机器人基座坐标系下(位置固定)。通过坐标链:
# 位姿 i 下,标定板在基座下的坐标
<sup>B</sup>T<sub>P</sub> = <sup>B</sup>T<sub>E_i</sub> · <sup>E_i</sup>T<sub>C</sub> · <sup>C_i</sup>T<sub>P</sub>
# 位姿 j 下,标定板在基座下的坐标
<sup>B</sup>T<sub>P</sub> = <sup>B</sup>T<sub>E_j</sub> · <sup>E_j</sup>T<sub>C</sub> · <sup>C_j</sup>T<sub>P</sub>
# 由于标定板固定,<sup>B</sup>T<sub>P</sub> 是常数;<sup>E</sup>T<sub>C</sub> = X 是未知常数
# 两式相等,消去 <sup>B</sup>T<sub>P</sub>,得到:
A_i · X · B_i = A_j · X · B_j
# 整理成 AX = XB 形式:
(A_j⁻¹ · A_i) · X = X · (B_j · B_i⁻¹)
令 A = Aj⁻¹ · Ai,B = Bj · Bi⁻¹,则方程同样简化为:
A · X = X · B其中 A 是机器人末端运动的相对变换,B 是相机观测标定板的相对变换(注意与 Eye-to-Hand 中 B 的定义顺序相反),X 是待求的相机到末端变换。
4.3 两种构型的对比分析
| 对比维度 | 眼在手外(Eye-to-Hand) | 眼在手上(Eye-in-Hand) |
|---|---|---|
| 相机安装位置 | 固定在工作空间外 | 固定在机器人末端 |
| 标定板安装位置 | 固定在机器人末端 | 固定在工作空间内 |
| 待求解矩阵 X | BTC(相机→基座) | ETC(相机→末端) |
| 方程形式 | A · X = X · B | A · X = X · B |
| A 矩阵含义 | 末端运动的相对变换 | 末端运动的相对变换 |
| B 矩阵含义 | 相机观测标定板的相对变换(Bj⁻¹·Bi) | 相机观测标定板的相对变换(Bj·Bi⁻¹) |
| 标定板是否随动 | 是(随末端运动) | 否(固定不动) |
| 典型应用场景 | 固定视觉引导、全局定位 | 移动抓取、末端视觉伺服 |
4.4 两种构型的坐标链示意图
下图展示了两种构型的坐标链传递关系,帮助理解方程中各个矩阵的物理含义。
4.5 方程求解的数学本质
无论是 Eye-to-Hand 还是 Eye-in-Hand,最终都归结为求解矩阵方程 AX = XB。该方程中 A、B、X 均为 4×4 齐次变换矩阵,包含旋转部分 R 和平移部分 t:
X = | R_x t_x |
| 0^T 1 |
A = | R_a t_a |
| 0^T 1 |
B = | R_b t_b |
| 0^T 1 |
将上述分块代入 AX = XB,可拆解为旋转方程和平移方程:
旋转部分:R_a · R_x = R_x · R_b
平移部分:R_a · t_x + t_a = R_x · t_b + t_x
求解策略通常分为两步:
- 先求解旋转矩阵 Rx:利用旋转方程 Ra · Rx = Rx · Rb,通过轴角表示或四元数方法求解。
- 再求解平移向量 tx:将求得的 Rx 代入平移方程,转化为线性方程组求解。
4.6 两种构型的求解流程对比
下表总结了两种构型在实际标定中的操作流程差异:
| 步骤 | Eye-to-Hand 操作 | Eye-in-Hand 操作 |
|---|---|---|
| 1. 准备 | 标定板固定在机器人末端 | 标定板固定在工作空间内 |
| 2. 数据采集 | 机器人运动到 N 个位姿,记录关节角 + 相机拍摄标定板 | 机器人运动到 N 个位姿,记录关节角 + 相机拍摄标定板 |
| 3. 计算 A | 正运动学计算 BTE,再计算相对变换 A = Aj⁻¹·Ai | 正运动学计算 BTE,再计算相对变换 A = Aj⁻¹·Ai |
| 4. 计算 B | PnP 求解 CTP,再计算 B = Bj⁻¹·Bi | PnP 求解 CTP,再计算 B = Bj·Bi⁻¹ |
| 5. 求解 X | 求解 AX = XB,得到 BTC | 求解 AX = XB,得到 ETC |
| 6. 验证 | 重投影误差或3D点距离误差 | 重投影误差或3D点距离误差 |
4.7 两种构型的求解流程示意图
下图以流程图形式对比两种构型的数据处理与求解步骤:
4.8 关键总结
- 统一方程形式: 两种构型均归结为 AX = XB 矩阵方程,但 A、B、X 的物理含义不同。
- B 矩阵定义差异: Eye-to-Hand 中 B = Bj⁻¹·Bi,Eye-in-Hand 中 B = Bj·Bi⁻¹,注意顺序不可混淆。
- 求解策略一致: 先解旋转再解平移,可采用 Tsai-Lenz、Park-Martin 或非线性优化等方法。
- 数据要求: 至少两组非平行旋转运动,实际建议 15~20 组位姿以保证解的唯一性和鲁棒性。
- 误差来源: 机器人运动学误差、相机标定误差、PnP 求解误差、标定板制造误差等均会影响最终标定精度。