• Literature Review: Road is Enough


    Abstract

    我们说一个LiDar和stereo cameras没有共视区域的外参标定.

    为了解决外参标定问题,我们的方案利用了road markings作为嘈杂的urban环境下静态,鲁邦的特征.

    这个方案使用了road markings来选择有信息量的图像来估计外参. 为了完成稳定优化, 很多cost functions被定义了, 包括:

    • Normalized Information Distance (NID)
    • Edge Alignment
    • Plane Fitting Cost

    所以一个smooth cost curve被形成来避免局部最优.

    另外我们也测试了优化收敛性和标定的重复性.

    1. Introduction

    外参对于多传感器很重要.

    [1] 利用了LiDAR的深度信息来计算两张图的光度误差.

    [2] 用利用视觉里程计和LiDAR里程计的融合来做一个快速且low drife的里程计.

    [3] 用conditional random field framework, 利用LiDAR和视觉的信息来估计路面区域.

    最常用的LiDAR和相机的 外参标定用了checkerboard. 也有用circular hole的.

    这些方法都依赖不同sensor data的关联. 特别因为LiDAR观测是Non-continuous的(camera也non-continuous啊), 两种modalities之前找准确关联并不直接. 而且在同一时刻没有共视的情况下是没有办法标定的.

    为了general calibration, 有不少用周围环境来做标定而不用特性目标的方案. [9 - 13] 但是这些方法都需要overlapping FOV.

    为了解决没有共视的问题, 局部3D点云累计来保证共视是一个思路.

    也有用线的[17, 18, 19], 和手眼标定一个思路.


    我们的sensor系统有4个LiDAR和一个立体相机.

    • 两个3DLiDAR在左右来最大化数据采集的范围
    • 两个2DLiDAR装在前后

    1585563665202

    A. Target-less Extrinsic Calibration

    在heterogeneous (混杂的)的传感器来建立数据关联.

    [12]手动在LiDAR intensity image和图像在计算外参. 这个intensity image是用融合LiDAR scan和用2D lidar的里程计来融合出来的. 但是这个手动选择可太烦了.

    [9] 通过引入Normalized Mutual information(NMI)来获得最佳关联. 这个工作通过partical swarm optimization方法(粒子滤波?)来找到NMI最大值来找最佳关联.

    [10] 用互信息Mutual Information metric来估计外参. 如果用单个scan会遇到一些局部最优. 为了解决这个问题, 这个方法用了多个scan来找到全局最优来最大化MI值.

    最近还有更多工作用深度学习的来做外参标定. [11]用CNN框架来估计.

    B. Extrinsic Calibration of Non-overlapping Configuration

    之前说的都需要共视, 也有不需要的. [16] 通过push-broom(推式扫)来标2Dlidar和相机. 外参标定是用edge images和Lidar intensity image来做的, 通过用里程计的结果, 投影3D点.

    [14] leveraged NID来估计多相机和2d lidar的最佳外参.

    [15] 加入了数据选择模块, 通过比较最佳参数附近的NID的值来减少局部最优.


    我们的方案使用了road marking信息来做外参标定, 且不需要共视关系. 为了减少局部最优点, 用了多图, 而且图会用vanishing point来定义cost. 在优化中, 我们用图像和lidar数据定义了多个costs, 包括:

    • NID cost
    • edge alignment
    • plane fitting cost

    3. Notation and Local map Generation

    我们首先用odometry (轮速还是里程计)和lidar数据生成3d点云, 然后通过比较stereo图和lidar intensity image over generated local pointcloud map来标定.

    局部建图部分, 我们用轮速计, 3轴Fiber Optic Gyro (FOG)和IMU来生成高精度的位姿.

    B. Local Map Generation

    因为没有共视, **所以我们首先要累计lidar数据来生成局部点云图. 用轮速, FOG和IMu生成的准确的相对位姿来. ** 我们用[20]里的方法来计算lidar和lidar-to-vehicle的外参.

    因为局部点云的精度都是依靠车辆的相对位姿的, 这里我们累计了80m的局部地图来最小化可能的来及误差 (哪里最小化了?..).

    4. Target-less Multi-Model Extrinsic Calibration with No OverLap

    有两步来建立局部地图:

    • 有信息的图像选取
    • Multiple cost optimization

    1. 在图像选择阶段, 我们用stereo dispairty map(双目的视差图)来提取road regions。

    2. 通过提取线指向vanishing point来寻找有很多road markings的图来做优化。

    3. 局部最优的问题可以用多图估计外参的问题来缓解

    A. Road Detection and Informative Image Selection

    有很多roadmark的图会被标记。

    image-20200330215845892

    1)Road Region Detection using Stereo Images

    image-20200330215834101

    [21]从一个disparity map (D(p_{uv}))来计算v-disparity。 每一行的disparity的histogram按照v-disparity image来画。道路区域是在v-disparity图上拟合一个线(pi)(用RANSAC)弄的。因为v-dispairty image的每个像素值表示的是disparity map的histogram,在v方向上拟合。结果如Fig.5(c)。

    2) Vanishing Point Estimation

    尽头是从road region估计的。通过线(pi)可以获得天际线(L_{horizon}),它是离尽头很近的,但不一定准确。这里用了一个voting process. 我们用LSD(Line Segment Detector)来检测线段,每个线(l_i={s_i, e_i,c_i})。分别表示开始,结束和中间点。

    image-20200330220844866

    3. Image Selection

    4. Plane Estimation of the Road

    平面(M={n_x, n_y, n_z, d})是通过disparity map (D(p_{uv}))。焦距(f)和基线(B)会用到。然后(M)会被一个点云的RANSAC平面拟合。这个平面会在优化阶计算平面拟合cost用。

    B. Multi-cost Optimization

    我们用【23】的区域生长分割方法来选取global pointcloud里的road pointcloud。对于外参标定,这个文章用了下述三个costs。

    1. Edge Alignment Cost

    这个cost是来衡量RGB和LiDAR intensity image的不同。一个相机edge image (widehat{E_{S_L}})是从road masked image (widehat{I_{S_L}})提取(canny)的。Lidar edge图(widehat{E_L})是从Lidar intensity image (widehat{I_L}) 上提取(canny)的。

    RGB推算的edge图转换为distance transform image (widehat{G_{S_L}})

    cost是:(f_{ ext {edge}}(widehat{E_{L}}, widehat{G_{S_{L}}})=sum widehat{E_{L}}left(p_{u v} ight) widehat{G_{S_{L}}}left(p_{u v} ight))

    2) NID cost

    (f_{N I D}(widehat{I_{S_{L}}}, widehat{I_{L}})=2-frac{H(widehat{I_{S_{L}}})+H(widehat{I_{L}})}{H(widehat{I_{S_{L}}}, widehat{I_{L}})})

    (H(X)=-sum_{x in X} P(x) log P(x))

    (H(X, Y)=-sum_{x in X atop y in Y} P(x, y) log (P(x, y)))

    这里(H(X))(H(X,Y))是single entropy和交叉熵。计算的结果在0/1之间。更低的NID表示两个数据分布更像。

    3. Plane Fitting Cost

    (f_{ ext {plane}}left(^{S_{L}} P_{L}, M ight)=)
    (sum_{i=1}^{N}left(n_{x}left(^{S_{L}} P_{L} ight)_{x}^{i}+n_{y}left(^{S_{L}} P_{L} ight)_{y}^{i}+n_{z}left(^{S_{L}} P_{L} ight)_{z}^{i}+d ight))

    4. Optimization

    (f_{ ext {sum}}=k_{1} f_{ ext {edge}}+k_{2} f_{N I D}+k_{3} f_{ ext {plane}})

    这里(k_1 = 2.0, k_2 = 500.0, k_3 = 0.1).

    5. Experimental Results

    。。。

    6. Conclusion And Future Works

    标定的精度是0.02m和大概0.086°,且不需要人操作。

    在这个论文中,我们假设odometry生成的点云是局部准确的。但是也有说因为车辆的加速减速导致distortion。(啥意思?不是有IMU轮速啥的么,你加速减速估计不了么?)

  • 相关阅读:
    webserivice---通过Ajax访问远程天气预报服务
    IDEA Error:java: 未结束的字符串文字
    UML:它是一种支持模型化和软件系统开发的图形化语言
    核心代码之分页
    struts.xml 的 file 报错 解决方式
    Myeclipse buildpath 加server lib (server runtime)
    核心代码之优化查询
    入园新编
    为啥JS中判断对象是否是类的实例推荐使用instanceof而不推荐constructor
    http常考的题目
  • 原文地址:https://www.cnblogs.com/tweed/p/12601830.html
Copyright © 2020-2023  润新知