Maplab:研究视觉惯性建图和定位的开源框架

2018 年 4 月 4 日 泡泡机器人SLAM 笨笨熊

编者序:本文是ETH、MIT和Google的大牛们合著的VIO和VI-SLAM开源框架maplab的介绍,该框架提供了建图和定位中涉及到的很多工具与算法,可以非常方便的在控制台中执行命令组合实现响应的功能组合,扩展性非常棒,大大简化了视觉SLAM的研究难度,代码及wiki已在github上公开。

1 引言
随着SLAM技术的发展,机器人领域对精确的没有漂移的室内室外位姿估计的需求越来越迫切,视觉惯性估计系统提高了对视角和关照、天气、季节等引起的外观变化及剧烈运动的稳健性,目前的研究热点是利用各种工具采集数据、大规模建图、不同条件的长时间建图等。面对该挑战,需要一种能够在不同机器人平台上运行的多段(multi-session)端到端建图系统,该系统能够提供达到state-of-the-art性能的易用算法,并且具有供进一步研究的扩展性。

大多数现有的视觉或视觉惯性SLAM开源框架仅关注于单端(single-session)应用或仅提供了不带实时前端的大规模batch优化,它们通常是一个地图结构和算法未分离的非常具体的流程,缺乏完整性,并不能实现建图、维护、合并建图、重用前端等全流程,削弱了快速研发所需要的灵活性。

本文提出的maplab很好的解决了该问题,是一种用c++编写的视觉惯性建图开源框架,不仅提供了建图和定位,还包括了地图维护和处理能力,通过控制台操作可以很容易实现多段地图合并、稀疏化处理、闭环检测、稠密重建和可视化。此外,maplab还包括了基于优化的ROVIOLI(带定位功能的稳健VIO算法)。Maplab已经在微型无人机、无人车、无人艇和移动机器人等平台上测试过,也可以用于地图概述、地图质量评估、多段3D重建、拓扑建图、视觉定位和分散建图等方面。

据我们了解,maplab是第一个集成了非常多应用的视觉惯性建图框架,免费、开源,已经应用于研究和工业上。本文贡献主要有以下几点:(1)提出了一种支持多段建图的基于特征的视觉惯性建图方法;(2)提出了集成了定位功能的文件视觉惯性估计算法ROVIOLI;(3)给出了地图合并、稀疏化、地点识别、可视化等大量实例;(4)扩展性很好,便于开展研究;(5)各模块包括了评估方法。


2 相关工作

一种较早的视觉SLAM算法是PTAM,并行建图和跟踪局部地图的轻量化方法,针对增强现实应用开发的,因此没有大规模定位和离线处理部分。OKVIS是一种基于关键帧的视觉惯性估计器,通过跟踪最近关键帧构成的局部地图减少局部漂移。一些半稠密和稠密VO算法使用光度误差而非特征匹配实现高质量位姿估计,但不支持在已有地图上重定位。

ORB-SLAM和ORB-SLAM2能够实现建图及重定位,maplab与它不同之处在于提供了控制台借口的离线处理工具,具有高度的灵活性,易于用户扩展或修改处理流程,并且考虑到多段建图后用视觉惯性最小方差优化保证一致性。此外maplab的实时前端ROVIOLI也是非常值得强调的,使用图像patch强度而不是特征点使得稳健性提高,哪怕是在运动模糊情况下。

一些系统提供了从乱序图像集合中重建3D场景的功能,一般使用高效的大规模BA优化和特征匹配算法实现,但是不能处理惯性数据且不能提供实时位姿估计。


3 maplab框架

从用户角度看,框架主要包括两部分:(1)实时VIO和定位前端ROVIOLI,输入为视觉惯性原始数据,输出可用于建图的位姿估计;(2)离线maplab控制台,用户可以在这里以离线batch方式应用不同的地图算法。Maplab框架采用模块化设计,所有模块以package形式组织,基于catkin构建,编程使用c++11,其它第三方依赖包括Eigen和Ceres。框架提供了方便的输入输出ROS接口,使用RVIZ作为显示工具。

3.1 多段建图和定位流程

典型的maplab建图和定位工作流程如下图所示。首先使用ROVIOLI构建开环地图并存储,然后使用闭环检测、视觉惯性优化和多段地图配准等各种离线工具进行调优,构建的多段地图然后可以作为定位模式的紧凑地图,连续在线定位能够精确跟踪全局位姿,补偿VIO漂移。

3.2 离线控制台

通过控制台命令可以调用所有算法用于加载的地图,并且可以实时调整参数与在RVIZ中显示。通过保存和重新加载地图的中间状态,可以非常方便的组合多种算法进行处理。控制台使用插件架构,可以自动实时检测可用的插件,集成新算法或新功能并不需要核心包做任何修改;基于标准的视觉惯性地图类型的算法不需要做任何接口工作。

3.3 地图结构

采用叫做VI-map的数据结构,包括所有传感器的原始测量数据和环境的稀疏重建,每个地图可能包括多个mission,每个mission基于单段记录。Mission的核心结构是由顶点和边构成的图,顶点对应于某时刻的状态估计(位姿、IMU偏差、速度)和关键点与描述子(BRISK、FREAK)等视觉信息、跟踪信息和图像;边连接了相邻顶点,最常见的IMU边包括了顶点间的惯性测量数据。多个顶点的视觉观测可三角化为3d路标,路标本身存储在首次观测到它的顶点中。Mission间可能有闭环连接。Maplab中的坐标如下图所示。

该地图结构能够序列化为Google Protobuf格式,便于网络传输和文件存储。图像、稠密重建等数据密集型目标能够使用资源管理系统与地图建立映射,存储在硬盘上的它们可通过顶点、mission或时间戳与地图建立连接,降低了内存占用,这在稠密重建、大规模视觉定位中尤其有用。

3.4 maplab核心包

maplab框架包括了一些state-of-the-art算法的具体实施,可以通过控制台方便的使用它们,这里仅仅给出我们认为对机器人社区贡献比较大的算法。

VIWLS:视觉惯性加权最小二成优化算法,用于ROVIOLI前端初始化后或检测到闭环后的的地图调优,默认使用视觉和惯性数据构建优化问题,但也可以选择用码盘、GPS或其它类型的位姿先验。

闭环检测/定位:基于二进制描述子的复杂闭环检测和重定位算法,搜索后端使用inverted multi-index for efficient nearest neighbor算法。

ROVIOLI:在线视觉惯性建图和定位前端。

位姿图松弛:基于闭环检测的边进行位姿图优化,可以使用Cauchy损失增加对错误闭环的稳健性。

Aslam_cv2:视觉数据结构和算法,包括不同的相机和畸变模型、特征检测、提取、跟踪和几何视觉。

地图稀疏化:选择定位所需的最好路标,并使用关键帧稀疏化位姿图,对大规模地图或永久建图很重要。

稠密重建:包括稠密重建、深度融合和表面重建算法,并提供了CMVS/PMVS2接口。

3.5 ROVIOLI前端

ROVIOLI是建图和定位前端,使用原始视觉惯性数据建图并能在线实时定位,实在ROVIO算法的基础上扩展了定位和建图能力,可以选择VIO模式和LOC模式。定位所用地图可以使ROVIOLI刚建的地图,也可以说是从控制台导入的地图。ROVIOLI数据流如下图所示,特征跟踪模块检测和跟踪BRISK或FREAK关键点,然后执行帧间的特征匹配,匹配窗口根据陀螺仪积分预测以提高效率和稳健性。在LOC模式,使用2d-3d匹配关键帧和已有地图,通过P3P和RANSAC算法获得当前位姿。使用Map Builder同步各模块输出以构建视觉惯性地图VI-map。


4 应用案例

4.1 实时建图和定位

可以使用ROVIOLI建立感兴趣区域的视觉惯性地图,完成后自动检测闭环、优化、选择关键帧以获得更紧凑的定位地图。定位模式可加载地图获得无漂移的全局位姿估计。在EuRoC数据集上的轨迹、误差、耗时等评估结果依次如下图所示。

4.2 多段建图

本部分使用4段轨迹构建大学地图,每个轨迹包括地面、楼梯等,共包括1km的463000个路标,这么大的场景下常规的优化和闭环检测技术在不仔细选择数据情况下很难成功,我们使用顶点距离、方向和路标共视启发式构建关键帧,闭环检测可以识别各段间的几何变换,并使用非线性优化进行调优。最终构建的紧凑一致性8.2MB地图如下图所示。

上述建图通过在控制台执行下述命令实现。

4.3 地图维护

Maplab提供了地图综述功能使用integer-based-optimization执行路标选择,去除冗余路标降低地图大小,去除冗余的关键帧角点仅保留高效和精确状态估计所必须的关键帧。试验中使用4段地图,每段包括90m的约2000路标,使用第5个数据集进行查询,试图在数据库中定位每个角点,并判断定位误差是否小于50cm。执行的命令及实验结果如下图所示,可见关键帧可在定位质量损失很小情况下大大降低地图大小。

4.4 大规模建图

我们使用Google Tango花两天时间采集Zurich老城区的大规模、45段地图,使用ROVIOLI获得原始地图,然后加载到maplab进行对齐和优化,在32GB内存的电脑上BA位姿图松弛优化运行了一夜,结果如下图所示,轨迹长度16.48km,435k路标,7.3M观测,总共480MB,231分钟数据。

4.5 稠密重建

下图给出了maplab中提供的两种稠密重建工具结果,上图首先使用双目稠密重建计算深度图和最优相机位姿,然后在voxblox中融合构建表面图;下图使用过个RGBD相机记录数据基于CMVS/PMVS2重建。

 


英文名称:maplab:An Open Framework for Research in Visual-inertial Mapping and Localization

代码链接:https://github.com/ethz-asl/maplab


【转载声明】本文转载自公众号:机器学习4人工智能ML4AI,感谢作者提供素材。

登录查看更多
15

相关内容

即时定位与地图构建(SLAM或Simultaneouslocalizationandmapping)是这样一种技术:使得机器人和自动驾驶汽车等设备能在未知环境(没有先验知识的前提下)建立地图,或者在已知环境(已给出该地图的先验知识)中能更新地图,并保证这些设备能在同时追踪它们的当前位置。
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
专知会员服务
84+阅读 · 2019年12月13日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
【泡泡图灵智库】协同视觉-惯性SLAM
泡泡机器人SLAM
28+阅读 · 2019年9月6日
【泡泡一分钟】变化环境下激光地图辅助视觉惯性定位
泡泡机器人SLAM
15+阅读 · 2019年5月22日
已删除
将门创投
10+阅读 · 2019年3月6日
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
4+阅读 · 2015年8月25日
VIP会员
相关论文
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
4+阅读 · 2015年8月25日
Top
微信扫码咨询专知VIP会员