视觉惯导slam研究综述

文章目录

  • 1.引言
  • 2.MSCKF
  • 3. OKVIS
  • 4. VINS-Mono
  • 5. ROVIO&Maplab
    • 5.1 ROVIO
    • 5.2Maplab

1.引言

作为vins(视觉惯性导航系统,visual-inertial system)的基础–纯视觉算法,分为两种:一种是基于批量的运动恢复结构(SfM, Structure-from-Motion)方法,一种是基于滤波(filter)的方法。
然而,随着研究的进展,与滤波的方法相比,基于非线性优(nonlinear optimization)的方法(如通常用于SfM的),在相接近的计算资源上,可以提供更更好的准确性,这是因为非线性优化的⽅方法保留了结构稀疏性问题(the structural sparsity of the problem)。从此以后,通过稀疏的关键帧图(key frame graph)及其与之相对应的路标(land mark)进行非线性优化的方法变得流行起来(Klein and Murray (2007),‘Parallel tracking and mapping for small ar workspaces’)。
于VINS最早的研究结果是基于样条的批量的方法和基于滤波的方法。接下来,各种基于滤波的方法的论文发表出来,这些研究显著的提⾼高了了精度和降低了了计算复杂度。

2.MSCKF

在基于滤波的方法中,有一个显著贡献的是(Mourikis and Roumeliotis, 2007, ‘A multi-state constraint Kalman filter for vision-aided inertial navigation’),他提出了⼀种基于EKF的单目视觉实时融合,称为多状态约束卡尔曼滤波器器(MSCKF),在EKF更更新之前,先基于一段时间内的一组相机的位姿,生成非线性三角化(nonlinear-triangulation)的路标(landmarks), 然后再进行EKF更更新。
MSCKF是基于滤波优化的VIO算法,其架构十分简单。主要包括视觉前端和滤波后端两部分。且由于EKF后端的运算速度相当快,两个部分可以直接合
在一起,无需多线程即可满足实时性要求。不过,目前也有开源方案采用了了双线程的方式将前后端分开(MSCKF_VIO)。
由于MSCKF的前后端相对独立,下面分别介绍这两部分。

  1. 视觉前端
    MSCKF的视觉前端功能是进行特征点跟踪,可采⽤用包括描述子匹配和KLT光流等各种方法实现。由于EKF后端对特征匹配野值较为敏敏感,因此前端的需具备较好的特征跟踪性能。此外,由于后端非常轻量,MSCKF的帧率取决于视觉前端。最终,视觉前端需要给后端的信息包括当前图像帧中的特征点观测,包括特征ID以及像素坐标(或相机系归一化坐标)。
  2. EKF后端
    后端是一套采用增广状态的误差EKF算法。主要包括两个部分,即状态预测和测量量更新。滤波器器主状态采用15维IMU状态,包括载体在世界系下的位置、速度和姿态,以及陀螺仪和加速度计的bias。增广状态为一个最大包含指定数量历史相机位姿的滑动窗。每当后端新拿到新一帧图像的特征点信息后,首先进INS递推,同时进行滤波器协方差矩阵的预测。然后将最新帧对应的相机位姿误差增广到滤波器器状态中。随后,判断是否有特征点不再被跟踪,利用这些丢失特征及在滑窗中的观测,构建多状态约束观测残差,进行测量更新。最后,判断滑动窗是否到达最大尺寸,如果已经到达,则删除一些历史相机位姿。
    综上所述,整个算法的流程图如下所示:

3. OKVIS

OKVIS,全称(Open Keyframe-based Visual-Inertial SLAM)。是基于紧耦合的双目VIO,论文在2014年12月首次发表,它由著名的苏黎世联邦理工学院自动系统实验室) 开发。
相关论文有两篇《Keyframe-Based Visual-Inertial Odometry Using Nonlinear Optimization》 和《Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization》。随后在github开源:
https://github.com/ethz-asl/okvis。
okvis引入了一种基于关键帧的优化方法,其中一组非连续的过去相机姿态和一系列近期惯性状态,与惯性测量相关联,被用于非线性优化以及进行精确的轨迹估计。
okvis的代码,输出的只有6自由度的位姿,没有回环检测,没有地图,因此并不不是完整的SLAM。
okvis使用BRISK算法来进行特征点提取,同时okvis支持多个传感器之间的融合,如多个摄像头和imu之间的数据融合。
okvis的代码框架清晰,它包含了紧耦合和多传感器整合,代码实现清晰优雅

4. VINS-Mono

VINS-Mono 是香港科技大学(HKUST)沈老师的团队开发的紧耦
合的单目视觉惯性系统。
相关的论文有《VINS-Mono: A Robust and Versatile Monocular Visual-
Inertial State Estimator》、《Robust initialization of monocular visual-inertial estimation on aerial robots》、《Online Temporal Calibration for Monocular Visual-Inertial Systems》。
相关的代码已经开源:
PC 端:
https://github.com/HKUST-Aerial-Robotics/VINSMono
算法如下图
视觉惯导slam研究综述_第1张图片

5. ROVIO&Maplab

5.1 ROVIO

ROVIO是苏黎世联邦理工学院(ETH)Michael Bloesch的教授开发的紧耦合的单目视觉惯性系统。
基本原理:惯性测量用于滤波器的状态传递过程;对于视觉方面的信息,作者主要是通过将路标点在图像中对应的点周围的图像块做为路标点的描述子,从而得到光度误差。然后将光度误差进行变换得到迭代卡尔曼滤波IEKF中的innovation term,进而进行滤波状态的更新。
相关的论文有《IEKF-based Visual-Inertial Odometry using Direct Photometric Feedback》
相关的代码已经开源:
https://github.com/ethz-asl/rovio
特征提取如下图:

5.2Maplab

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

  1. 在线前端ROVIOLI,实现VIO和定位。它接收图像与惯性传感器数据作为输入,输出全局位姿估计,并建立VI(视觉-惯性)地图。
  2. 离线maplab-console,允许用户以离线批处理方式在地图上进行各种算法处理,可以作为新算法的研究试验平台。
    系统中建图和定位的典型工作流程如下图所示:
    视觉惯导slam研究综述_第2张图片
    通常,利用多个建图任务,以确保对同一个区域在空间和时间上的覆盖,进而建立一个更好的单一的定位地图。首先,使用ROVIOLI的VIO模式,通过多个任务建立开环地图,并存储到磁盘。 然后利用多种离线工具进行优化,例如闭环检测,视觉惯性优化或联合注册(地图合并)等,生成一个的紧凑定位地图。之后,ROVIOLI利用先前生成的地图,进行在线定位。持续的在线定位提高了全局位姿估计与跟踪的精度。
    使用例程:
    maplab主要包含五个常用的功能:mapping and localization(在线建图和定位),multi-session mapping(多地图构建),map maintenance(地图维护),large-scale mapping(大规模建图)和dense reconstruction(稠密重建)。
    在线建图和定位
    maplab中,首先使用ROVIOLI来创建一个初始的VI地图。所需的传感器数据可由离线的Rosbag或在线的ROS主题提供。在建图的最后阶段,VI图自动进行闭环检测,优化,关键帧提取等,综合生成一个紧凑的定位地图。 接下来,基于先前生成的定位图,ROVIOLI可以获得无漂移的全局姿态估计.
    视觉惯导slam研究综述_第3张图片

多地图构建
在许多地图应用中,单次建图不可能覆盖整个环境。除此之外,尽可能在多种不同的视觉外观条件下采集环境信息也是有益的。因此,maplab提供了多地图注册工具,合并优化多个地图,生成单一一致的地图。
此用例演示了从4个单独的轨迹创建建筑物地图的过程。每条轨迹都穿过底层,楼梯和另外一层。结合起来,它们覆盖超过1000米,包含约463,000个地标。其闭环检测算法正确识别所有任务之间的几何转换,非线性优化改进几何结构,结果生成一个紧凑的(8.2 MB),几何一致可供ROVIOLI定位的地图。整个建筑如下图所示。
视觉惯导slam研究综述_第4张图片
地图维护
通过多任务构建的大规模的基于特征的模型,通常包含数千的地标占用相当大的存储。然而对于高质量的定位,这并不是必需的。Maplab提供了一个基于整数优化的地标选择方法,以生成一个概要地图。算法尝试在保持一定环境覆盖率的前提下,去除不常见的地标。
在这里插入图片描述
大规模建图
此部分Maplab将展示大规模的建图能力以及对除VI传感器之外的传感器适用性。为此使用Google Tango平板电脑,录制了一个大规模、多任务的苏黎世老城区地图。导出原始视觉惯性数据并用ROVIOLI进行处理,生成初始的开环地图。 然后将这些地图加载到maplab控制台中进行对齐,优化等处理。优化后的VI地图在到苏黎世地图上的投影如下图所示。

视觉惯导slam研究综述_第5张图片

你可能感兴趣的:(视觉slam学习,无人驾驶算法学习)