一、简介

最近在研究异构传感器定位方面的东西,读了一些论文。写个文章做个小结,主要是为了自我总结,也给有缘的网友们一起看看探讨探讨。以后每读一篇论文就再加一节。
异构传感器(Heterogeneous sensor),是一个乍一看很高端的名词,其实异构的意思我的理解就是不同源的传感器,类似于camera、lidar、imu、rtk等传感器都是不同源的。那么异构传感器定位呢,就是利用不同源的传感器获得的数据来定位。
个人的粗略理解:异构传感器定位的问题实际上就是找到不同传感器数据之间的匹配的问题。
目前做的比较多的是相机在先验激光雷达点云地图中的定位(好像目前能做的也就这种吧,拿imu在激光中定位怎么想都有点不太现实)。相机包括单目、双目、rgbd(话说这个目前没有看到相关论文诶)。这个方向的一个基本逻辑就是,先用激光雷达等高精度设备建立一个高精度的点云地图,然后再用视觉里程计结合异构传感器定位的一些方法,实现一个累计误差可控的视觉里程计。
应用场景也很有想象空间。例如在自动驾驶中,可以用一台“全副武装”的采集车采集到全路段的高精度地图,然后再在运行车上安装几个低成本的相机在先验高精度点云地图中实现高精度定位。

二、论文简介

接下来直接上一些论文吧,粗略讲解一下这些论文的思路。

1、Monocular Camera Localization in 3D LiDAR Maps(IROS 2016)

这篇论文是一篇比较早期的研究单目相机在点云地图中定位的论文。

Monocular Camera Localization in 3D LiDAR Maps
其主要思路如下:

1、使用了单目相机,利用ORBSLAM的共视图,恢复单目提取到的特征点的深度(有一说一,笔者对其提取到的特征点的精度存疑)
2、用了一些特殊的方法(没看太明白,先是把点云地图进行了类似体素化的操作,然后用3d特征点去做点和点的对齐(alignment))。
3、最后在实际场景中做了一个实验,在晴朗的天气采集了先验点云地图,在一个雪天进行了定位,最终使用定位得到的路径对第二次采集的单目图像进行了三维重建以示其效果。

2、Stereo Camera Localization in 3D LiDAR Maps(IROS 2018)

请添加图片描述

作者发现在同一个位姿下,双目相机获得的intensity图像和lidar获得的intensity图像差异较大,而它们获得的depth图像的差异较小,如上图。因此作者提出了使用最小化深度图误差的方法来进行异构传感器定位的位姿优化。
同时作者发现深度提取差异在平面环境中更为相似,在边缘场景下会有更大误差,因此作者尽量提取梯度较小处的深度进行匹配。另外在深度误差较大时,作者会使用ICP的方法进行补救。
最终在kitti00,kitti02-10数据集和自己的数据集上分别进行了测试,因为没有直接对比,也不好说结果,平均误差在20cm左右。

3、A Robust Stereo Camera Localization Method with Prior LiDAR Map Constrains(ROBIO 2019)

用G-LOAM顺便提取了激光点云中的面特征,使用梯度提取了图像中的面特征,而后结合orbslam2的前端在kitti07中进行定位,最终误差在0.53m左右。总之效果一般,不建议阅读(以后论文还是得先看看结果才行)。

4、Visual-Inertial Localization with Prior LiDAR Map Constraints(RAL期刊)

请添加图片描述

1、视觉里程计部分使用MSCKF框架,单目+imu
2、匹配方法:使用双目图像,按照距离和旋转选取关键帧,重建一个半稠密地图,而后与点云地图进行匹配。
(1) 使用双目恢复深度
(2) 使用深度细化算法(相当于降噪),使得深度恢复得到的墙面更直
(3) 把所有的双目重建得到的半稠密地图投影到当前关键帧,而后使用NDT算法与先验点云地图进行对齐。
3、作者把点云对齐得到的约束作为一个约束紧耦合进了MSCKF的框架中
4、在作者搭建的模拟环境中和真实场景中进行了实验。测试了7m——35m的场景,在7m、14m原版MSCKF更优,之后随着长度增加,不使用先验地图约束的算法有了累计漂移误差,但是使用了先验地图约束的算法累计误差被限制了。


2021.11.3更新:

5、Monocular Direct Sparse Localization in a Prior 3D Surfel Map

在这里插入图片描述

1、视觉里程计部分使用了DSO,是稀疏的直接法的VO。
2、地图构建部分参考了“ElasticFusion ”论文的构思,使用了surfel替代了之前建图过程中使用的特征点,一个surfel包含有中心点坐标,法向量,半径等参数(具体实现方式还得参考ElasticFusion 论文,我也还没看,此处不再赘述)。作者在使用surfel地图时先将其转为了vertex地图和normal地图

surfel示意图
3、在匹配部分,作者将DSO的特征点和地图中的surfel做联结。分别给联结上了surfel的特征点和没有联结上surfel的特征点使用不同的约束

4、最终本文的实验效果看起来挺好的,整体效果比加了DSO、VINS-mono、MSCKF方案都要好一些,值得一看。
在这里插入图片描述