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

一、前言

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

        较为普遍的做法是激光雷达和相机传感器的融合。为了充分利用来自不同传感器的信息,需要将视觉图像和激光点云置于同一参考系下。因此需要知道激光雷达坐标系和相机坐标系的刚性空间变换,包括相对旋转和相对平移,组成六自由度的外参。求解该变换关系的过程称为激光雷达和相机联合外参标定(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来说,还需要对三维点进行优化,此处联合标定并不涉及三维点优化,因此不赘述。此后使用高斯牛顿方法求解即可。

<think>好的,用户想了解激光雷达相机联合标定的方法教程。首先,我需要回忆下相关的知识。联合标定的主要目的是建立两个传感器之间的坐标转换关系,这样可以将激光雷达的三维点云相机的二维图像融合。根据之前用户提供的引用内容,比如引用[1]提到标定建立了对应关系,引用[3]提到了变换矩阵的结构,这可能涉及到坐标变换标定板的用法。 接下来,用户可能需要具体的步骤方法。根据引用[2]中的方法,用户使用ROS的rosbag来同步数据,这是个常见的做法,因为时间同步是关键问题。另外,标定板的使用也很常见,比如棋盘格或者ArUco标记。需要详细说明标定板的选择放置,比如多个角度距离,以确保标定精度。 然后,我需要考虑用户可能的实际操作步骤。比如如何采集数据,如何处理数据,使用什么工具。MATLABROS都是常用的工具,用户可能需要具体的操作流程。比如在MATLAB中使用Lidar Camera Calibrator工具,或者在ROS中录制bag包进行同步。 还要注意用户可能遇到的问题,比如时间同步、特征点匹配的准确性,以及如何计算外参矩阵。引用[3]中提到的T矩阵的结构需要解释清楚,包括旋转矩阵平移向量。此外,验证标定结果的方法也很重要,比如投影点云到图像并检查对齐情况。 用户可能需要相关的参考资料或教程链接,但根据规定不能提供外部链接,所以需要描述清楚方法步骤,确保用户能根据描述自行查找。同时,用户可能有不同的传感器配置,需要说明不同情况下的注意事项,比如不同品牌的激光雷达相机的接口差异。 最后,生成相关问题时要围绕标定方法、工具、常见问题、优化等,帮助用户进步深入学习。比如标定工具的选择、时间同步的其他方法、标定精度的影响因素等。</think>### 激光雷达相机联合标定方法 #### 标定原理 激光雷达相机联合标定的核心是通过标定板建立传感器间的坐标转换关系。定义以下参数: - **激光雷达坐标系**:以激光雷达为原点,点云坐标为$P_L=(x_L,y_L,z_L)$ - **相机坐标系**:以相机光心为原点,像素坐标为$P_C=(u,v)$ - **外参矩阵**:包含旋转矩阵$R_{3×3}$平移向量$T_{3×1}$,构成齐次变换矩阵: $$ T = \begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix} $$ 用于将激光雷达点云转换到相机坐标系[^3]。 #### 二、标定步骤 1. **数据采集** - 使用棋盘格或ArUco标定板,在20+不同位姿下同步采集: - 激光雷达点云(需包含完整标定板平面) - 相机RGB图像(需清晰显示标定板角点) - **同步技巧**:通过ROS的`rosbag record`录制点云图像的第帧数据[^2] 2. **特征提取** - **激光雷达**:使用RANSAC算法拟合标定板平面,提取平面角点坐标 - **相机**:调用OpenCV的`findChessboardCorners()`检测棋盘格角点 3. **参数求解** - 构建对应点约束方程: $$ s\begin{bmatrix}u \\ v \\ 1\end{bmatrix} = K[R|T]\begin{bmatrix}x_L \\ y_L \\ z_L \\ 1\end{bmatrix} $$ 其中$K$为相机内参矩阵 - 通过最小二乘法求解$R,T$,MATLAB中可使用`estimateLidarCameraTransform`函数[^1] #### 三、验证方法 1. **投影验证**:将激光雷达点云投影到图像平面,检查边缘对齐程度 2. **重投影误差**:计算标定板角点的投影误差,般要求<2像素 3. **动态验证**:在移动场景中测试融合效果 #### 四、工具推荐 | 工具 | 特点 | 适用场景 | |-------------|-------------------------------|------------------| | MATLAB | 图形化界面,内置标定工具箱 | 科研、快速验证 | | Autoware | 支持多传感器融合标定 | 自动驾驶开发 | | ROS Calibration | 支持时间同步标定 | 机器人实时系统 | #### 五、注意事项 1. **标定板要求**:建议使用金属材质棋盘格,边长>40cm 2. **环境光照**:避免强反光影响相机识别 3. **距离控制**:标定距离建议在2-5米范围内
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值