VIO概述 On-Manifold Preintegration for Real-Time Visual--Inertial Odometry
目前的研究方向可以总结为在滤波算法中实现高精度,在优化算法中追求实时性.当加入IMU后,研究方向分为松耦合和紧耦合,松耦合分别单独计算出IMU测量得到的状态和视觉里程计得到的状态然后融合,紧耦合则将IMU测量和视觉约束信息放在一个非线性优化函数中去优化.紧耦合的框架使得IMU数据可以对视觉里程计进行矫正,同时视觉里程计信息也可以矫正IMU的零偏,因此一般认为紧耦合的定位精度较高.个人认为松耦合和滤波融合的方法类似,紧耦合则主要基于非线性优化.
IMU融合后可以处理视觉失效的情况,例如光照变化,遮挡,模糊,快速运动;同时视觉也可以对IMU的本质误差零偏(漂移)进行很好的估计.
视觉和IMU融合目前主要基于三类方法,在设计时,主要考虑精确度和计算量的平衡.
1. 滤波
- 状态向量只包含当前状态.由于线性化误差和计算能力的限制,通常只能构建很少的landmark/mappoint.或者创建structureless的状态向量(将landmark/mappoint边缘化),典型代表为MSCKF.
- 边缘化是将旧状态融合进当前状态的先验中,滤波方法主要的缺陷也就存在于边缘化过程中:首先当前测量的structure信息需要延迟处理,降低当前状态的更新精度,其次边缘化对线性化近似和外点(outlier)都比较敏感,容易造成滤波器状态失准.(这里有很多坑,还不太理解).
2. Fixed-Lag Smoothing
- 也就是滑动窗口优化(Sliding Window Optimization).状态向量包含随时间滑动的窗口内多个状态.但是也需要将旧状态边缘化到高斯先验中.因此在滤波算法中存在的边缘化问题,这里都存在.
- 但是由于采用了多个状态的窗口,状态估计更精确,同时可以建立鲁棒的优化代价函数,降低外点对状态估计的影响.
- 状态向量中可以加入测量的structure,但是太多strcuture会造成高斯先验矩阵是稠密的,通常会想办法减少structure的数量.
3. Full Smoothing
- 也就是batch non-linear least-squares或者全局优化,状态向量包含所有相机位姿和strcuture信息,做大规模的非线性优化.显然是最精确的方法,虽说稀疏性降低了计算量,但是依然比滤波大.主要工作集中于降低计算量.
- 可以采用只优化关键帧,以及将优化放在独立线程中.
- 最新的研究采用因子图,增量式地根据测量更新部分状态,典型代表为iSAM.
- 当引入IMU后,由于IMU频率通常在100Hz-1kHz量级,无法每次IMU测量都更新状态向量.通常的做法是在关键帧之间对IMU进行积分,初始状态由上一帧状态提供,根据IMU的微分运动方程,积分出当前状态,再将视觉测量引入更新.
- 然而,由于优化过程中上一帧的状态是会变化的,这样积分的初始状态改变了,需要重新算积分,为了避免每一次优化调整后都需要重复计算IMU积分,利用预积分preintegration将相对运动约束再参数化.
参考:
1. https://bitbucket.org/gtborg/gtsam
2. https://arxiv.org/abs/1512.02363
VIO概述 On-Manifold Preintegration for Real-Time Visual--Inertial Odometry的更多相关文章
- 视觉惯性里程计Visual–Inertial Odometry(VIO)概述
周围很多朋友开始做vio了,之前在知乎上也和胖爷讨论过这个问题,本文主要来自于知乎的讨论. 来自https://www.zhihu.com/question/53571648/answer/13772 ...
- [SLAM] 03. ORB-SLAM2
一年后再读SLAM~ 行业有了不少工程实践方面的突破 一.链接:https://www.zhihu.com/question/53571648/answer/176732257 目前来说,受到业界肯定 ...
- 三维重建7:Visual SLAM算法笔记
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...
- 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...
- 83 项开源视觉 SLAM 方案够你用了吗?
作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...
- 当前的开源SLAM方案
开源方案 传感器形式 地址链接 MonoSLAM 单目 https://github.com/hanmekim/SceneLib2 PTAM 单目 http://www.robots.ox.ac. ...
- A Benchmark Comparsion of Monocular Visual-Inertial Odometry Algorithms for Flying Robots论文笔记
摘要: 本文主要比较单目VIO的算法在飞行机器人上运行的性能,测试使用统一数据集为EuRoC.其中评价指标为:姿态估计精度.每帧处理时间以及CPU和内存负载使用率,同时还有RMSE(运行轨迹与真实轨迹 ...
- Monocular Visual-Inertial Odometry单目视觉惯性里程计
Monocular Visual-Inertial Odometry:https://www.qualcomm.com/invention/research 单目视觉-惯性里程计 INDOOR POS ...
- ARKit入门
ARKit介绍 ARKit是iOS11引入的一个全新的框架,使用Visual Inertial Odometry(VIO,视觉惯性里程计)来精确跟踪现实世界中的真实场景.相比其它设备平台,ARKit中 ...
随机推荐
- 学习WebSocket一(WebSocket初识)
Java EE 7 去年刚刚发布了JSR356规范,使得WebSocket的Java API得到了统一,Tomcat从7.0.47开始支持JSR356,这样一来写WebSocket的时候,所用的代码都 ...
- C# using、namespace使用注意事项
一.using 用法 1.引用命名空间. 如: using System; 2.自动释放对象使用的资源. 如: using (SqlConnection connection = new SqlCon ...
- 【[AHOI2005]病毒检测】
\(Trie\) 树+搜索 我用的是\(dfs\) 首先对于将所有的RNA片段都建到\(Trie\)树里去,之后来匹配那个模板串就好了 如果是匹配的位置是字母,那么我们就继续往下匹配 如果是\(?\) ...
- 关于PHP数组你应该知道的事情
(1).PHP数组的遍历顺序 先举个栗子: <?php $arr['a'] = '123'; $arr['b'] = '456'; $arr['c'] = '789'; foreach($a a ...
- _bstr_t可接受多字节、UNICODE字符串,方便用以字符集转换
使用_bstr_t需要包含的头文件: #include <comutil.h> #include <comdef.h> // test.cpp : 定义控制台应用程序的入口点. ...
- 8.spring:事务管理(上):Spring的数据库编程、编程式事务管理
Spring的数据库编程 Spring框架提供了JDBC模板模式------>JdbcTemplate 简化了开发,在开发中并不经常是使用 实际开发更多使用的是Hibernate和MyBatis ...
- ARM Linux 大小核切换 ——cortex-A7 big.LITTLE 大小核 切换代码分析
ARM Linux 大小核切换——cortex-A7 big.LITTLE 大小切换代码分析 8核CPU或者是更多核的处理器,这些CPU有可能不完全对称.有的是4个A15和4个A7,或者是4个A57和 ...
- 创建oracle数据库表空间并分配用户
我们在本地的oracle上或者virtualbox的oracle上 创建新的数据库表空间操作:通过system账号来创建并授权/*--创建表空间create tablespace YUJKDATAda ...
- Oracle子查询之简单子查询
Oracle 简单子查询 顾名思义,简单子查询是嵌套在 SQL 语句中的另一个SELECT 语句,并且子查询只返回一列数据 1,单行子查询: 子查询 (内查询) 在主查询之前一次执行完成.子查询的结果 ...
- GPUImage源码解读之GPUImageContext
GPUImageContext类,提供OpenGL ES基本上下文,GPUImage相关处理线程,GLProgram缓存.帧缓存.由于是上下文对象,因此该模块提供的更多是存取.设置相关的方法. 属性列 ...