NTU发布即插即用的嵌入式SLAM新SOTA!

导读:

当前的SLAM技术正逐渐向轻量化和高效化发展,在保证定位精度的同时,研究者们越来越倾向于简化冗余的框架,以在效率和性能之间找到最佳平衡点。

一个优秀的SLAM系统不仅需要提供精确的定位数据,还必须能够在不同平台上实时运行,尤其是在低算力的平台上仍需表现出色。此外,SLAM的部署一直是个挑战,将复杂的框架从高算力的PC平台移植到嵌入式平台时,往往会遇到许多问题。

今天这篇AirSLAM提出的方法很好地解决了这些问题,不仅在效率和性能之间实现了良好的平衡,还显著简化了部署过程(可以达到即插即用),并且在低算力平台上,还能以40Hz的速度实时运行!©️【深蓝AI】编译

1. 问题引人

vSLAM在机器人导航中起着至关重要的作用,因为它在成本和精度之间实现了良好的平衡。与LiDAR SLAM相比,vSLAM使用更为经济且紧凑的传感器,能够实现精确定位,这使得它在各类应用中有着广泛的前景。此外,相机不仅能捕捉到丰富的视觉信息,还能为机器人提供更强的定位能力。

然而,尽管vSLAM技术近年来取得了显著进展,现有的系统在光照条件恶劣的环境下仍然表现不佳。主要有两个方面的挑战:一是由于光照剧烈变化或低光环境,特征检测和跟踪往往会失败,导致定位轨迹的质量下降;二是在重定位时,光照变化可能显著降低匹配成功率。AirSLAM将第一个问题称为短期光照挑战,它影响的是相邻帧之间的姿态估计;而第二个问题称为长期光照挑战,它影响的是查询帧与现有地图之间的匹配。总结一下,就是光照条件对于vSLAM的影响是很大的,光照的变化对于整体的定位和回环过程都造成不同程度的影响,如何处理好整体vSLAM系统在不同关照条件下的运行能力,是该SLAM系统是否优秀,鲁邦的关键。

现有的方法通常只关注这两个挑战之一。例如,一些图像增强和归一化算法能够在一定程度上改善特征跟踪,但它们往往难以应对各种复杂的光照条件。还有一些系统通过在包含各种光照条件的大型数据集上训练SLAM网络来提高鲁棒性,但这些方法在生成适合长期重定位的地图时仍然存在困难。

为了解决这些问题,AirSLAM系统应运而生。AirSLAM通过结合点和线特征来提升vSLAM系统的精度和鲁棒性,并在效率与性能之间找到了一个平衡。AirSLAM设计了一个混合系统,利用学习方法进行特征检测和匹配,同时使用传统的几何方法进行姿态和地图优化。此外,为了提高特征检测的效率,AirSLAM开发了一个能够同时检测点和线特征的统一模型。AirSLAM还引入了一种多阶段重定位策略,以应对长期光照挑战,使系统能够在不同光照条件下保持稳定的表现。这个框架的设计使得整个SLAM系统特别的轻量化,对于部署十分的友好,能够很轻松的部署在各种低算力的嵌入式平台。

通过实验验证,AirSLAM不仅在各种光照挑战条件下实现了准确且鲁棒的建图和重定位,还展示出了很高的运行效率,能够在PC上达到73Hz,在嵌入式平台上则达到40Hz。

2. 具体方法与实现

首先来总览一下全文的方法框架,如图一所示,主要由三个部分进行实现:立体视觉里程计,离线地图优化和轻量级重定位框架,笔者先来对这三个部分的内容进行一个简单的介绍,建立一个初步的印象,随后再对这三个部分进行详细介绍:

●立体视觉里程计(VO/VIO): AirSLAM提出了一种基于点线特征的视觉里程计,可以处理立体视觉和立体视觉惯性输入。

●离线地图优化: AirSLAM实现了几种常用的插件,如回环检测、姿态图优化和全局束调整。通过添加定制插件,系统易于扩展以实现其他地图处理目的。例如,AirSLAM实现了一个插件,用于利用线特征的端点训练场景相关的连接词汇表,该词汇表在AirSLAM的轻量级多阶段重定位中使用。

●轻量级重定位: AirSLAM提出了一种多阶段的重定位方法,在提高效率的同时保持效果。在第一阶段,使用提出的PLNet检测关键点和线特征,并使用在大数据集上训练的关键点词汇表检索几个候选者。在第二阶段,使用场景相关的连接词汇表和结构图快速过滤掉大多数错误候选者。在第三阶段,在查询帧和剩余候选者之间执行特征匹配,以找到最佳匹配并估计查询帧的姿态。由于第三阶段的特征匹配通常耗时较长,因此第二阶段的过滤过程提高了AirSLAM的系统相对于其他两阶段重定位系统的效率。

这三个部分保证了本文定位的精度,那么前文中笔者阐述的"即插即用"是如何实现的呢?如下所示!AirSLAM将一些耗时的过程(例如,回环检测、姿态图优化和全局束调整)转移到离线阶段。这提高了在线映射模块的效率。在许多实际应用中,如仓库机器人,通常由一个机器人构建地图,然后由其他机器人重复使用。作者设计的系统考虑了这些应用场景。轻量级映射和地图重用模块可以轻松部署在资源受限的机器人上,而离线优化模块可以在功能更强大的计算机上运行,以实现各种地图操作,如地图编辑和可视化。映射机器人将初始地图上传到计算机,然后计算机将优化后的地图分发给其他机器人,确保无漂移的重定位。

■2.1 立体视觉里程计

AirSLAM的点线特征双目视觉里程计系统(如图2所示)结合了学习驱动的前端和传统优化的后端,提供了一种高效的混合VO系统。在处理每对双目图像时,AirSLAM首先利用其PLNet模型提取关键点和线特征。接着,系统使用图神经网络LightGlue对这些关键点进行匹配。同时,AirSLAM还将线特征与关键点关联起来,并基于关键点的匹配结果进行线特征匹配。完成这些步骤后,系统会进行初步的姿态估计并剔除异常值,然后对关键帧的二维特征进行三角化处理并将其插入地图中。最后,AirSLAM还会执行局部束调整,以优化点、线和关键帧的姿态。此外,如果配备了IMU(惯性测量单元),系统还会利用IMU预积分方法来处理测量数据,并将其纳入初步姿态估计和局部束调整中。

由于将学习驱动的特征检测和匹配方法应用于双目视觉里程计中需要耗费大量时间,为了提升效率,AirSLAM采取了三项关键措施:首先,对于关键帧,系统会在左右图像上提取特征并进行双目匹配以估算真实的比例尺,而非关键帧则仅处理左侧图像。此外,AirSLAM通过宽松的标准选择关键帧,使得关键帧数量相对稀少,从而将特征检测和匹配的时间和资源消耗控制在与单目系统相当的水平。其次,AirSLAM将CNN和GNN的推理代码从Python转换为C++,并通过ONNX和NVIDIA TensorRT进行部署,实现16位浮点运算,进一步提升运行效率。最后,AirSLAM采用了多线程管道设计,通过生产者-消费者模型将系统划分为前端线程和后端线程,前端负责特征提取和匹配,后端则进行初步姿态估计、关键帧插入和局部束调整,从而确保整个系统高效运转。

笔者总结一下,在立体里程计部分,作者主要使用了基于学习的策略来进行特征点的提取和匹配,主要针对的是空间中普遍存在的点特征和面特征,随着这段时间superpoint和superglue的兴起,相信大家对于这个过程已经不陌生了,这样做的好处在于最大程度上的简化了系统,因为比起传统的几何法计算特征点并进行匹配,基于学习的方法会使得整个框架更简洁,符合了作者当初想要AirSLAM比较容易部署的初心。

■2.2 离线地图优化

离线地图优化是本文的一个比较重要的部分,这部分的设计直接决定了本文具备着容易部署和能够在低算力的嵌入式平台实时运行的能力。而作者在文中将这个模块分成了好几个小模块分别介绍,如图3所示,笔者这里也延续作者的写法,将这个大模块进行拆分,并对每一个子模块进行介绍。

AirSLAM系统首先通过一系列插件处理由视觉里程计(VO)模块生成的初始地图,以输出用于无漂移重定位的优化地图。随后将这个优化地图按顺序嵌入到下面几个模块中:

1)回环检测:

与大多数现有的vSLAM系统类似,AirSLAM采用了由粗到精的流程来检测回环。首先,系统使用DBoW2(词袋模型)从关键帧集合中检索可能的回环候选,并利用LightGlue进行特征匹配。为了确保匹配的准确性,AirSLAM在一个包含35,000张图像的大型数据库上训练了特征词汇库,该数据库包括了多种室内和室外场景。回环检测过程包括粗选候选、精细匹配以及相对姿态估计,确保识别的回环是有效的。

2)地图合并:

当回环检测到之后,系统会将来自回环对的3D特征进行合并,以消除重复的点和线特征。例如,两个不同地图点关联到同一匹配特征时,系统将其合并为一个。此外,系统还会更新2D关键点与3D地图点之间的对应关系,以及共视图的连接信息。

3)全局束调整:

在合并重复特征后,系统会进行全局束调整(GBA)。这一步优化所有关键帧和特征的位置信息。对于较大的地图,在执行全局束调整前,系统会先进行姿态图优化,以确保优化过程的初始条件足够好。这一步主要调整的是关键帧的姿态,并在调整后相应更新地图点和3D线的位置。

4)场景依赖词汇:

为了更好地进行重定位,系统会为关键帧中的交叉点训练一个场景依赖的词汇表。这个词汇表体积小巧,适用于特定场景,能有效支持后续的重定位任务。

5)优化后的地图:

系统会保存优化后的地图,以便后续的地图重用。与初始地图相比,优化后的地图中保存了更多的信息,例如关键帧的词袋模型、全局共视图以及场景依赖词汇表。此外,由于重复地图点和3D线的融合,优化后的地图占用的内存与初始地图相似。

通过这些步骤,AirSLAM能够生成一个优化的地图,该地图不仅占用更少的内存,还能更好地支持后续的无漂移重定位和高效的机器人导航。

■2.3 轻量级重定位

为了增强系统在不同光照条件下的鲁棒性,作者引入了一种使用优化后的地图进行重定位的方法。在大多数视觉SLAM(vSLAM)系统中,识别已经访问过的地点通常包括两个主要步骤:

●检索一组关键帧候选者;

●执行特征匹配并估计相对位姿。

第二步通常非常耗时,因此找到适当的关键帧候选者数量非常重要。选择太多候选者会降低系统的效率,而选择太少可能会导致正确的候选者未被识别。例如,在ORB-SLAM3的回环闭合模块中,仅检索三个最相似的关键帧以确保效率,这在光照条件相似时效果很好,但在更具挑战性的场景(如昼夜重定位)中可能表现不佳。

为了解决这个问题,作者提出了一种高效的多阶段重定位方法,使得优化后的地图在不同光照条件下仍然有效。关键思想是快速过滤掉大多数错误的候选者,从而在提高效率的同时,保持甚至提高重定位的召回率。这种方法在通常的两步流程中增加了一个额外的步骤。

1)检索相似的关键帧:

在第一步中,作者使用PLNet在查询帧中检测关键点、交点和线特征。然后,类似于之前的候选者选择过程,作者从地图中检索与查询帧相似的关键帧。与标准方法不同,作者不使用共视图图对候选者进行过滤,因为查询帧不在图中,并且作者保留所有候选者以供进一步处理。

2)过滤候选者:

第二步使用交点和线特征过滤掉第一步中大多数候选者。对于查询帧和每个候选者,作者使用预训练的交点词汇表来匹配它们的交点。然后,作者为查询帧和每个候选者构建结构图,其中顶点代表匹配的交点,边表示如果它们是同一条线的端点之间的连接。作者根据这些连接的一致性计算查询帧和候选者之间的图相似度,并将此图相似度与关键点和交点相似度结合起来,为每个候选者评分。只有得分最高的前三个候选者会进入下一步。由于交点数量少于关键点,且交点词汇表非常紧凑,这一步的额外过滤非常高效。实验显示,这一步可以在不到一毫秒的时间内完成。

3)估计位姿:

在最后一步中,作者使用LightGlue来匹配查询帧和保留的候选者之间的特征。具有最多匹配内点的候选者被选为最佳匹配。然后,作者基于这些匹配结果,将查询帧中的关键点与地图点关联起来,并使用带有RANSAC的PnP(透视-n-点)算法解决位姿估计问题。如果内点数量超过某个阈值,该位姿就会被认为是有效的。

这种多阶段的方法使得作者的系统能够在具有挑战性的光照条件下高效地进行重定位,确保了在实际应用场景中的鲁棒性能,也是这个过程让本系统在高效和性能之间取得了不错的平衡。

3. 实验效果

本文的实验部分作者主要验证了方法中的里程计精度,离线地图优化的效果还有重定位的能力,主要通过大量的对比数值实验和可视化实验体现,我们先来看数值实验。

作者用一张大表体现了本文方法的定位精度,从表上来看,这个数据集上本文的平均表现领先于其他的SOTA,能够很好的说明本文方法的有效性。随后作者通过图5的表格体现了本文方法在实时运行上的优势,在PC平台,AirSLAM的运行速度达到了恐怖的79.4FPS,并且各项定位数据也十分出色。

图6是作者对里程计的特征点提取能力测试,可以看到本文方法的特征点提取效果十分毕竟GT,能够最大程度的提取到图中应该提取到的点线特征,这一能力进一步可以在图7中的特征点匹配可视化实验中进一步体现。

如图7所示,对于提取的特征点,本文基本上能够很好的将其进行配准,哪怕在光照条件出现了变化的场景里,依旧保持的很高的匹配成功率。

4. 总结

在这项工作中,作者提出了一种高效且对光照变化具有鲁棒性的混合视觉SLAM系统。为了在具有挑战性的光照条件下保持鲁棒性,系统使用CNN检测关键点和结构线,然后通过GNN将这些特征关联并跟踪。为了提高系统效率,作者提出了基于PLNet的立体视觉里程计,这是第一个能够同时检测点和线特征的统一模型。

此外,AirSLAM还提出了一种基于外观和几何信息的多阶段重定位方法,用于高效的地图复用。系统设计采用了包括在线建图、离线优化和在线重定位的架构,使其更易于在实际机器人上部署。大量实验表明,所提出的系统在精度、效率和鲁棒性方面优于其他最新的vSLAM系统,能够达到"即插即用",在嵌入式平台也能够很好的实时运行。

©️【深蓝AI】

Ref:

irSLAM: An Efficient and Illumination-Robust Point-Line Visual SLAM System

编译|阿豹
审核|Los

本文首发于微信公众号【深蓝AI】,移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇
深蓝AI·赋能自动驾驶+机器人+AI

相关推荐
富士达幸运星1 小时前
模板匹配应用(opencv的妙用)
人工智能·opencv·计算机视觉
深蓝学院4 小时前
已开源!无限场景生成和高效数据迁移:3D金字塔扩散模型斩获ECCV24 Oral
人工智能·计算机视觉·机器人
CyreneSimon6 小时前
LongLLaVA:扩展多模态大语言模型到处理1000张图像的能力
人工智能·计算机视觉·语言模型·自然语言处理
我可以将你更新哟6 小时前
【OpenCV-图像形态学操作】礼帽与黑帽、梯度运算、开运算与闭运算、形态学-膨胀操作、形态学-腐蚀操作
人工智能·opencv·计算机视觉
jndingxin7 小时前
OpenCV结构分析与形状描述符(21)计算包围给定点集的最小面积三角形函数minEnclosingTriangle()的使用
人工智能·opencv·计算机视觉
阿_旭9 小时前
【保姆级教程】基于OpenCV实现实时道路车道检测【附完整源码】
人工智能·opencv·计算机视觉·车道检测
jun77889510 小时前
计算机视觉学习路线
人工智能·学习·计算机视觉
山水阳泉曲11 小时前
opencv将灰度图转为彩色图片
图像处理·opencv·计算机视觉
菌菌的快乐生活11 小时前
树莓派安装 OpenCV 教程
人工智能·opencv·计算机视觉
nfgo12 小时前
【opencv】BGR & RGB
人工智能·opencv·计算机视觉