vins概述

2023-05-16

基本框架如上,VINS的功能模块可包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测及闭环优化。代码中主要开启了四个线程,分别是:前端图像跟踪、后端非线性优化(其中初始化和 IMU 预积分在这个线程中)、闭环检测、闭环优化。

正常运行过程中,初始化只进行一次,前端不断获取特征点发送给后端,后端进行IMU数据采集、预积分、优化和滑动窗口操作等等。

1.预积分:IMU得到的是角速度和加速度,通常对其积分,来获得位姿信息(位置、速度、角度)。又因为IMU采集频率比图像获取的频率高,所以要进行预积分使两者对齐。

2.初始化:初始化要做的事其实说起来很简单,就是计算出绝对尺度s、陀螺仪偏置bg、加速度偏置ba、重力加速度G和每个IMU时刻的速度v。用SFM进行纯视觉估计滑窗内所有帧的位姿及 3D 点逆深度,最后与 IMU 预积分进行对齐求解初始化参数(松耦合)。(视觉系统获取的深度是伪深度,与现实世界差一个尺度,所以需要IMU来标定这个尺度。)

用 SFM求解滑动窗口内所有帧的位姿(以第一帧作为参考坐标系)和所有路标点的 3D 位置。然后将 SFM 的结果与 IMU 预积分的值进行对齐,实现对陀螺仪偏置的校正,再求解每一帧对应的速度,求解重力向量方向,恢复单目相机的尺度因子。

3.后端非线性优化:VIO 紧耦合方案的主要思路就是通过将基于视觉构造的残差项和基于 IMU 构造的残差项放在一起构造成一个联合优化的问题,整个优化问题的最优解即可认为是比较准确的状态估计。

基于滑动窗的紧耦合后端非线性优化:将视觉约束、IMU约束、闭环约束放到一个大的目标函数中进行非线性优化,求解出滑动窗口中所有帧的PVQ、bias等。

在视觉约束和IMU约束中,基本思想是找到优化状态向量,然后通过视觉残差和IMU测量残差分别对状态向量求导,获得视觉和IMU预积分的Jacobian和协方差矩阵。

4.闭环优化:VINS 是采用 BRIEF 描述子的 DBoW2 词袋进行闭环检测。因为前端识别的 Harris 角点数量通常只有 70 个(VINS-Mobile),对于闭环检测远远不够,因此会对新来的 KeyFrame 即后端非线性优化刚处理完的关键帧,再重新检测出 500 个 FAST 角点进行闭环检测用,同时对所有新老角点进行 BRIEF 描述。

然后,计算当前帧与词袋的相似度分数,并与关键帧数据库中所有帧进行对比,并进行闭环一致性检测,获得闭环的候选帧。当检测到闭环后,我们利用 BRIEF 描述子对闭环对的老帧500个FAST 角点,和当前帧中的 70个Harris角点进行邻域匹配,然后对匹配点对利用求基础矩阵对异常点进行 RANSAC 排除。当匹配点超过阈值我们则认为该候选帧是一个正确的闭 环帧 。

当后端优化完成后,会将滑窗内的次新帧进行闭环检测,即首先提取新角点并进行描述,然后与数据库进行检索,寻找闭环帧,并将该帧添加到数据库中。当检测到闭环帧后,会将闭环约束添加到后端的整体目标函数中进行非线性优化,得到第 i 帧(注意这里的帧为闭环帧中的老帧)经过滑窗优化后的位姿,这时可以直接根据计算结果修正滑窗内所有相机的位姿,但是因为此处计算的T i←i_opt 并不准 确 , 因此我们会在检测 到闭环成功后,进行PoseGraph 的四自由度优化,来计算T i←i_opt ,并将此值(r_drift、t_drift)传回给后端优化线程,来更新滑窗内的相机位。

仅供自己学习记录,若有侵权请联系我删除。

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

vins概述 的相关文章

  • 从零完成slam实战,以Vins-Fusion为例

    写在前面 1 本文以vins fusion为例 xff0c 是因为其框架正统 简单清晰 xff0c 易于调试和后续改进 xff1b camera imu外参及同步时间td可实时估计 xff1b 已有融合gps方案且较为容易可添加融合其它传感
  • 通过跟踪效果来看vins输出结果

    下面是vins跑出来的结果 xff0c vio输出是绿线轨迹 线速度是0 28m s xff0c 拐角的地方是我根据蓝线把vio轨迹掰正了 vio在初始阶段走的比较弯曲 xff0c 后有一段笔直的轨迹 xff0c 这里旋转非常慢 xff0c
  • 港科大VINS-MONO入门(一):框架入门及源码解析

    一 VINS介绍 VINS Mono是HKUST的Shen Shaojie团队开源的一套Visual Inertial融合定位算法 介绍见 https github com HKUST Aerial Robotics VINS Mono 论
  • realsense d435i 跑 vins-fusion

    1 ros 下的d435i 相关驱动以及ros包的安装 sudo apt get install rod melodic realsense2 camera 2 realsense ros 包的修改 原始的launch文件一是没打开imu数
  • VINS 详解

    VINS是视觉与IMU融合SLAM的代表 xff0c 其实现了一个较为完整的SLAM工作 xff0c 开源地址为 xff1a GitHub HKUST Aerial Robotics VINS Mono A Robust and Versa
  • 工程(十一)——NUC11+D435i+VINS-FUSION+ESDF建图(github代码)

    博主的合并代码 git 64 github com huashu996 VINS FUSION ESDFmap git 一 D435i深度相机配置 1 1 SDK 43 ROS 参考我之前的博客 xff0c 步骤和所遇见的问题已经写的很详细
  • 【SLAM】VINS-MONO解析——vins_estimator流程

    5 vins estimator 基本上VINS里面绝大部分功能都在这个package下面 xff0c 包括IMU数据的处理 前端 xff0c 初始化 我觉得可能属于是前端 xff0c 滑动窗口 后端 xff0c 非线性优化 后端 xff0
  • 【SLAM】VINS-MONO解析——sliding window

    8 sliding window 8 1 理论基础 实际上 xff0c 这一部分跟后端非线性优化是一起进行的 xff0c 这一部分对应的非线性优化的损失函数的先验部分 理论基础部分的代码基本在第7章部分 8 1 1 上一次非线性优化结束 x
  • VINS-Mono 加rgbd

    通过对比VINS Mono与其RGBD版本 xff0c 分析其改动思路 一 feature tracker feature tracker node cpp 头文件加入了ros的多传感器时间戳 include lt message filt
  • Ubuntu20.04跑VINS-fusion

    Ubuntu20 04跑VINS Fusion 使用docker 由于工程较大 xff0c 依赖较多 xff0c 环境配置十分繁琐 xff0c 故使用docker环境来运行VINS Fusion Docker 可以让开发者打包他们的应用以及
  • VINS-Mono

    文章目录 初始化框架缺点ORB SLAM的Local Map VINS的滑窗 逐次逼近式去畸变给后端提供的特征点信息光流追踪对极约束F去除外点 rejectWithF 特征点均匀化预积分系统初始化初始化时不校正bias a误差卡尔曼滤波误差
  • 在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

    最近在做科研训练的时候配置了HKUST Aerial Robotics实验室的VINS Fusion代码项目 xff0c 经历了一些编译报错的问题 xff0c 在网上查找的时候博客内容良莠不齐 xff0c 且实质针对性意见不多 xff0c
  • IMU误差模型简介及VINS使用说明

    1 IMU误差来源 2 IMU噪声模型 Noise and Bias kalibr中的imu noise model 参考 xff1a https github com ethz asl kalibr wiki IMU Noise Mode
  • vins中的坐标系变换及g2r函数

    slam中经常会需要表示一个刚体的位姿 例如imu的位姿 xff0c 相机的位姿 首先我们需要在一个刚体上架上一个坐标系 这个坐标系为本体坐标系 怎么架一个坐标系 xff1f imu本身就有规定其本身的x y z轴的方向 相机一般认为 xf
  • VINS记录

    euroc launch lt launch gt lt arg name 61 34 config path 34 default 61 34 find feature tracker config euroc euroc config
  • VINS-Mono代码阅读笔记(十三):posegraph中四自由度位姿优化

    本篇笔记紧接着VINS Mono代码阅读笔记 xff08 十二 xff09 xff1a 将关键帧加入位姿图当中 xff0c 来学习pose graph当中的紧耦合优化部分 在重定位完成之后 xff0c 进行位姿图优化是为了将已经产生的所有位
  • D435i运行VINS-mono以及Kalib标定

    D435i运行VINS mono以及Kalib标定 系统说明 xff1a Ubuntu 18 04 内核版本 xff1a 5 4 0 1 运行VINS mono 参考博客VINS xff08 D435i xff09 测试 问题 xff1a
  • 运行相机与vins_Fusion

    安装相机的SDK git clone https github com slightech MYNT EYE D SDK git cd MYNT EYE D SDK make init make all 这里由于没有添加依赖 xff0c O
  • vins运行1

    vins fusion 运行笔记 安装code utils 1 fatal error elfutils libdw h 没有那个文件或目录 没有安装 sudo apt get install libdw dev 2 fatal error
  • Ubuntu 18.04 ———(Intel RealSense D435i)运行VINS-Mono

    Intel RealSense D435i 一 准备工作二 修改参数rs camera launchrealsense color config yaml 参考文献 一 准备工作 1 Intel Realsense D435i Ubuntu

随机推荐

  • STM32中断-外部中断

    STM32中断 外部中断配置 外部中断配置 1 配置向量中断控制器NVIC xff0c 设置中断优先级 a 配置优先级组别 b 配置相关结构体参数 中断源 抢占优先级 子优先级 c 使用函数写入参数 代码参考如下 span class to
  • Ubuntu20 网络助手无法运行

    最近开始正式啃python高级教程 xff0c 遇到第一个问题 xff0c Ubuntu20版本下 xff0c 网络助手安装后 xff0c 点击开启无反应 经过好几天晚上的折腾 xff0c 终于搞定 xff0c 贴下解决过程 Step1 终
  • 通过服务器搭建一个短视频系统(含推荐算法)

    一 前端开发 前端使用的是uni app框架 xff0c 用到的开发软件是HBuiderx xff0c 前端界面如下所示 xff1a 主要包括五大功能 xff0c 一是热门视频展示 xff08 用到了热门视频推荐算法 xff09 个人推荐视
  • 【已解决】error: ‘CV_GRAY2BGR’ was not declared in this scope

    这是运行高翔 slambook2 代码出现的问题 xff0c 有两种方法解决 error CV GRAY2BGR was not declared in this scope home diyu slambook2 ch8 optical
  • 镜像备份工具rsync

    文章目录 1 概述2 rsync的认证协议3 rsync命令详解4 rsync 43 inotify 1 概述 什么是rsync xff1f rsync 即 Remote Sync 是linux系统下的数据镜像备份工具 使用rsync可以远
  • 系统调用的理解

    文章目录 系统调用什么是系统调用系统调用的分类系统调用与库函数的区别 系统调用 什么是系统调用 什么是系统调用 xff1f 答 操作系统的接口函数是连接应用软件与操作系统的中间桥梁 xff0c 系统调用其实就是操作系统提供给应用程序的接口函
  • ROS与C++入门教程(记录步骤)(一)

    ROS与C 43 43 入门教程 xff08 记录步骤 xff09 0 记录学习生活1 构建工作空间1 1 建立工作空间1 2 设置成自动加载环境 2 构建Catkin包2 1 构建2 2 查看程序包依赖关系2 3 解读package xm
  • C语言:全局变量在多个c文件中公用的方法

    用C语言编写程序的时候 xff0c 我们经常会遇到这样一种情况 xff1a 希望在头文件中定义一个全局变量 xff0c 然后包含到两个不同的c文件中 xff0c 希望这个全局变量能在两个文件中共用 举例说明 xff1a 项目文件夹proje
  • 迭代器(iterator)看这篇就够了

    文章目录 前言一 迭代器是什么二 迭代器如何使用2 1 迭代器正常遍历集合2 2 完全版迭代器可以一边遍历一边删除元素2 3 简易版迭代器 总结 前言 迭代器很重要 xff0c 是遍历线性数据结构 xff08 链表 xff09 的重要方法之
  • Jquery 获取元素属性值

    获取属性 获取内置属性获取自定义属性prop value name value attr value name value jquery中内置属性只能用来获取内置 自定义只能用来获取内置 内置属性 span class token func
  • 使用evo测评工具测评性能

    防止健忘 参考EVO工具github链接 xff1a link1 开源室内激光场景数据 xff1a link2 总体来说 xff0c evo是用于处理 评估和比较里程计和SLAM算法的轨迹输出 支持的轨迹文件格式 xff1a Tum文件Ki
  • DNS内网欺骗(仅供参考)

    DNS内网欺骗 仅供参考 下面展示一些 内联代码片 span class token comment 启动apche2 span systemctl start apache2 在 span class token operator spa
  • linux下安装nodejs(附带安装npm)

    一 下载nodejs的二进制文件 附官网链接 xff1a 下载 Node js 右键 xff0c 复制下载链接地址 二 安装解压 mkdir boke cd boke wget https nodejs org dist v16 13 2
  • stm32F103C8T6核心板 使用ST-Link无法烧写程序的解决方案

    stm32F103C8T6核心板 使用ST Link无法烧写程序的解决方案 本人也是小白一名 希望我的回答能对你有所帮助 以下是我遇到的问题 1 首先是插入连接线 电脑显示如图 网上找了很久还没有找到解决方案 不过不影响烧写 其次是FlyM
  • 【无标题】

    stm32最小核心板串口通讯连接方式 首先需要一个含有CH430的usb转ttl模块 3 3v接板子上的3 3v GND接板子上的GND 注意 不要接反了 接反的话usb转ttl模块不会亮 如果接反了并且usb转ttl模块插到电脑上 板子会
  • selenium 滑块问题解决

    滑块问题解决 问题解决分为两步 图片处理 滑块移动处理 图片处理 1 图片获取 这里获取的是背景以及滑块图片 获取图片 通过requests get 将图片下载到本地 with open 39 yuan image html 39 39 r
  • VisionPro 9.0 安装完,没有在Visual Studio 2019工具箱中上显示控件

    VisionPro 9 0 安装完 没有在Visual Studio 2019工具箱中上显示控件 步骤 右键工具箱 然后点击 选择项 然后点击浏览选项 3 目录位置 C Program Files x86 Cognex VisionPro
  • visionPro通过网线连接海康相机踩过的坑

    visionPro通过网线连接海康相机踩过的坑 1 搞了两三天 xff0c 笔者用的是笔记本是小新 xff0c 没有网口 xff0c 通过USB转网口连接摄像头 xff0c 明确的告诉你不行 xff0c USB即使达到所谓的千兆 xff0c
  • 完成select的TCP客户端

    include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt netinet
  • vins概述

    基本框架如上 xff0c VINS的功能模块可包括五个部分 xff1a 数据预处理 初始化 后端非线性优化 闭环检测及闭环优化 代码中主要开启了四个线程 xff0c 分别是 xff1a 前端图像跟踪 后端非线性优化 xff08 其中初始化和