Maplab开源VI-SLAM框架介绍

https://blog.csdn.net/ccfiricen/article/details/79089694

Maplab开源VI-SLAM框架介绍

1.概述

2.系统架构

3.使用例程

1. 概述

Maplab是一个开源的VI-SLAM(视觉惯性-即时定位与地图构建)框架。它由著名的ETH Zurich, Autonomous Systems Lab (苏黎世联邦理工学院自动系统实验室) 开发,包含了视觉SLAM相关的多种算法与工具:在线VIO(视觉惯性里程计),进行在线位姿估计并创建地图;在线VI-Localization(视觉惯性定位),进行基于地图的全局无漂移视觉定位;地图管理,用于修改和维护地图,包括地图合并,稀疏化,地点识别和可视化。

2. 系统架构

Maplab框架主要由两部分组成:

1) 在线前端ROVIOLI,实现VIO和定位。它接收图像与惯性传感器数据作为输入,输出全局位姿估计,并建立VI(视觉-惯性)地图。

2) 离线maplab-console,允许用户以离线批处理方式在地图上进行各种算法处理,可以作为新算法的研究试验平台。

maplab框架遵循可扩展和模块化的设计原则,所有的软件组件都是按照软件包来组织管理,采用catkin(ROS的官方构建系统)来构建编译。整个框架都使用C ++ 11标准,所依赖的第三方库都是一些流行的和维护良好的库,如线性代数库Eigen,非线性优化库Ceres 等。此外,maplab提供了ROS接口,方便原始传感器数据输入与结果输出,该框架使用RViz作为三维可视化工具。

2.1 ROVIOLI:视觉-惯性建图与定位

系统中建图和定位的典型工作流程如下图所示。

 

通常,利用多个建图任务,以确保对同一个区域在空间和时间上的覆盖,进而建立一个更好的单一的定位地图。首先,使用ROVIOLI的VIO模式,通过多个任务建立开环地图,并存储到磁盘。 然后利用多种离线工具进行优化,例如闭环检测,视觉惯性优化或联合注册(地图合并)等,生成一个的紧凑定位地图。之后,ROVIOLI利用先前生成的地图,进行在线定位。持续的在线定位提高了全局位姿估计与跟踪的精度。

2.2. maplab console:离线用户界面

maplab框架使用控制台用户界面进行地图的离线操作。能够同时加载多个地图,进行多任务处理。所有的算法都可以通过控制台命令,应用于已加载的地图。所有算法的特定参数都由控制台标志或文件设置,并且可以在运行时修改。结合RViz的可视化,便于算法原型设计和参数调整。

2.3核心软件包

maplab框架包含几种最先进算法的实现,它们都可以通过maplab控制台使用。以下为一些重要的算法软件包:

VIWLS:视觉-惯性加权最小二乘优化。

Loop closure/localization: 闭环检测与定位系统。

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

Posegraph relaxation: 位姿图松弛优化。

aslam cv2:一个计算机视觉数据结构与算法的集合。

Map sparsification: 选择最佳地标以进行地图稀疏化。

Dense reconstruction:稠密重建,深度融合和表面重建的算法集合。

3. 使用例程

maplab主要包含五个常用的功能:mapping and localization(在线建图和定位),multi-session mapping(多地图构建),map maintenance(地图维护),large-scale mapping(大规模建图)和dense reconstruction(稠密重建)。

3.1 在线建图和定位

对于许多机器人应用来说,获取无漂移全局位姿态估计是非常重要的。通过示教或重复场景,以增强机器人操纵或导航的精度。在maplab中,首先使用ROVIOLI来创建一个初始的VI地图。所需的传感器数据可由离线的Rosbag或在线的ROS主题提供。在建图的最后阶段,VI图自动进行闭环检测,优化,关键帧提取等,综合生成一个紧凑的定位地图。 接下来,基于先前生成的定位图,ROVIOLI可以获得无漂移的全局姿态估计,如下图所示。

3.2. 多地图构建

在许多地图应用中,单次建图不可能覆盖整个环境。除此之外,尽可能在多种不同的视觉外观条件下采集环境信息也是有益的。因此,maplab提供了多地图注册工具,合并优化多个地图,生成单一一致的地图。

此用例演示了从4个单独的轨迹创建建筑物地图的过程。每条轨迹都穿过底层,楼梯和另外一层。结合起来,它们覆盖超过1000米,包含约463,000个地标。在如此大的地图上,若未进行细致的数据选择,许多常见的操作如优化或闭环检测将变得棘手。出于这样的原因,Maplab采用基于顶点距离,方向和地标联合可见性的启发式关键帧算法。其闭环检测算法正确识别所有任务之间的几何转换,非线性优化改进几何结构,结果生成一个紧凑的(8.2 MB),几何一致可供ROVIOLI定位的地图。整个建筑如下图所示。

 

3.3. 地图维护

通过多任务构建的大规模的基于特征的模型,通常包含数千的地标占用相当大的存储。然而对于高质量的定位,这并不是必需的。Maplab提供了一个基于整数优化的地标选择方法,以生成一个概要地图。算法尝试在保持一定环境覆盖率的前提下,去除不常见的地标。此外,Maplab采用关键帧算法去除冗余顶点,仅保留有助于高效高精度状态估计的顶点。同时,通过删除顶点也消除了许多顶点-地标关联。地图概要算法和关键帧算法在没有大的位姿估计质量损失的情况下,显著减小了模型尺寸,如下表所示。

 

3.4. 大规模建图

此部分Maplab将展示大规模的建图能力以及对除VI传感器之外的传感器适用性。为此使用Google Tango平板电脑,录制了一个大规模、多任务的苏黎世老城区地图。导出原始视觉惯性数据并用ROVIOLI进行处理,生成初始的开环地图。 然后将这些地图加载到maplab控制台中进行对齐,优化等处理。优化后的VI地图在到苏黎世地图上的投影如下图所示。

                                  

3.5. 稠密重建

机器人中的许多应用,如路径规划,检测等需要稠密的3d环境信息。Maplab提供了几个稠密重建的工具,使用优化稀疏图中的顶点姿态,来计算稠密的深度信息:

1)立体稠密重建:为了从多相机系统计算深度图,这个工具首先识别立体相机是否适合平面校正。它沿着轨迹,利用SGM(半全局块匹配)算法来计算深度。所得的深度图(或点云)附加到VI地图中,并存储在资源系统中。

2)基于TSDF的深度融合:一旦获取包含深度信息(由上述方法计算得到,或RGB-D传感器获取)的VI地图,就可以利用全局一致的相机位姿创建一个全局一致的三维结构。为此,maplab采用voxblox,进行基于TSDF的深度融合与表面重建。可以将深度图或点云数据放入voxblox网格中,并将表面网格存储到文件系统。

3)导出到CMVS / PMVS2:为了更精确的稠密重建,maplab提供了一个转换命令,将稀疏的VI地图及图像转换到开源多视图立体CMVS / PMVS2的输入格式。尽管支持灰度图像作为输入,但推荐使用RGB图像以获取更好的结果。

参考文献:

maplab: An Open Framework for Research in Visual-inertial Mapping and Localization

https://github.com/ethz-asl/maplab

猜你喜欢

转载自blog.csdn.net/chengde6896383/article/details/81672016