用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展

Persistent Map Saving for Visual Localization for Autonomous Vehicles : An ORB-SLAM 2 Extension

摘要:

电动汽车和自动驾驶汽车是目前汽车领域的热门研究方向。这两个课题在实现车辆更安全和更环保的方向上是相互促进的。自动驾驶汽车的一个基本组成要素是构建环境地图并在地图上定位自己的能力。在本文中,我们使用一个双目视觉传感器来感知环境并创建地图。因为没有真值数据用作参考且误差会随着时间累积,所以SLAM存在错误定位的可能。因此,我们首先使用我们的ORB-SLAM2的拓展版本在汽车低速行驶的情况下构建并保存具有环境视觉特征的地图。在第二次运行时,我们重新加载地图,然后在之前构建的地图上定位。对构建好的地图进行加载和定位可以提高自动驾驶车辆的连续定位精度。此地图的保存功能是原始的ORB-SLAM 2所缺少的。

我们使用KITTI数据集的场景来评估已建成SLAM地图的定位精度。此外,我们用自己的小型电动模型车记录的数据对构建的地图进行了定位精度测试。测试结果表明,在特征丰富的环境中,对于直线速度平均为36 m/s行驶的车辆而言,定位的相对平移误差可以保持在1%以下。与完全SLAM相比,该定位模式拥有更好的定位精度和更低的计算负荷。我们对ORB-SLAM2拓展的源代码将在以下网址公开:[https://github.com/TUMFTM/orbslam map-saving-extension](https://github.com/TUMFTM/orbslam map-saving-extension)

索引词:SLAM,定位,重定位,自动驾驶,地图,ORB-SLAM2

介绍

掌握自动驾驶技术对于汽车行业和学术界是一个持续性的挑战。为了导航的安全性,自动驾驶汽车需要建立一个环境的准确模型,并具备估计自身位置的能力。在这项工作中,我们的目标是实现在已经行驶过并建立地图的路径上准确定位车辆(在地图上的)位置的功能。作为应用程序的中间开发环节,它目前作为一种定位方法用于车辆比赛场景。在这些场景下,车辆需要能够精确定位自身位置的能力,保证其可以高速行驶。

使用全球导航卫星系统(GNSS)估计自主车辆的位置是一种有效的方法。然而,这些系统的精度是有限的。大气条件、信号反射和时钟误差都会产生噪声。实时动态(RTK)定位系统可以通过使用固定校正基站的校正信号来减少这些误差。但是,此类系统依赖于更多的基础设施,会带来额外的成本。

有别于GNSS或RTK的定位方式,汽车使用激光、相机和雷达传感器感知环境。基于这些传感器,我们可以计算出当前环境的地图模型。同时,车辆可以定位自身相对于此地图的位置(SLAM)。当这些局部地图被保存在一个固定的全球导航卫星系统(GNSS)中,行驶在已经建图区域上的车辆只需定位自己在上述地图中的位置,就可以得到自身的全球位置估计。在SLAM的过程中,错误的定位会导致地图的不连续,从而阻碍进一步的定位或重新定位。纯定位模式可以节省计算资源,并能够在发生错误定位时进行重定位。

下面,我们对ORB-SLAM2算法进行了改进,以适应这种只进行两阶段定位场景的需要。第一步,我们在低速行驶条件下使用SLAM创建了一个环境地图。第二步,我们加载地图并以更高的速度在地图上定位车辆。结果表明,这种纯定位策略可以有效降低计算量和定位误差。在第二节中,我们简要地介绍了相关的研究和我们所建立的算法。在第三节中,我们讨论了我们对于ORB-SLAM2的拓展工作。在第四节中,我们评估了我们的拓展版本在不同场景下的性能,并得出了我们的结论。

结论:

这篇文章通过增加地图保存功能对视觉SLAM系统进行了拓展。和原始的功能一样,此拓展版本依然可以使系统作为一种SLAM模块应用于车辆的低速驾驶场景中。此外,它可以作为定位模块应用于更快速的驾驶场景,输出一个整体上更加精确的轨迹估计(结果)。该系统是ORB-SLAM2的一个拓展版本,可以实现室外和室内环境的定位。实验结果表明,在特征丰富的场景中,此系统可以在36m/s的速度下实现精确的定位功能。

此系统的定位模块相较于SLAM模块占用更少的计算资源; 但特征计算和匹配功能要求(资源)较高。我们展示了这种方法在嵌入式CPU上的局限性

此系统的定位能力在特征值较少的环境中表现并不好,比如KITTI的01序列。这对类似算法在特征相似的比赛场景中的应用提出了挑战。(针对这个问题,)许多新兴的方法使用深度学习技术生成的特征来提高SLAM的应用性。尽管这种方法是否能提高上述场景的定位精度仍是一个有待研究的问题。同时,与目前(主流)的视觉特征相比,这些**深度特征**可以在光照条件改变时发生更小的变化。这可以使地图的重定位功能**在不同的场景条件**下比如白天和晚上,依然能够实现。

研发和评估后的地图保存扩展模块提高了原始ORB-SLAM 2方法的功能性,并使其可以适用于许多新的场景,例如模型汽车的自动驾驶比赛的应用等

论文插图(/表格):

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_计算机视觉


图1: ORB-SLAM2的定位(左)和完全SLAM(右)两种工作模式流程图。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_数据集_02


图2 : 室外数据集的示例图像帧。ORB特征点的定位结果显示为绿色。


用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_加载_03


图3 : 室内数据集的示例图像帧。ORB特征点的定位结果显示为绿色。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_自动驾驶_04


表一 : TUM数据集中快速行驶和快速回放在不同速度下跟踪丢失(LT:Lost Track)情况的比较。


用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_数据集_05


表二 : SLAM系统与真值数据的精度对比

(trel : 平均相对平移;rrel : 平均相对旋转; tabs : 绝对平移均方根误差)

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_加载_06


图4 : KITTI序列09。轨迹真值(灰色虚线),8m/s行驶时的SLAM轨迹(蓝色)和20m/s行驶时的SLAM轨迹(黑色)。20m/s行驶时的SLAM轨迹与真值的偏离更大,并在红色标记的位置处定位失效。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_数据集_07

表三 : 相对于地图的定位精度(trel: 平均相对平移;rrel : 平均相对旋转; tabs : 绝对平移均方根误差; LT:跟踪丢失; LTt,max : 丢失跟踪的最大连续时间)

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_自动驾驶_08


图5 : KITTI序列09。轨迹真值(灰色),8m/s行驶时的SLAM轨迹(蓝色)和36m/s行驶时的SLAM轨迹(橙色)。SLAM和定位都与真值相近。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_自动驾驶_09


图6 : KITTI序列09。轨迹真值(灰色),8m/s行驶时的SLAM轨迹(蓝色)和36m/s行驶时的SLAM轨迹(橙色)。SLAM轨迹与真值有误差。定位和SLAM的轨迹一致

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_计算机视觉_10


图7 : KITTI序列01。轨迹真值(灰色),10m/s行驶时的SLAM轨迹(蓝色)和36m/s行驶时的定位(橙色)。SLAM轨迹与真值有误差。定位与SLAM轨迹有一段曲线存在的额外的误差。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_加载_11


图8 : TUM数据集户外场景。SLAM轨迹(蓝色)和定位(橙色)。定位和SLAM轨迹相近

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_自动驾驶_12


图9 : TUM数据集室内场景。SLAM轨迹(蓝色)和定位(橙色)。定位和SLAM轨迹相近。我们可以看到在两个轨迹中都存在漂移现象,因为测试用的轨迹是矩形的,但系统形成的轨迹并非如此。

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_计算机视觉_13


表四 : 不同计算硬件下的定位精度

(LT:跟踪丢失; LTt,max : 丢失跟踪的最大连续时间)


长按关注计算机视觉life

用于自动驾驶车辆视觉定位的地图存储:ORB-SLAM2的一种拓展_加载_14