3.4. Mappoints management and key frame process
如果在步骤3.3中成功跟踪地图点,则缓存地图点以在下一帧中优先化。当完成当前帧的跟踪时,应该为下一帧更新帧运动速度和地图点。最后,决定当前帧是否应该作为关键帧产生,其标准指的是[11]。 如果框架作为关键帧生成,则会提取并匹配新的ORB要素,同时在此关键帧中保留成功跟踪的要素。ORB功能在关键帧中提取; 因此,当前关键帧姿势和mappoints通过本地映射线程中的描述符匹配和投影错误进一步优化。如果通过直接方法进行跟踪失败,则通过与参考关键帧匹配,在当前帧中提取ORB要素以进行本地化。

4. SVL-VI SLAM system

在第3节的工作基础上,紧密耦合的Visual-
提出了惯性SLAM系统,它可以闭环并覆盖公制尺度。IMU数据通过预积分处理[25]。 与SVL类似,该系统还具有三个并行线程,用于跟踪,本地映射和循环关闭。由于需要融合惯性导航状态,这三个线程和仅视觉SVL系统之间存在差异。该系统的基本流程见[26]。 鉴于未在非关键帧中提取ORB特征,通过最小化类似于(3)中的光度误差来完成特征匹配。

4.1. Tracking

SVL-VI的跟踪线程负责跟踪姿势,速度和IMU偏差。 该线程的基本流程如图2所示(我们并没有专门绘制SVL-VI的流程图。SVL-VI的跟踪线程是类似的,其中初始姿势由IMU而不是SVL中的恒定速度运动模式预测,并且参考帧是最后一个关键帧或最后一帧,这取决于地图是否被更新。)初始姿势由IMU预测,其比恒定速度运动模式更可靠。通过最小化当前帧和参考帧之间的光度误差来进一步优化当前帧,类似于3.2中的帧。在使用(3)中给出的方法完成匹配之后,通过使用IMU状态误差项最小化类似于(4)中的投影误差来优化当前帧j。根据地图是否由另外两个线程更新,优化会有所不同。

SVL-VI SLAM的更多相关文章

  1. 高翔《视觉SLAM十四讲》从理论到实践

    目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...

  2. SLAM、三维重建,语义相关数据集大全

    作者朱尊杰,公众号:计算机视觉life,编辑成员 一 主要针对自动驾驶: 1.KITTI数据集: http://www.cvlibs.net/datasets/kitti/index.php(RGB+ ...

  3. 三维视觉惯性SLAM的有效Schmidt-EKF

    三维视觉惯性SLAM的有效Schmidt-EKF An Efficient Schmidt-EKF for 3D Visual-Inertial SLAM 论文地址: http://openaccess ...

  4. Hector SLAM解读(1)原文翻译

      一种带有3D运动状态估计的slam系统 A Flexible and Scalable SLAM System with Full 3D Motion Estimation 摘要: 在许多应用场景 ...

  5. 在docker容器中vi指令找不到

    在使用docker容器时,有时候里边没有安装vi,敲vi命令时提示说:vi: command not found,这个时候就需要安装vi,可是当你敲apt-get install vi命令时,提示: ...

  6. linux vi 命令大全

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  7. Cygwin中解决vi编辑器方向键和Backspace键不好使、安装vim的方法

    修改.virc文件(如果没有就创建)vi .virc 添加以下内容set nocpset backspace=start,indent,eol 保存退出:wq 如果是vim就修改.vimrc文件. 由 ...

  8. vi(vim)键盘图及其基本命令

    进入vi vi filename                打开或新建文件,并将光标置于第一行首 vi +n filename           打开文件,并将光标置于第 n行首 vi + fi ...

  9. vi安装Vundle+YouCompleteMe+注释快捷'scrooloose/nerdcommenter'

    Vundle is short for Vim bundle and is a Vim plugin manager. 从git上下载vundle $ git clone https://github ...

随机推荐

  1. python算法与数据结构-冒泡排序算法(32)

    一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要 ...

  2. C#:抽象类PK密封类

    最近在看关于C#的书,看到了抽象类和抽象方法,另外还看到了密封类和密封方法,那么二者有什么联系又有什么区别,我把最近的收获分享给大家! 1.抽象类和抽象方法: ·C#使用abstract关键字,将类或 ...

  3. c# 数据类型转换

    隐式转换 byte, short, int, long, fload, double等根据其顺序向后可以隐式自动完成类型的转换,隐式转移的前提是目标类型精度高于源类型,如:short隐式转换为int, ...

  4. sql:拼接字符串、截取字符串、取字符串长度

    --第一段 SELECT substr('1233***6795', 0, (select instr('1233***6795', '***', 1, 1) from dual) - 1) from ...

  5. maven基础整理

    转载:https://www.cnblogs.com/hzg110/p/6936101.html maven官网:http://maven.apache.org/index.html 一.为什么使用M ...

  6. Linux中修改环境变量

    <1>Linux 的变量作用范围可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux ...

  7. ContextLoaderListener解析

    推荐:spring源码 每一个整合spring框架的项目中,总是不可避免地要在web.xml中加入这样一段配置. <!-- Spring配置文件开始 --> <context-par ...

  8. 09 webpack的介绍

    webpack干嘛的?:  模块打包机,分析目录结构,找到js模块(包括浏览器不能直接识别的代码 typscript sass...),打包成合适的格式供浏览器访问 webpack是一款模块加载器兼打 ...

  9. cube.js 学习(四)cube.js cube 说明

      cube 是cube.js data schema 的核心,里面定义了生成sql 的说明 一个比较全的schema 例子 cube(`Users`, { sql: `select * from u ...

  10. Problem 2 线段树

    $des$ 一个无限长的 01 序列,初始全为 0,每次选择一个区间 [l,r] 进行操作,有三种操作:1. l r 将 [l,r] 中所有元素变成 1.2. l r 将 [l,r] 中所有元素变成 ...