LR Robust Stereo VIO for Fast Autonomous Flight
Abstract
我们展示说我们的Stereo MSCKF在算力上跟state-of-the-art的单目方案是可比的, 而且提供了很大的鲁棒性.
1. Introduction
贡献
- 第一个开源的filter-based 立体相机VIO, 可以在板跑是
- 提供详实的实验数据, 跟OKVIS, ROVIO, VINS-MONO比对, 在精度, 效率和鲁棒性上.
- 有一个快速飞行的数据集
2. Related Work
现存的紧耦合VIO方案, 可以分为优化的([4, 15, 16]) 和 滤波的([1, 5, 20]).
滤波的方案, 一般就用EKF[1]. 或者是Uncented KF[19], 会更高效. [23, 2, 24] 也提出了FEJ和 Observability Constraint 来提升VIO在滤波狂阿基的鲁棒性, 也提升了估计精度.
最近的工作里, [5, 25]用直接法的工作更进一步提升了精度和鲁棒性.
只有很少部分的是为了多相机, 或者是立体相机设计的[4, 16, 26, 27].
[26]中, stereo VI 跑到了6.25hz, 更像是一个概念的验证. [4] 提出了一个更完成的优化框架. [16] 引入了直接法到stereo VIO来提升精度. 这三个方案都是基于优化的.
[27] 提出了一个基于滤波的stereo VIO, 基于平方根inverse filter [18].
3. Filter Description
IMU的状态:
^I_G\mathbf{q}^{\top} & \mathbf{b}_{g}^{\top} & G_{\mathbf{v}_{I}}^{\top} & \mathbf{b}_{a}^{\top} & { }^{G} \mathbf{p}_{I}^{\top} & { }_{C}^{I} \mathbf{q}^{\top} & \left.{ }^{I} \mathbf{p}_{C}^{\top}\right)
\end{array}\right.
\]
这里四元数 \(^I_G q\) 表示从惯性系到body系. body系就是IMU系.
向量 \(^Gv_I \in \mathcal{R}^3\) 和 \(^Gp_I \in \mathcal{R}^3\) 表示body系在惯性系的速度和位置.
四元数 \(^I_Cq\) 和 \(^Ip_C\) 表示相机和body系的相对旋转和平移.
使用 true IMU state会导致奇异性?, 在结果的协方差矩阵, 因为额外的状态向量里协方差矩阵的额外的约束.
error IMU state被定义为:

用来使用位置, 速度和偏置的standard additive error (e.g. $ ^G \tilde{p}_I = ^G p_I - ^G \hat{p}_I$ ) 对于四元数, 误差四元数 \(\delta \mathbf{q}=\mathbf{q} \otimes \hat{\mathbf{q}}^{-1}\)
\]
这里 \(^G_I \tilde{\theta} \in R^3\) 表示小旋转.
最终, N 个相机状态如下:
\tilde{\mathbf{x}}_{I}^{\top} & \tilde{\mathbf{x}}_{C_{1}}^{\top} & \cdots & \left.\tilde{\mathbf{x}}_{C_{N}}^{\top}\right)^{\top}
\end{array}\right.
\]
每个相机的error state的定义是:
C_{i} & \tilde{\boldsymbol{\theta}}^{\top}
\end{array}^{G} \tilde{\mathbf{p}}_{C_{i}}^{\top}\right)^{\top}
\]
为了保持计算的复杂度, 雨鞋相机状态需要被边缘化, 当相机的状态量到一个阈值到时候.
A. Process Model
估计的IMU状态的continues dynamics:
{ }_{G} \dot{\mathbf{q}}=\frac{1}{2} \Omega(\hat{\boldsymbol{\omega}})_{G}^{I} \hat{\mathbf{q}}, \quad \dot{\hat{\mathbf{b}}}_{g}=\mathbf{0}_{3 \times 1} \\
{ }^{G} \dot{\hat{\mathbf{v}}}=C\left(\begin{array}{c}
^I_G\hat{q}
\end{array}\right)^{\top} \hat{\mathbf{a}}+{ }^{G} \mathbf{g} \\
\dot{\hat{b}}_{a}=\mathbf{0}_{3 \times 1}, \quad{ }^{G} \dot{\hat{\mathbf{p}}}_{I}={ }^{G} \hat{\mathbf{v}} \\
{ }_{C} \dot{\hat{\mathbf{q}}}=\mathbf{0}_{3 \times 1}, \quad{ }^{I} \dot{\hat{\mathbf{p}}}_{C}=\mathbf{0}_{3 \times 1}
\end{array} \tag1
\]
这里 \(\hat{\omega} \in R^3\) 和 \(\hat{a} \in R^3\) 是IMU除去偏置的测量
\]
同时:
-\left[\hat{\omega}_{\times}\right] & \omega \\
-\omega^{\top} & 0
\end{array}\right)
\]
linearized continuous dynamics 对于 error IMU state:
\]
这里 \(\mathbf{n}_{I}^{\top}=\left(\mathbf{n}_{g}^{\top} \mathbf{n}_{w g}^{\top} \mathbf{n}_{a}^{\top} \mathbf{n}_{w a}^{\top}\right)^{\top}\) .
为了解决离散时间观测, 我们用了一个4th Runga-Kutta数值integration of Eq(1) 来传播估计的IMU状态. 为了传播状态的不确定性, Eq(2)的离散时间状态转换矩阵和离散时间噪声协方差需要先计算.
\boldsymbol{\Phi}_{k} &=\boldsymbol{\Phi}\left(t_{k+1}, t_{k}\right)=\exp \left(\int_{t_{k}}^{t_{k+1}} \mathbf{F}(\tau) d \tau\right) \\
\mathbf{Q}_{k} &=\int_{t_{k}}^{t_{k+1}} \boldsymbol{\Phi}\left(t_{k+1}, \tau\right) \mathbf{G Q G} \boldsymbol{\Phi}\left(t_{k+1}, \tau\right)^{\top} d \tau
\end{aligned}
\]
这里 \(\mathbf{Q}=\mathbb{E}\left[\mathbf{n}_{I} \mathbf{n}_{I}^{\top}\right]\) 是持续时间噪声协方差. 这样IMU状态的传播协方差是:
\]
整个状态的协方差是:
\mathbf{P}_{I I_{k \mid k}} & \mathbf{P}_{I C_{k \mid k}} \\
\mathbf{P}_{I C_{k \mid k}}^{\top} & \mathbf{P}_{C C_{k \mid k}}
\end{array}\right)
\]
整个传播的不确定性是:
\mathbf{P}_{I I_{k+1 \mid k}} & \mathbf{\Phi}_{k} \mathbf{P}_{I C_{k \mid k}} \\
\mathbf{P}_{I C_{k \mid k}}^{\top} \mathbf{\Phi}_{k}^{\top} & \mathbf{P}_{C C_{k \mid k}}
\end{array}\right)
\]
当新接受到图像的时候, 状态需要被增广(augmented). 新相机状态的pose可以从最近的IMU状态获得
\]
增广的协方差就是:
\mathbf{I}_{21+6 N} \\
\mathbf{J}
\end{array}\right) \mathbf{P}_{k \mid k}\left(\begin{array}{c}
\mathbf{I}_{21+6 N} \\
\mathbf{J}
\end{array}\right)^{\top}
\]
B. Measurement Model
立体观测\(z^j_i\)可以表示为:
\]
注意我们可以让\(z\) 是 \(R^3\), 但是要rectified. 如果是 \(R^4\) 的话, 就不需要同一个特征的观测要在一个平面上了.
这个测量的残差近似为:
\]
这里 \(n_i^j\) 是测量误差. 两个 \(H\) 是jacobian.
通过积累一个特征\(f_j\) 的多个观测, 我们有:
\]
如[1]中所述, 因为\(^Gp_j\) 是用相机位姿计算拿到, 它的不确定性也是和状态中的相机位姿相关的.
为了保证它的不确定性不影响残差, Eq 5是投影到零空间的.
\]
C. Observability Constraint
一个天真的EKF VIO操作会得到很多yaw的虚假信息. 这是因为process的线性化点, 和测量步骤是在不同的时刻.
有很多不同的办法维护滤波器的一致性, 包括FEJ[23], Observability Constrainted EKF [23], Robocentric Mapping Filter[29].
在我们的应用中, OC-EKF因为两个理由用了.
- 不想FEJ-EKF, OC-EKF不需要很依赖准确的初值.
- 跟Robocentric Mapping Filter比, camera poses in the state vector can be represented with respect to the inertial frame instead of the latest IMU frame so that the uncertainty of the existing camera
states in the state vector is not affected by the uncertainty of the latest IMU state during the propagation step.
D. Filter Update Mechanism
...
E. Image Processing Frontend
我们用FAST和KLT.
注意我们在立体特征匹配, 也用KLT.
经验上, 深度大于1m的角点可以可靠的用KLT匹配.
4. Experiments

在V2_03_difficlut上跑的不好, 因为我们用了KLT. 持续的光照不稳定导致了失败.
5. Conclusion
可以跑到17.5m/s快.
LR Robust Stereo VIO for Fast Autonomous Flight的更多相关文章
- 一步一步学习S-MSCKF(一)连续时间IMU误差状态运动模型
1 IMU真实状态运动模型 状态向量: \(x_{I}=\left[{{_{G}^{I}{q(t)}}^{T},{b_{g}(t)}^{T},{^{G}v_{I}(t)}^{T},{b_{a}(t)} ...
- 83 项开源视觉 SLAM 方案够你用了吗?
作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...
- MSCKF_VIO:MSCKF的双目版本
论文:MSCKF的双目版本 Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight 下载地址:点击 源码地址:https:/ ...
- ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...
- 计算机视觉code与软件
Research Code A rational methodology for lossy compression - REWIC is a software-based implementatio ...
- SVO+PL-SVO+PL-StVO
PL-SVO是基于点.线特征的半直接法单目视觉里程计,我们先来介绍一下基于点特征的SVO,因为是在这个基础上提出的. [1]References: SVO: Fast Semi-Direct ...
- APM程序分析-ArduCopter.cpp
该文件是APM的主文件. #define SCHED_TASK(func, rate_hz, max_time_micros) SCHED_TASK_CLASS(Copter, &copter ...
- CNN训练Cifar-10技巧
关于数据集 Cifar-10是由Hinton的两个大弟子Alex Krizhevsky.Ilya Sutskever收集的一个用于普适物体识别的数据集.Cifar是加拿大政府牵头投资的一个先进科学项目 ...
- 详解Oracle数据货场中三种优化:分区、维度和物化视图
转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...
随机推荐
- JavaScript正则、错误处理、操作表单
一.正则表达式:用单个字符串描述或者匹配符合特定语句规则的字符串 一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索,可以去替换 二.语法: /表达式/修饰符(可选) var para=/i ...
- 蓝牙RFCOMM通信
最近需要在某个开发板上面通过蓝牙和手机蓝牙连接,并通过RFCOMM通信.还没有做过蓝牙RFCOMM相关工作,因此先在linux PC上面调试一下流程,并在此记录调试过程. 一.说明 RFCOMM协议基 ...
- 焦大:seo思维光年(下)seo操作如何度量化
http://www.wocaoseo.com/thread-57-1-1.html 如果不能度量就无法进行改进,所以度量化或数据化是网站分析和网站研究必须进行的一个方面,seo也不能例外.我在上篇文 ...
- 今天来学习一下MySQl的 临时表,变量,行转列,预处理的一些相关技术的使用!
先来简单了解一下MySQL数据库有意思的简介 MySQL这个名字,起源不是很明确.一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上, 而且不管怎样,MySQL AB创始 ...
- Lua 调用的 C 函数保存 state 的两种方式: Storing State in C Functions 笔记
http://yanbin.is-programmer.com/posts/94214.html Registery的Key 1. 整数Key用于Lua的引用机制,所以不要使用整数作为Key 2. 通 ...
- webpack使用优化(基本篇
为什么要使用Webpack 与react一类模块化开发的框架搭配着用比较好. 属于配置型的构建工具,比较用容易上手,160行代码可大致实现gulp400行才能实现的功能. webpack使用内存来对构 ...
- 跟着尚硅谷系统学习Docker-【day05】
day05-20200717 p21.docker容器数据卷容器 就是活动硬盘上面挂载硬盘进行数据的传递. [docker run -it --name dc01 fyr/centos ...
- 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期
上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...
- MySql数据库规范与原则
1.数据库表名命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确,多个单词用下划线'_'分隔; 例如:user_login, user_pro ...
- Java原生网络编程
一些常见术语 编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...