VINS-Mono和VINS-Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案。是基于优化和滑动窗口的VIO,使用IMU预积分构建紧耦合框架。而且具有自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。node
方案最大的贡献是构建了效果很好的融合算法,视觉闭环等模块却是使用了较为常见的算法。算法
系列博客将结合课题组发表的paper,从代码层面,逐步剖析系统的各个模块,达到对单目VIO总体的把握,帮助本身理解各种算法,并开发出针对应用场景的视觉惯导SLAM系统。最终目标是使用在AR应用中(Android)。架构
主要分为五部分框架
1. 传感器数据处理:优化
2. 初始化:blog
3. 基于滑动窗口的非线性优化:ip
4. 闭环检测:开发
5. 4自由度全局位姿图优化:博客
主要依赖的库只有OpenCV, Eigen和Ceres Solver,代码目录以下qt
核心算法都在feature_tracker和vins_estimator包中。
按照REDEME步骤跑EuRoC/MH_05_difficult.bag录好的数据结果以下:
使用rqt_graph获得系统的node和topic关系:
rosbag将记录好的imu数据和单目相机获取的图像数据分别发布到/imu0和/cam0/image_raw话题;/feature_tracker节点经过订阅/cam0/image_raw话题获取图像数据,/vins_estimator节点经过订阅/imu0话题获取imu数据,同时/feature_tracker节点将提取出的图像特征发布到/feature_tracker/feature话题,由/vins_estimator订阅获取。
所以,/feature_tracker节点负责视觉提取和跟踪,/vins_estimator则是融合系统的主要部分。
为了方便看代码,整理了一下各个部分架构图(更新中):