手眼标定 (Hand-Eye Calibration)
1. 坐标系定义与变换
在手眼标定系统中,我们主要关注以下四个关键坐标系及其相互之间的变换关系。
坐标系定义
- \(\textbf{W}\) (World): 基坐标系,机械臂的固定底座坐标系。
- \(\textbf{G}\) (Gripper): 末端执行器坐标系(或法兰坐标系),随机械臂运动。
- \(\textbf{C}\) (Camera): 相机坐标系,随相机移动(眼在手上)。
- \(\textbf{B}\) (Board): 标定板坐标系,固定在空间中的某个位置(眼在手上场景)。
坐标系变换
- \({}^{W}_G\textbf{R}\): 基坐标系到夹爪坐标系的变换(由机械臂正运动学已知)。
- \({}^{G}_C\textbf{R}\): 夹爪坐标系到相机坐标系的变换(待求解的未知量 \(X\))。
- \({}^{C}_B\textbf{R}\): 相机坐标系到标定板坐标系的变换(由相机拍摄标定板图像解算得到)。
2. 手眼标定理论
手眼标定的核心目的是求解相机相对于末端执行器的固定变换矩阵 \(X\)(即 \({}^{G}_C\textbf{R}\))。
求解原理
我们通过控制机械臂移动到不同的位置 \(i\) 和 \(j\),并在每个位置拍摄标定板。对于任意两个位置,空间中标定板相对于基坐标系的位姿应该是固定的(或者形成闭环链),从而建立方程。
-
建立闭环方程 对于任意两个时刻 \(i\) 和 \(j\),从基坐标系出发,经由不同的路径到达标定板坐标系,其结果应该是相等的:
\[ {}^{W}_G\textbf{R}_i \cdot {}^{G}_C\textbf{R} \cdot {}^{C}_B\textbf{R}_i = {}^{W}_G\textbf{R}_j \cdot {}^{G}_C\textbf{R} \cdot {}^{C}_B\textbf{R}_j \] -
变换整理 将上式右侧的 \({}^{C}_B\textbf{R}_j\) 移到左侧(右乘其逆矩阵):
\[ {}^{W}_G\textbf{R}_i \cdot {}^{G}_C\textbf{R} \cdot {}^{C}_B\textbf{R}_i \cdot {}^{C}_B\textbf{R}^{-1}_j = {}^{W}_G\textbf{R}_j \cdot {}^{G}_C\textbf{R} \] -
分离未知量 将上式左侧的 \({}^{W}_G\textbf{R}_i\) 移到右侧(左乘其逆矩阵):
\[ {}^{G}_C\textbf{R} \cdot \left( {}^{C}_B\textbf{R}_i \cdot {}^{C}_B\textbf{R}^{-1}_j \right) = \left( {}^{W}_G\textbf{R}^{-1}_i \cdot {}^{W}_G\textbf{R}_j \right) \cdot {}^{G}_C\textbf{R} \] -
构建 \(AX=XB\) 模型 定义以下中间变量:
- \(A = {}^{W}_G\textbf{R}^{-1}_i \cdot {}^{W}_G\textbf{R}_j\) (机械臂两次运动之间的相对变换)
- \(B = {}^{C}_B\textbf{R}_i \cdot {}^{C}_B\textbf{R}^{-1}_j\) (相机两次观测之间的相对变换)
- \(X = {}^{G}_C\textbf{R}\) (待求解的手眼变换矩阵)
则问题转化为经典的矩阵方程求解:
\[ A \cdot X = X \cdot B \]
通过收集多组 \(i, j\) 运动数据,我们可以利用数值方法(如 Tsai, Lenz, Park 等算法)解出矩阵 \(X\)。