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 的线性方程。这就是旋转与平移解耦求解的基础。
旋转方程求解: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 眼在手外)。