VINS简介与代码结构
Posted SLAM-BJTShang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VINS简介与代码结构相关的知识,希望对你有一定的参考价值。
VINS-Mono和VINS-Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案。是基于优化和滑动窗口的VIO,使用IMU预积分构建紧耦合框架。并且具备自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。
方案最大的贡献是构建了效果很好的融合算法,视觉闭环等模块倒是使用了较为常见的算法。
系列博客将结合课题组发表的paper,从代码层面,逐步剖析系统的各个模块,达到对单目VIO整体的把握,帮助自己理解各类算法,并开发出针对应用场景的视觉惯导SLAM系统。最终目标是使用在AR应用中(android)。
系统pipeline
主要分为五部分
1. 传感器数据处理:
- 单目相机Monocular Camera: Feature detection and Tracking
- IMU: Pre-integration
2. 初始化:
- 仅使用视觉构建SfM
- 将SfM结果和IMU预积分结果对齐
3. 基于滑动窗口的非线性优化:
4. 闭环检测:
5. 4自由度全局位姿图优化:
主要依赖的库只有OpenCV, Eigen和Ceres Solver,代码目录如下
核心算法都在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则是融合系统的主要部分。
为了方便看代码,整理了一下各个部分架构图(更新中):
processImage():
以上是关于VINS简介与代码结构的主要内容,如果未能解决你的问题,请参考以下文章