手眼标定
手眼标定
基本原理
手眼标定其实是一种用于标定多传感器之间外参的有效方式。核心方程为 \[ AX = XB \] 此处假设有两种传感器C与I,其中:
- \(A = T_{C_2}^{C_1}\)是传感器C在1时刻与2时刻之间的相对位姿变换;
- \(B=T_{I_2}^{I_1}\)是传感器I在1时刻与2时刻之间的相对位姿变换;
- \(X=T_{I_2}^{C_2} = T_{I_1}^{C_1}\)是两个传感器之间的外参(外参不随时间改变);
问题求解
上述问题该如何求解呢?首先关于上面核心公式可以分为姿态和位移两部分 \[ A = \left[\begin{array}{cc} R_C & t_C \\ O_{1\times 3} & 1 \end{array}\right] \\ B = \left[\begin{array}{cc} R_I & t_I \\ O_{1\times 3} & 1 \end{array}\right] \\ X = \left[\begin{array}{cc} R & t \\ O_{1\times 3} & 1 \end{array}\right] \\ R_CR = RR_I \\ R_Ct+t_C = Rt_I + t \] 接下来,可以首先通过公式\(R_CR=RR_I\)求解旋转外参。求解的方式可以参考vins初始化中的外参标定求解方式。首先,需要将整个旋转变换公式使用四元数形式表示: \[ q_C \otimes q = q \otimes q_I \] 上述等式两边对于四元数表示的旋转外参\(q\)的乘法可以表示成如下形式 \[ Q_C^{left} * q = Q_I^{right} * q \] 其中\(Q_C^{left}\)是左乘四元数\(q_C\)在四元数乘法中对应的\(4*4\)左乘矩阵,\(Q_I^{right}\)是右乘四元数\(q_I\)在四元数乘法中对应的\(4*4\)左乘矩阵。对上式进行形式调整可得 \[ (Q_C^{left}-Q_I^{right})*q = 0 \] 利用上述多个观测可以构建一个超定方程\(Ax=0\)。对系数矩阵A(维度为\(4n*4\))进行svd分解,其中最小奇异值对应的右奇异向量就是旋转外参的四元数表示形式(一个4维向量)。
得到旋转外参后,便可以通过\(R_Ct+t_C=Rt_I+t\)轻松求出平移外参t了。