4. 基于AX=XB的手眼标定方程构建与求解

AX=XB 方程的来源与构建

手眼标定的核心是建立机器人末端运动与相机观测运动之间的约束。设机器人末端在两次采样间的相对位姿为 A,相机坐标系下同一运动对应的相对位姿为 B,待求的手眼变换为 X(相机相对末端的位姿,或末端相对相机的位姿,取决于配置)。在眼在手上配置中,标定板固定于世界,相机随末端运动,因此有:

A · X = X · B

其中 A 由机器人正运动学给出,B 由相机对固定标定板的位姿观测给出。将 A 和 B 分别写成旋转与平移两部分:

A = [R_A  t_A]      B = [R_B  t_B]      X = [R_X  t_X]
    [ 0    1]          [ 0    1]          [ 0    1]

展开后得到旋转方程与平移方程:

R_A · R_X = R_X · R_B          (旋转约束)
R_A · t_X + t_A = R_X · t_B + t_X   (平移约束)

旋转约束只与 R_X 有关,可先独立求解;平移约束在 R_X 已知后变为关于 t_X 的线性方程。这就是旋转与平移解耦求解的基础。

AX = XB 方程构建与求解流程 机器人末端位姿 T_robot(i) = [R_i | t_i] i = 1, 2, ..., N 正运动学输出 相机标定板位姿 T_cam(i) = [R_ci | t_ci] i = 1, 2, ..., N PnP / 标定板检测 计算相对运动 A A = T_robot(j)⁻¹ · T_robot(i) R_A, t_A 计算相对运动 B B = T_cam(j)⁻¹ · T_cam(i) R_B, t_B 构建 AX = XB 方程 R_A·R_X = R_X·R_B | R_A·t_X + t_A = R_X·t_B + t_X 旋转求解 SVD / 四元数法求 R_X 平移求解 最小二乘求 t_X 输出手眼变换 X R_X, t_X + 旋转/平移误差 误差评估

旋转方程求解:SVD 方法

旋转约束 R_A · R_X = R_X · R_B 可改写为 R_A = R_X · R_B · R_X⁻¹,即 R_A 与 R_B 是相似矩阵,具有相同的旋转角。利用这一性质,将多组相对运动堆叠为矩阵 M = Σ R_Ai · R_Biᵀ,对 M 做 SVD 分解 M = U · S · Vᵀ,则 R_X = V · Uᵀ(需处理行列式为负的情况)。

平移方程求解:最小二乘

旋转求解完成后,平移约束变为线性方程:

(R_Ai - I) · t_X = R_X · t_Bi - t_Ai

将 N 组运动堆叠为 C · t_X = d,其中 C 为 3N×3 矩阵,d 为 3N×1 向量,用最小二乘求解 t_X = (CᵀC)⁻¹Cᵀd。

误差评估与结果判断

求解完成后,用以下指标判断标定质量:

  • 旋转误差:对每组运动计算 ΔR = R_Ai · R_X - R_X · R_Bi,取旋转矩阵对应的角度误差,统计均值与最大值。
  • 平移误差:计算 Δt = (R_Ai - I) · t_X - (R_X · t_Bi - t_Ai),取模长,统计均值与最大值。
  • 判断依据:旋转误差均值通常应小于 0.5°,平移误差均值应小于 2 mm(具体阈值取决于机器人重复定位精度与相机检测精度)。若误差偏大,需检查运动激励是否充分、标定板位姿是否准确。
实操提示:构建方程时,建议至少采集 10 组以上运动,且运动应包含绕不同轴的旋转,避免所有旋转轴共线导致 M 矩阵秩亏。若使用四元数表示旋转,可直接构建线性方程求解,避免 SVD 中的符号歧义。
常见问题:若旋转误差正常但平移误差很大,通常是因为机器人末端旋转中心与相机光心不重合,或标定板在相机中的平移观测存在系统偏差。此时应检查手眼变换的物理含义是否与配置一致(眼在手上 vs 眼在手外)。