Maplab开源VI-SLAM框架学习(一)Maplab框架介绍
最近开始学习上了一个VI-SLAM框架,现在将相关学习过程记录下来。
参考文章:Maplab框架介绍(一)
Maplab框架官网
Maplab开源VI-SLAM框架介绍
Maplab框架介绍
github源码
Maplab:研究视觉惯性建图和定位的开源框架(泡泡机器人)
一、术语
地图:通过地图构建生成并用于定位的环境表示。
地图构建:机器人通过融合一个或多个传感器的输出来建立环境模型的过程。
定位:机器人推断其位置的过程,一个环境的模型。
SLAM:同时定位和地图构建是机器人在定位和地图构建之间交替进行的过程,以便在以前未知的环境中构建地图,同时从中进行定位。
地标:从多个连续摄像机图像可见的点。根据这些信息,点的位置可以被三角化。
回环检测:识别先前访问的地点的过程,它允许机器人纠正在探索环境期间积累的任何错误。类似于我们人类认识的地方,然后告诉我们关于我们在环境的哪个位置的信息。
稠密重建:从图像中构建具有大量3d点的3d模型的过程。
二、概观
现代自动机器人系统由许多软件构建块(SLAM,路径规划,场景解释)组成,其中大多数取决于某种形式的定位和地图构建。因此,需要一个API来允许这些不同的元素进行通信,并尽可能减少相互依赖性。
长期定位循环
为了使机器人能够执行长期操作,上述算法需要紧密集成,并且它们可以相互补充。我们把这个组合称为终身定位循环:
在线定位和注册:来自机器人传感器的实时自我运动估计(SLAM)与先前已知的地图(定位)的更新相结合。这允许机器人不断地估计它在全局参照系中的姿态,并由此执行它的任务。
离线几何对齐:由代理在线捕获的数据需要对齐并注册到之前已知的参考数据,如建筑物模型或由其他代理创建的地图。这通常是通过使用闭环算法来完成的。然后联合优化组合数据以实现所有相关量(3d结构,轨迹等)的最佳(最大似然)估计。
地图汇总:为了生成环境的紧凑表示,我们需要从地图中删除冗余信息,并专注于信息量最大的部分。最终的模型应该只包含对本地化最有用的部分数据(步骤1)。
三维重建:为了使机器人能够避开障碍物并在环境中导航,建立一个比第一步中的SLAM算法给出的环境更丰富的表示是非常重要的。
三、框架的结构
maplab框架由两个主要部分组成:线前端ROVIOLI和离线maplab控制台。
ROVIOLI前端
- 用于制图和本地化的在线前端;
- 将ROVIO扩展到6DoF本地化约束,;
- 单会话的独立操作,;
- 多会话地图支持使用控制台。
离线maplab控制台
它允许细化地图,将多个地图合并在一起并使用它们,例如用于密集重建。其中的功能包括以下几点:
- 方便的控制台用户界面和地图管理器来访问地图;
- 一个插件架构,可以使用新的命令和算法轻松扩展它;
- 视觉惯性最小二乘优化,可以通过附加传感器进行扩展;
- 使用可切换约束的稳健姿态图放松;
- 基于BRISK / FREAK的环路;
- 一直构建的地图摘要;
- 密集的重建和与Voxblox的接口。
maplab的典型工作流程
(a)在VIO模式下使用ROVIOLI构建地图。
(b)使用maplab控制台优化地图。合并多个地图。执行实验并应用您选择的算法。
(c)可选:使用结果图在本地化模式下使用ROVIOLI进行定位。定位增加了视觉 - 惯性姿态估计的准确性。