点击“
计算机视觉life
”,选择“星标”
机器人AI干货第一时间送达
文章地址:https://arxiv.org/pdf/2408.03520
代码地址:https://github.com/sair-lab/AirSLAM
项目主页:https://xukuanhit.github.io/airslam/
视频demo
1、摘要
在本文中,我们提出了一个高效的基于点线特征的视觉SLAM系统,旨在应对短期和长期的复杂光照对视觉定位的挑战。我们的系统采用了一种混合方法,在前端使用深度学习检测和匹配特征,在后端使用传统图优化算法优化地图。为了提升系统鲁棒性的同时兼顾效率,我们提出了一个统一的网络同时提取特征点,描述符和线特征。之后这两种特征会被关联起来,并以耦合的方式用于匹配、三角化、优化和重定位。为了长期复用建立的地图,我们设计了一个轻量级的层级重定位流程。点特征和线特征会被同时用于查询帧和地图之间匹配。为了增强系统的实用性,我们使用C++和NVIDIA TensorRT部署并加速了特征检测和匹配网络。这使得我们的系统可以在PC上以73Hz的速度运行,在嵌入式平台上以40Hz的速度运行。我们在不同数据集上进行了实验,结果表明我们的系统可以在复杂光照条件下建立准确的地图,并且建立的地图可以在不同光照条件下复用。
2、系统结构
图1. AirSLAM的系统结构。
我们的AirSLAM包含三部分:(1)Stereo VO/VIO。用于初始地图的构建;(2)离线地图优化。目前包含回环检测,地图合并,全局优化等;(3)地图复用。这部分使用建立好的地图,只需一个单目相机就能够提供没有累计误差的重定位。这样结构提升了AirSLAM的建图效率,也使得三个模块可以根据应用灵活的部署到不同平台上。
3、特征检测网络
图2. 我们使用一个网络检测特征点,描述符和线特征。
目前的点特征和线特征都是分开检测的。由于传统检测算法比较高效,所以传统 vSLAM系统同时检测点和线尚能保持实时的性能。但是如果使用两个CNN分别检测点特征和线特征,会使得vSLAM系统难以达到实时。因此,我们设计了一个能同时检测特征点和结构线的网络,使用一种分阶段的训练方式来克服两种特征所需数据集不一致的困难。我们把它命名为PLNet。PLNet在保持高效率的同时,点和线的检测都达到了SOTA的效果。
4、Stereo VO/VIO模块
图3. Stereo VI/VIO系统的结构。
Stereo VO/VIO模块改进了我们之前的工作(AirVO),我们在这里把它命名为AirVIO。
AirVIO被分成了两个部分,分别运行在两个线程上。
在前端,我们使用PLNet检测特征点和线,使用LightGlue匹配点特征。
我们根据点和线的距离关联了这两种特征,并且根据点特征的结果去匹配线特征,这使得我们的线特征匹配和点特征匹配一样鲁棒,但由于不使用额外的线特征匹配网络而非常的高效。
在后端,我们构建一个局部因子图,用G2O同时优化3D点,线和关键帧位姿。
5、地图优化模块
地图优化模优化VI/VIO模块生成的初始地图,输出用于重定位的优化地图。目前,该模块目前包含回环检测,地图合并,全局优化等。这部分根据需要,可以比较方便的增加其它处理地图的步骤
6、重定位模块
我们提出了一个轻量级的层级重定位模块去复用地图。传统重定位算法通常包括粗定位和精细定位两步,而精细定位阶段比较耗时。为提高效率和召回率,我们增加了一个候选帧滤除步骤,减少精细定位阶段的特征匹配次数。该模块分为三步:
1)候选帧搜索。我们用35k张图片训练了一个基于PLNet的特征点词袋模型。并使用DBoW算法在地图里寻找和query帧相似的关键帧作为候选帧。
2)候选帧滤除。我们也基于地图里关键帧上PLNet输出的junctions(线段端点)训练了一个地图相关的词袋模型。并且为候选帧与query帧构建了一个结构图。基于junction词袋模型的相似度和结构图的相似度,大部分关键帧被滤除。这个操作很高效(1ms),极大地提升了重定位的效率。
3)精细匹配。对于剩余的候选帧,我们使用LightGlue匹配它们和query帧的特征,并用RANSAC估计query帧的位姿。并选取内点最多的计算结果为最终结果。
7.实验结果
7.1建图精度
我们在EuRoC数据集上验证了AirSLAM的建图精度。实验结果表明,AirSLAM超越了众多SOTA视觉SLAM系统。
7.2建图鲁棒性
我们分别在UMA-VI,OIVIO数据集上测试了AirSLAM在动态光照和机载光源条件下的建图鲁棒性。图4展示了AirSLAM在动态光照下的特征跟踪效果。
图4. AirSLAM在动态光照下的特征跟踪。
下面表格给出了在UMA-VI和OIVIO的对比结果。
实验结果证明了AirSLAM在复杂光照条件下鲁棒性。
为了验证不同SLAM算法在低光照条件下的鲁棒性,我们用伽马变换处理EuRoC数据集,并生成了不同亮度的序列。我们将其命名为Dark EuRoC数据集。在该数据集上的结果表明AirSLAM在暗光条件下也取得了很好的效果。
图5. 左:使用伽马变换生成的暗光数据集。”i”为暗光等级,等级越高,图像亮度和对比度越低;右:在生成的暗光数据集下不同算法的表现。
7.3重定位
我们用TartanAir数据集的“abandoned factory”和“abandoned factory night”两个场景去测试AirSLAM的重定位能力,并将其命名为” TartanAir Day/Night Localization”数据集。图5给出了AirSLAM在该数据集上重定位成功的一些示例。
图
6. AirSLAM在“TartanAir Day/Night Localization“数据集上的重定位效果。
我们也给出了和Hloc算法的对比。
实验结果证明了AirSLAM建立的地图可以在不同光照条件下复用。
7.4效率分析
我们在两个平台上测试了我们算法的效率:一台装有NVIDIA RTX 4070 GPU的PC和一个嵌入式平台NVIDIA Jetson AGX Orin。我们将测试效果放在了下面的表格里。
推荐教程
我对Fast-LIO2做了改进,解决了Z轴漂移、有效检测回环及解决了回环重影、实现了重定位
2025秋招,上来就问3D Gaussian Splatting。。。