Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration)阅读笔记

这篇文章介绍了一种2D激光雷达与相机的标定方法。
Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration)阅读笔记
标定板相对于相机的位姿可以由对应的标定库获得,如ArUco、Apriltag。。。
激光雷达打在标定板上点可以由直线检测获得。
下面介绍算法的流程:
首先,定义向量NN,它平行于标定板平面的法向量,长度为标定板平面到相机的垂直距离。标定板相对与相机的位姿TT可以表示为:T=[Rt01]T=\begin{bmatrix}R & t \\ 0& 1\end{bmatrix}
NN可以表示为:
N=r3(r3Tt)N=-r_3*(r_3^T·t)
其中,r3r_3RR的第三列。这个过程我的理解是首先是将tt转换到标定板坐标系,为[r1tr2tr3t]\begin{bmatrix}-r_1·t\\-r_2·t\\-r_3·t\\\end{bmatrix},取其在ZZ轴的投影[00r3t]\begin{bmatrix}0\\0\\-r_3·t\\\end{bmatrix}再将其转换到相机坐标系下。
之后,对激光点在激光雷达坐标系下的坐标PfP^f和相机坐标系下的坐标PP有:Pf=ΦP+ΔP^f=\Phi P +\Delta,又根据向量内积性质有:NP=N2N·P = \|N\|^2,综合有:
NΦ1(PfΔ)=N2N·\Phi^{-1}(P^f-\Delta)=\|N\|^2
对于上式文章中给出了两种解法:
线性解法:
将上式转化为:
NHP^f=N2N·H\hat{P}^f=\|N\|^2
其中,H=Φ1[1000Δ01]H=\Phi ^{-1}\begin{bmatrix}1&0&\\0&0&-\Delta\\0&1&\end{bmatrix},P^f=[X,Z,1]T\hat{P}^{f}=[X,Z,1]^T
在求解HH后,可以通过下式求解ΦΔ\Phi、\Delta
Φ=[H1,H1×H2,H2]T\Phi = [H-1,-H_1\times H_2,H_2]^T
Δ=[H1,H1×H2,H2]TH3\Delta = -[H_1,-H_1\times H_2,H_2]^TH_3

非线性解法:
目标方程如下:
ij(NiNi(Φ1(PijfΔ))Ni)2\sum_i\sum_j(\frac{N_i}{\|N_i\|}·(\Phi^{-1}(P_{ij}^f-\Delta))-\|N_i\|)^2

参考:https://github.com/MegviiRobot/CamLaserCalibraTool