VINS-MONO概述
VINS-Mono是HKUST的Shen Shaojie团队开源的一套Visual-Inertial融合定位算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono,是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果很好,接下来对会该算法框架逐步解析,以便二次开发。
那么为什么要进行视觉与IMU的融合呢,自己总结的主要有以下几点:
- 视觉与IMU的融合可以借助IMU较高的采样频率,进而提高系统的输出频率。
- 视觉与IMU的融合可以提高视觉的鲁棒性,如视觉SLAM因为某些运动或场景出现的错误结果。
- 视觉与IMU的融合可以有效的消除IMU的积分漂移。
- 视觉与IMU的融合能够校正IMU的Bias。
- 单目与IMU的融合可以有效解决单目尺度不可观测的问题。
总体布局
该算法主要有以下几个模块:
1.预处理
图像特征光流跟踪
IMU数据预积分
2.初始化
纯视觉Sfm
Sfm与IMU积分的松耦合
3.基于滑动窗口的非线性优化实现紧耦合
4.回环检测与重定位
5.四自由度位姿图优化
原论文:
- 系统从测量预处理(IV)开始,在其中提取和跟踪特征,对两个连续帧间的IMU测量值进行预积分。
- 初始化过程(V)提供了所有必要的值,包括姿态、速度、重力向量、陀螺仪偏置和三维特征位置,用于引导随后的基于非线性优化的VIO。
- VIO(VI)与重定位(VII)模块紧密地融合了预先积分的IMU测量、特征观测和回环重新检测到的特征。最后,位姿图优化模块(VIII)接受几何验证的重定位结果,并进行全局优化以消除漂移。
- VIO、重新定位和位姿图优化模块在多线程设置中同时运行。每个模块有不同的运行速度和实时保证,以确保在任何时候可靠运行。
在正常运行过程中,初始化只进行一次。前端负责不断地提取特征点发给后端;后端负责IMU数据采集,预积分和优化/滑窗等操作。前端和后端在运行过程中不断地循环。
或者:
这个系统包括以下几个过程:特征提取与发布;IMU提取与预积分;初始化;滑窗与优化;回环检测。
代码主要包括3个node:feature_tracker,vins_estimator,pose_graph,其中feature_tracker仅负责特征点提取和发布,pose_graph关键帧的选择/位姿图建立/回环检测,而vins_estimator的内容最多了,包含了初始化,滑窗,优化等后端内容和IMU预积分等前端内容,并且在这个结点里分出了2个线程。
一般来讲,一个标准的SLAM系统是前后端分离的,如下图所示,
而VINS-MONO系统,他的前端仅包括光流计算;初始化等工作都放在vins_estimator里面了。
我的理解它之所以这么做,是因为IMU的数据获取如果放在前端,预积分完了之后还需要advertise到ROS系统里,让后端接收,与其这样,还不如让后端直接接收IMU数据就在后端处理了,减少通信过程。
VINS节点通信过程如下图所示,‘
rqt_graph
node only
更具体一些如下,
node all:
代码的文件目录
代码的文件目录
1、ar_demo:一个ar应用demo
2、benchmark_publisher:接收并发布数据集的基准值
3、camera_modelcalib:相机参数标定camera_models:各种相机模型类chessboard:检测棋盘格gplsparse_graphintrinsic_calib.cc:相机标定模块main函数
4、config:系统配置文件存放处
5、feature_trackers:feature_tracker_node.cpp ROS 节点函数,回调函数feature_tracker.cpp 图像特征光流跟踪
6、pose_graph:keyframe.cpp 关键帧选取、描述子计算与匹配pose_graph.cpp 位姿图的建立与图优化pose_graph_node.cpp ROS 节点函数,回调函数,主线程
7、support_files:帮助文档、Bow字典、Brief模板文件
8、vins_estimatorfactor:实现IMU、camera等残差模型initial:系统初始化,外参标定,SFMutility:相机可视化,四元数等数据转换estimator.cpp:紧耦合的VIO状态估计器实现estimator_node.cpp:ROS 节点函数,回调函数,主线程feature_manager.cpp:特征点管理,三角化,关键帧等parameters.cpp:读取参数
接下来为论文中的符号与坐标系定义:
- w是世界坐标系(world frame)。重力方向与世界坐标系z轴对齐。
- b是本体坐标系(body frame),我们把它定义为与IMU坐标系相同。
- c是相机坐标系(camera frame)。我们同时使用旋转矩阵R和Hamilton四元数q来表示旋转。我们主要在状态向量中使用四元数,也用旋转矩阵来表示三维向量的旋转。
- ck表示获取第k个图像时的相机坐标系。⊗表示两个四元数之间的乘法运算。gw是世界坐标系上的重力向量。最后,我们将(^)表示为某一具体量的噪声测量值或估计值。
更多可见VINS-Mono 论文解读
VINS-MONO概述相关推荐
- m2dgr数据集在vins mono运行
m2dgr数据集在vins mono运行 1.代码的修改 1.1 yaml文件的修改 1.2修改VINS-mono轨迹保存代码 1.3修改launch文件 2 EVO显示轨迹 2.1运行比较结果 参考 ...
- SLAM之小觅相机跑开源方案(ORB_SLAM2,VINS MONO,VINS FUSION,RTAB-Map)
传感器: 小觅相机标准版 开源SLAM方案: ORB_SLAM2,VINS MONO,VINS FUSION,RTAB-Map 测试地点: 室内大厅(光线不均)/ 露天阳台 实现形式: 小觅相机 / ...
- 的环境下 qt 运行在_Ubuntu16.04环境下运行vins mono(环境配置及编译)之ROS kinetic的安装...
所需环境:ubuntu16.04+ROS kinetic+opencv 3.3.1+eigen3.3.3+ceres solver 1.14 1.ROS Kinetic 的安装 (1)设置source ...
- VINS Fusion GPS融合部分
概述 VINS Fusion在VINS Mono的基础上,添加了GPS等可以获取全局观测信息的传感器,使得VINS可以利用全局信息消除累计误差,进而减小闭环依赖. 局部传感器(如相机,IMU,激光雷达 ...
- vins 解读_代码解读 | VINS 视觉前端
AI 人工智能 代码解读 | VINS 视觉前端 本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 v ...
- 国内 Mono 相关文章汇总
一则新闻<软件服务提供商Xamarin融资1200万美元>,更详细的内容可以看Xamarin的官方博客Xamarin raises $12M to help you make better ...
- SLAM的通用框架:GSLAM
SLAM的通用框架:GSLAM GSLAM: A General SLAM Framework and Benchmark 论文链接: http://openaccess.thecvf.com/con ...
- 三维视觉惯性SLAM的有效Schmidt-EKF
三维视觉惯性SLAM的有效Schmidt-EKF An Efficient Schmidt-EKF for 3D Visual-Inertial SLAM 论文地址: http://openaccess ...
- 基于简化点云地图的语义边缘对齐的单目定位方法
标题:Compact 3D Map-Based Monocular Localization Using Semantic Edge Alignment 作者:Kejie Qiu, Shenzhou ...
- CamVox:一种低成本、高精度的激光雷达辅助视觉SLAM系统
标题:VCamVox: A Low-cost and Accurate Lidar-assisted Visual SLAM System 作者:Yuewen Zhu, Chunran Zheng, ...
最新文章
- c++精确到小数点后两位_高考试卷的小数点是怎么算入总分的?
- Azure DevOps 中 Dapr项目自动部署流程实践
- controller属于哪一层_别急着换5G,4G手机同样值得考虑!哪几款安卓手机称得上4G机皇?...
- java从键盘上录入信息
- uitextfield 键盘类型_以编程方式更改UITextField键盘类型
- vue-element-admin 设置默认语言
- Java API下载和查阅方法
- java适配器模式_java设计模式之适配器模式
- halcon中的深度学习
- 提升 10 倍!阿里云对象存储 OSS 可用性 SLA 技术揭秘
- 计算机专业英文面试,计算机专业面试英文自我介绍
- Kernel 日志缓存大小修改
- 为什么会出现403 Forbidden错误?三分钟教你快速解决问题!
- 编写一个触发器:当修改一个学生专业的时候(转专业),则自动将本学期新专业同学全都选修的课程给该同学选修
- 解空间树和搜索空间树
- 续 winform 打包-集合dotnetfx文件夹到一个exe
- 科技热点周刊|Linux 30 周年、Horizon Workroom 发布、Humanoid Robot、元宇宙
- 密码极客经济学博士揭秘,2020年哪个区块链项目最值期待?
- 【无标题】关于Java——给即将开学的弟弟送上一份礼物
- mysql兼容微信表情