和单目纯视觉的初始化只需要获取R,t和feature的深度不同,VIO的初始化话通常需要标定出所有的关键参数,包括速度,重力方向,feature深度,以及相机IMU外参$R_{c}^{b}$和$p_{c}^{b}$。

一. 外参旋转矩阵初始化

在Feature Detection and Tracking模块中,利用Harris特征点匹配通过基础矩阵和Ransac恢复出$R_{Ck+1}^{Ck}$;

相应的使用IMU陀螺仪数据积分得到$R_{bk+1}^{bk}$;

这两个测量满足:

$R_{bk+1}^{bk}\cdot R_{c}^{b} = R_{c}^{b}\cdot R_{Ck+1}^{Ck}$

将测量得到的$R$用四元数表示,并利用四元数的运算(左乘右乘),可以得到一个约束方程:

$Q_{k+1}^{k}\cdot q_{c}^{b} = 0$

利用多组数据可以获得一个超定方程:

$Q_{N}\cdot q_{c}^{b} = 0$

通过求解最小二乘解,得到$q_{c}^{b}$。注意其中$Q_{N}$是包含使用Huber核的权重的,权重是通过残差矩阵计算得到,权重通过计算IMU项和视觉findFundamentalMat计算得到的旋转矩阵之间的差别得到,差别越大的$Q_{k+1}^{k}$,在$Q_{N}$中权重越小。

旋转初始化成功判定依据:

如果IMU三轴充分旋转,那么4*4矩阵$Q_{N}$的null space零空间的秩为1,可以得到稳定解;

如果旋转退化,则$Q_{N}$零空间的秩大于1,使用SVD分解,判断倒数第二小(第三大)的奇异值是否大于阈值。

因此,旋转标定初始化的关键在有充分的三轴旋转

二. 速度,重力方向,feature深度,以及外参平移矩阵初始化

可以将$R_{c}^{b}$,$R_{bk+1}^{bk}$,$R_{bk+1}^{b0}$当做已知固定值,使用最大似然估计(Maximum Likelihood Estimation, MLE)和Mahalanobis范数(可以理解为带权重的二范数(椭球向量范数))构建cost function,构建无偏的状态估计问题。

在Sliding Window(例如选取5帧)中对测量值构建最小二乘问题:

VINS中feature没有通过描述子匹配跟踪,也不仅像ORB-SLAM中选取观测次数多(跟踪效果好)的特征点,另外加入了视角足够大这个条件。虽然最后选取出的特征点数量比较少(150个左右),但是都是可观性很好的特征点。

(一)IMU测量模型

构建目标函数需要对测量模型建模,IMU的测量模型和预积分一样,预积分得到的测量值$\hat{z}$与状态估计值之间的差值取Mahalanobis范数,其中权重为协方差矩阵的逆(信息矩阵)。

参考预积分公式:

得到IMU测量的误差方程:

其中

为了求解高斯分布的最大似然,需要知道测量的协方差及其对应的状态转移方程(用于协方差的更新)

通过IMU的运动学方程微分,可以获得状态转移方程

假设初始IMU协方差$P_{bk}^{bk}$为0,则协方差传播方程为

协方差矩阵的传播和卡尔曼滤波的预测过程中协方差的传播是一样的,从系统的微分运动方程获取的。VINS中使用的是first-order discrete-time propagation,或者称为forward Euler method,其中加速度计的噪声$Q_{t}$需要预先知道或者使用imu_tk标定。

(二)视觉测量模型

重投影误差在VIO中,通常需要经过IMU坐标系的变换;这样有两个好处:

  • 将IMU的参数(外参)整合在视觉的residual中一起参与优化;
  • IMU的坐标系在预积分中是已知的,不需要再去计算;

因此将i帧获取的2D feature重投影到j帧上满足观测方程:

其中的坐标变换如下图所示:

初始化收敛判定:

cost function的协方差矩阵中外参平移向量$p_{c}^{b}$对应的协方差值(SVD分解)小于设定阈值时,收敛,初始化完成。由于要获得协方差矩阵(对应整个状态向量,而不是每一块误差项),需要对信息矩阵求逆,计算量较大,因此会放在新的线程中去完成(这里似乎有可以优化的空间)。  

VINS(四)初始化与相机IMU外参标定的更多相关文章

  1. 相机imu外参标定

    1. 第一步初始化imu外参(可以从参数文档中读取,也可以计算出),VINS中处理如下: # Extrinsic parameter between IMU and Camera. estimate_ ...

  2. 相机-imu外参校准总结

    1. 研究背景及相关工作 1)研究背景 单目视觉惯性slam是一种旨在跟踪移动平台的增量运动并使用来自单个车载摄像头和imu传感器的测量结果同时构建周围环境地图的技术.视觉相机和惯性测量单元(imu) ...

  3. 解放双手——相机与IMU外参的在线标定

    本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...

  4. 相机IMU融合四部曲(三):MSF详细解读与使用

    相机IMU融合四部曲(三):MSF详细解读与使用 极品巧克力 前言 通过前两篇文章,<D-LG-EKF详细解读>和<误差状态四元数详细解读>,已经把相机和IMU融合的理论全部都 ...

  5. 相机IMU融合四部曲(一):D-LG-EKF详细解读

    相机IMU融合四部曲(一):D-LG-EKF详细解读 极品巧克力 前言 前两篇文章<Google Cardbord的九轴融合算法>,<Madgwick算法详细解读>,讨论的都是 ...

  6. 【项目实战】自备相机+IMU跑通Vins-Mono记录

    前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...

  7. 相机IMU融合四部曲(二):误差状态四元数详细解读

    相机IMU融合四部曲(二):误差状态四元数详细解读 极品巧克力 前言 上一篇文章,<D-LG-EKF详细解读>中,讲了理论上的SE3上相机和IMU融合的思想.但是,还没有涉及到实际的操作, ...

  8. Spring IOC容器启动流程源码解析(四)——初始化单实例bean阶段

    目录 1. 引言 2. 初始化bean的入口 3 尝试从当前容器及其父容器的缓存中获取bean 3.1 获取真正的beanName 3.2 尝试从当前容器的缓存中获取bean 3.3 从父容器中查找b ...

  9. SQL的四种连接(左外连接、右外连接、内连接、全连接)

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...

随机推荐

  1. ES6-模块导入导出

    基本用法 命名导出(named exports) 可以直接在任何变量或者函数前面加上一个 export 关键字,就可以将它导出. 例如: export const sqrt = Math.sqrt; ...

  2. Ajax回退刷新页面问题的解决办法

    在脚本之家看到一篇文章,觉得以后可能会用上,但是竟然不能收藏,所以只能将其转到博客园. 以下是原文地址: http://www.jb51.net/article/87856.htm   这篇文章主要介 ...

  3. 关于HiddenHttpMethodFilter

    这个类的代码比较少,所以把整个类的代码都复制过来.在注释中添加上自己的理解. public class HiddenHttpMethodFilter extends OncePerRequestFil ...

  4. UVa 1220 - Party at Hali-Bula(树形DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. webpack的正确安装方式

    webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...

  6. nodejs中的fiber(纤程)库详解

    fiber/纤程 在操作系统中,除了进程和线程外,还有一种较少应用的纤程(fiber,也叫协程).纤程常常拿来跟线程做对比,对于操作系统而言,它们都是较轻量级的运行态.通常认为纤程比线程更为轻量,开销 ...

  7. springboot+mybatis+shiro——登录认证和权限控制

    转载:https://z77z.oschina.io/ 一.引入依赖 shiro-all包含shiro所有的包.shiro-core是核心包.shiro-web是与web整合.shiro-spring ...

  8. git提交项目

    https://www.cnblogs.com/java-maowei/p/5950930.html

  9. 【题解】洛谷P2375 [NOI2014] 动物园(KMP)

    洛谷P2375:https://www.luogu.org/problemnew/show/P2375 思路 这道题可以说是完全刷新了本蒟蒻对KMP的理解 感觉对next数组的理解上升到一个新的高度 ...

  10. CF1066A Vova and Train(模拟)

    大水题... 题目要求你求能看到的灯笼数,我们可以分为3部分 总共的灯笼数——————1 在 l 左面的灯笼数(不包括lll)——————2 在 r 左面的灯笼数(包括rrr)——————3 我们知道 ...