激光雷达与相机的联合标定技术(一)

一、前言

        由于自动驾驶、移动机器人等领域的快速发展,这些任务需要精确的环境建模能力,三维感知逐渐受到人们所关注。相机虽然是迄今为止使用最为广泛的传感器,给计算机提供丰富的方位信息和颜色信息。但是,相机非常容易受到环境光线的干扰,在许多情况下无法正常工作。在三维感知中如果只使用视觉传感器,非常容易造成事故,其解决方案直之一是多传感方式的融合以增强模型感知能力。

        较为普遍的做法是激光雷达和相机传感器的融合。为了充分利用来自不同传感器的信息,需要将视觉图像和激光点云置于同一参考系下。因此需要知道激光雷达坐标系和相机坐标系的刚性空间变换,包括相对旋转和相对平移,组成六自由度的外参。求解该变换关系的过程称为激光雷达和相机联合外参标定(Lidar-camera extrinsic calibration)。

二、研究方向

        联合外参标定理论随着多视角几何和最优化理论等发展已经趋于完善,但是在实际情况下,简单并且无人为干预的自动标定仍然是目前的主要挑战。目前的工作主要集中在两个方向:基于目标(Target-based)的联合标定和无目标(Target-less)的联合标定。

        基于目标的联合标定要求测量者提前设计特殊的标定板,标定板上可以添加特殊的视觉效果如棋盘格等,或者镂空特定的形状。

        无目标的联合标定也是目前的主要研究方向之一,主要利用自然场景中的特定形状进行标定,应用于自动驾驶的行驶过程中对激光雷达和相机的实时标定矫正。无目标的联合标定无需手动标记特征,但是要求提供较精确的初值。

三、前置知识--PnP问题

        PnP问题描述为已知空间中的3D点以及其在相机上的投影,求解相机的位姿变换。具体在SLAM应用中,已经空间中的3D点在绝对坐标系或者在上一帧相机坐标系的坐标,以及其在当前帧的投影,求解当前帧相机相对于上一帧相机的坐标变换。
     
        具体而言,已知在世界坐标系(或上一帧相机坐标系)中存在n个三维点$P^W_1$$P^W_1$\dots$P^W_n\in \mathbb{R}^3$,以及其在相机的像平面上的像素坐标$p_1$$p_2$\dots$p_n\in \mathbb{R}^3$和相机的内参矩阵$K$
     
        求解:相机坐标系和世界坐标系之间的位姿变换。即$sp=KP^C=K(R_{CW}\times P^W +t_{CW})$中的世界坐标系到相机坐标系的旋转矩阵$R_{CW}$和对应的位移向量$t_{CW}$。其中,$sp=KP^C$为针孔相机模型,此处不多于赘述,$s$为点的深度。

        需要注意的是,本文中,$P^W=[X^W,Y^W,Z^W]^T$为世界坐标系中点的三维坐标,$P^C=[X^C,Y^C,Z^C]^T$为相机坐标系中点的三维坐标,$P^\prime=[u^\prime,v^\prime,1]^T=[X^C/{Z^C},Y^C/Z^C,1]^T$为相机坐标系中点的归一化坐标,$p=[u,v,1]$为点在相机的像素坐标系下的齐次表示。

        PnP问题的求解方法总的来说分为四大类,包括直接线性变换(DLT)、三点法(P3P)、EPnP以及光束法平差(BA,Bundle Adjustment)。以下为BA法的详细推导。

        在理想情况下,所求解的位姿变换符合下式:
                                                                               sp=KP^C=K(R_{CW}\times P^W +t_{CW})
        但是在数据的实际采集过程中,由于噪声等误差的存在,该式不严格成立。因此为求出最优的相对位姿(T=\left \{ R,t\ \right \}),构建最小二乘问题,对n个观测点的误差求和并使得误差最小化:
                                                                   T^*=\min_{T}\frac{1}{2}\sum_{i=1}^{n} \left \| {p_i-\frac{1}{s}KTP_i^{W}} \right \| ^2 = \min_{T}\frac{1}{2}\sum_{i=1}^{n} \left \| e(T) \right \| ^2

         进一步说明上式,误差是相机观测的像素点和世界坐标系中的空间三维点经过位姿变换和针孔相机模型投影得到的像素点,计算时使用非齐次坐标,因此此处误差为二维。

        三维点$P^W_i$已经经过特征匹配等方法和像素点$p_i$对应,由于相对位姿的不确定,计算所得像素点和观测像素点的初始误差会非常大,通过最小二乘不断调整相对位姿,使得投影点与观测点之间误差最小。

        在调整位姿的过程中,根据高斯-牛顿方法,其关键在于导数的求解,即雅各比矩阵$J^T$,误差项对于优化变量的导数,以确定相对位姿的调整方向,以此线性化误差:
                                                                                         e(T+\Delta T) = e(T) + J^T\Delta T

        对上式,$T\in SE(3)$,为特殊欧式群,对加法不封闭。因此引入李代数,将变换矩阵映射为李代数$\xi \in se(3) \in \mathbb{R}^6$。至此,误差$e$2维,李代数$\xi$6维,确定雅各比矩阵$J^T$$2\times 6$维。

        之后利用李代数左扰动模型进行推导,以规避旋转矩阵自身的约束(R\times R^T=I, \operatorname{det}(R)=1),使得最小二乘为无约束优化问题。

        首先计算三维空间点投影到像平面的点坐标$(u_{cal}, v_{cal})$
                                                                        \begin{bmatrix}u_{cal}\\v_{cal}\\1\end{bmatrix} =\frac{1}{Z^C} K P^C =\frac{1}{Z^C} \begin{bmatrix}f_{x} &0 &c_x \\0 &f_y &c_y \\ 0& 0&1\end{bmatrix} \begin{bmatrix} X^C \\ Y^C \\ Z_C \end{bmatrix}

        得到
                                                                                                \begin{matrix} u_{cal} = f_x\frac{X^C}{Z^C} + c_x \\ v_{cal} = f_y\frac{Y^C}{Z^C} + c_y \end{matrix}

        因此,误差可以写成观测值为投影像素值之差:
                                                                            \begin{matrix} e_u = u_{measure} - u_{cal} =u_{measure} - f_x\frac{X^C}{Z^C} - c_x \\ e_v = v_{measure} - v_{cal} =v_{measure} -f_y\frac{Y^C}{Z^C} - c_y \end{matrix}

        通过定义三维点在相机坐标系的坐标$P^C$,应用链式法则和李代数左扰动模型,可以得到:
                                                                                       J=\frac{\partial e}{\partial \delta \xi} =\frac{\partial e}{\partial P^C} \frac{\partial P^C}{\partial \delta \xi}

        其中,$\frac{\partial e}{\partial P^C}$为误差对投影三维点的导数,根据针孔相机模型:
                                                               \frac{\partial e}{\partial P^C}=\begin{bmatrix} \partial {e_u} / \partial {X^C}& \partial {e_u} / \partial {Y^C} & \partial {e_u} / \partial {Z^C}\\ \partial {e_v} / \partial {X^C}& \partial {e_v} / \partial {Y^C} & \partial {e_v} / \partial {Z^C} \end{bmatrix}

        进一步计算得到:
                                                                        \frac{\partial e}{\partial P^C}=-\begin{bmatrix} -\frac{f_x}{Z^C} & 0 & f_x\frac{X^C}{(Z^C)^2} \\ 0 & -\frac{f_y}{Z^C} & f_y\frac{Y^C}{(Z^C)^2} \end{bmatrix}

        $\frac{\partial P^C}{\partial \delta \xi}$为变换到相机坐标系上的点对李代数的导数,由左扰动:
                                                   \frac{\partial P^C}{\partial \delta \xi} = \frac{\partial (TP^W)}{\partial \delta \xi} =\begin{bmatrix} I & -(R_{CW} \times P^W + t_{CW})^\wedge \\ 0^T &0^T \end{bmatrix} =\begin{bmatrix} I & -(P^C)^\wedge \\ 0^T &0^T \end{bmatrix}

        采用非齐次坐标,只取前三维度$\begin{bmatrix} I & -(P^C)^\wedge \end{bmatrix}$,因此,$(\cdot)^\wedge$表示向量到反对称矩阵的变换。因此得到雅各比矩阵

J^T=-\begin{bmatrix} \frac{f_x}{Z^C} & 0 & -f_x\frac{X^C}{(Z^C)^2} &-f_x\frac{Y^C X^C}{(Z^C)^2} &f_x+f_x\frac{(X^C)^2}{(Z^C)^2} & -f_x \frac{Y^C}{Z^C} \\ 0 & \frac{f_y}{Z^C} &-f_y\frac{Y^C}{(Z^C)^2} & -f_y-f_y\frac{(Y^C)^2}{(Z^C)^2} & f_y\frac{Y^CX^C}{(Z^C)^2} &f_y\frac{X^C}{Z^C} \end{bmatrix}

        对于正常的BA来说,还需要对三维点进行优化,此处联合标定并不涉及三维点优化,因此不赘述。此后使用高斯牛顿方法求解即可。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值