VINS-Mono论文学习与代码解读——目录与参考

2023-05-16

前言

港科大的VINS-Mono作为目前state of the art的开源VIO项目,是研究视觉与IMU融合的必读算法,网上的论文解读与代码实现也非常丰富(感谢!)。为更好地进行学习,本人将在学习之余逐步整理自己对算法的论文和实现的相关解读,欢迎大家一起讨论。

原文:VINS-Mono A Robust and Versatile Monocular Visual-Inertial State Estimator

VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono


目前已经在github上放出了相关代码注释:

https://github.com/ManiiXu/VINS-Mono-Learning

后续也会持续修改,欢迎大家共同交流,指出错误,star一下~


PS. 本人参考的VINS-Mono是171229版本,代码结构有所区别,将原来的"/vins_estimator"拆分出了一个"/pose_graph"节点。部分代码实现也有修改,并添加了一些新功能。

from github:
29 Dec 2017: New features: Add map merge, pose graph reuse, online temporal calibration function, and support rolling shutter camera.

其中 map reuse 可以参考文章:
Relocalization, Global Optimization and Map Merging for Monocular Visual-Inertial SLAM


目录!(不断更新中)

VINS-Mono论文翻译

VINS-Mono代码解读——启动文件launch与参数配置文件yaml介绍

VINS-Mono代码解读——各种数据结构 sensor_msgs measurements

VINS-Mono代码解读——视觉跟踪 feature_trackers

VINS-Mono理论学习——IMU预积分 Pre-integration

VINS-Mono代码解读——状态估计器流程 estimator

VINS-Mono代码解读——视觉惯性联合初始化 initialStructure sfm

VINS-Mono理论学习——视觉惯性对齐与外参标定

VINS-Mono理论学习——后端非线性优化

VINS-Mono理论学习——边缘化

VINS-Mono代码解读——滑动窗口的非线性优化流程 optimization slideWindow

VINS-Mono代码解读——回环检测与重定位 pose graph loop closing

VINS-Mono代码解读——四自由度位姿图优化 pose_graph optimize4DoF

TUM VIO数据集介绍与尝试

Realsense D435i如何拿到IMU数据并顺利运行VINS-Mono


VINS介绍:

VINS是一种具有鲁棒性和通用性的单目视觉惯性状态估计器。
该算法主要有以下几个模块:

  1. 预处理
    图像特征光流跟踪
    IMU数据预积分
  2. 初始化
    纯视觉Sfm
    Sfm与IMU积分的松耦合
  3. 基于滑动窗口的非线性优化实现紧耦合
  4. 回环检测与重定位
  5. 四自由度位姿图优化

在这里插入图片描述


rqt_graph

node only
在这里插入图片描述

node all在这里插入图片描述


代码的文件目录

1、ar_demo:一个ar应用demo
2、benchmark_publisher:接收并发布数据集的基准值
3、camera_model
   calib:相机参数标定
   camera_models:各种相机模型类
   chessboard:检测棋盘格
   gpl
   sparse_graph
   intrinsic_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_estimator
   factor:实现IMU、camera等残差模型
   initial:系统初始化,外参标定,SFM
   utility:相机可视化,四元数等数据转换
   estimator.cpp:紧耦合的VIO状态估计器实现
   estimator_node.cpp:ROS 节点函数,回调函数,主线程
   feature_manager.cpp:特征点管理,三角化,关键帧等
   parameters.cpp:读取参数


参考笔记:

VINS论文推导及代码解析 by 崔华坤

VINS技术路线与代码详解 by 五行缺帅wangshuailpp

VINS-Mono 学习笔记 by 童哲航

VINS-Mono 代码解读 by Rain-XIA

VINS-mono详细解读 by 极品巧克力

VINS代码注释:
https://github.com/castiel520/VINS-Mono by castiel520

https://github.com/QingSimon/VINS-Mono-code-annotation by QingSimon

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VINS-Mono论文学习与代码解读——目录与参考 的相关文章

  • 串口发送通信---UART发送---STM32F4实现

    串口发送程序配置过程 xff08 HAL库 xff09 初始化串口相关参数 xff0c 使能串口 HAL StatusTypeDef span class token function HAL UART Init span span cla
  • 基于UDP的文件传输VS编程

    要求 xff1a 实现基于UDP的文件传输 xff0c 客户端发送文件 xff0c 服务端接受文件 服务端实现 xff1a include 34 stdafx h 34 include 34 iostream 34 include 34 a
  • 成功解决VSCODE运行C++的报错问题g++

    成功解决VSCODE运行C 43 43 的报错问题g 43 43 解决方案调试 很久写C 43 43 了 xff0c 直接打开C 43 43 写代码测试一下 xff0c 报错 xff0c 真一脸懵逼 捯饬很久 xff0c 解决了问题 解决方
  • linux下的环境变量

    环境变量 环境变量 xff0c 是指在操作系统中用来指定操作系统运行环境的一些参数 通常具备以下特征 xff1a 字符串 本质 有统一的格式 xff1a 名 61 值 值 值用来描述进程环境信息 存储形式 xff1a 与命令行参数类似 ch
  • 【004 关键字】extern “C“的作用是什么?

    一 extern 34 C 34 的作用 extern 34 C 34 关键字常用于C 43 43 和C混合编程中 xff0c 用于指定函数或变量采用C语言的命名和调用约定 加上extern 34 C 34 后 xff0c 会指示编译器这部
  • C++模板编程--学习C++类库的编程基础

    目录 一 函数模板二 类模板三 实现C 43 43 STL向量容器vector代码四 理解容器空间配置器allocator的重要性 一 函数模板 1 模板的意义 xff1a 对类型也可以进行参数化了 2 函数模板 lt 61 是不进行编译的
  • cmake 学习使用笔记(二)库的生成与使用

    学习使用cmake 生成及使用库 xff0c 使用cmake 生成 lib 静态库 及动态库 xff08 dll xff09 及linux 下使用的静态库 a 和 动态库 xff08 so 也称为共享库 xff09 目录 使用工具 生成库
  • cmake 学习使用笔记(五)手动编译

    目录 编译cmake 项目 构建 方式一 xff1a 可执行文件生成的在当前目录 方式二 xff1a 可执行文件生成只制定目录 记录一下手动编译 cmake 项目 编译cmake 项目 项目结构 注意 xff1a 必须要有一个 CMakeL
  • 四旋翼无人机学习第5节--STM32最小系统外围电路分析

    文章目录 1 芯片手册分析2 stm32的外部晶振手册分析2 stm32的外部上电复位手册分析3 电源放置方法4 GND放置方法5 其他元器件放置方法6 网络放置方法7 快捷键分享8 原理图绘制成果分享 快速使用芯片的最好的方式 xff0c
  • 现代C++单文件库(header only)

    nlohmann json https github com nlohmann json easyloggingpp https github com amrayn easyloggingpp
  • 一、ROS创建工作空间

    一 ROS创建工作空间 1 什么是工作空间2 创建工作空间3 编译工作空间4 创建功能包5 编译功能包 xff08 重新编译工作空间 xff09 6 设置环境变量7 运行节点 1 什么是工作空间 工作空间 xff08 workspace x
  • 二、ROS集成开发环境

    二 ROS集成开发环境 1 安装terminator2 安装VScode3 在VScode中使用ROS3 1 创建工作空间3 2 启动VScode3 3 配置VScode3 4 创建功能包3 5 编写C 43 43 文件3 6 配置CMak
  • 十一、Ubuntu18.04下VSCode配置C/C++编译环境

    十一 Ubuntu18 04下VSCode配置C C 43 43 编译环境 1 安装VSCode2 安装插件3 创建工程4 总结 1 安装VSCode 这一步就不谈了 2 安装插件 编译一些简单的cpp文件 xff0c 下面几个插件就够用了
  • 十五、Typora官方主题 + 自定义主题

    十五 Typora官方主题 43 自定义主题 1 下载官方主题2 在官方主题的基础上自定义 1 下载官方主题 首先去Typora官网下载自己喜欢的主题 xff1a 官方主题下载 例如我这里选择 Vue 我们只用到里面的两个主题文件vue c
  • linux---进程控制

    进程控制 fork函数 创建一个子进程 pid t fork void 失败返回 1 xff1b 成功返回 xff1a 父进程返回子进程的ID 非负 子进程返回 0 pid t vfork void 同样时创建一个子进程 xff0c 但是他
  • 十六、windows11下VSCode配置C/C++编译环境

    十六 windows11下VSCode配置C C 43 43 编译环境 1 安装VSCode2 中文插件3 MinGW编译器下载和配置4 VSCode配置c c 43 43 编译环境5 测试是否配置成功6 使用万能头文件 include l
  • 十七、WSL2的安装与使用(Win11)

    十七 WSL2的安装与使用 xff08 Win11 xff09 1 准备工作1 1 开启主板 BIOS 虚拟化1 2 检查是否成功开启虚拟化1 3 开启开发者模式1 4 开启所需Windows功能1 5 下载 WSL 内核升级包 2 开始安
  • 十八、Ubuntu20.04 + VSCode + Opencv3.4.16 配置 + WSL2 可视化

    十八 Ubuntu20 04 43 VSCode 43 Opencv3 4 16 配置 43 WSL2 可视化 1 下载和解压 OpenCV3 4 162 使用 cmake 编译 OpenCV3 配置环境4 代码测试4 1 录制视频4 2
  • IntelRealSense 更新D435固件时,运行rs-fw-update -l后报错:找不到命令

    环境 xff1a Ubantu18 04 摄像头 xff1a IntelRealsense D435 首先确定电脑里已经成功安装了 librealsense 想要更新下D435的固件 xff0c 但是运行rs fw update l后报错
  • Linux _ Shell编程 — 变量

    一 shell脚本的基础知识 1 shell脚本的本质 语言的分类有 xff1a 编译性语言 C语言 C 43 43 语言 JAVA PHP Python等 xff0c 不同编译器编译的执行文件不同 xff0c 运行的平台也不尽相同 解释性

随机推荐