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

本文做者 沈玥伶,公众号:计算机视觉life,编辑部成员git

1、相机与IMU的融合

在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具备很大的潜力实现低成本且高精度的定位与建图。这是由于这两个传感器之间具备互补性:相机在快速运动、光照改变等状况下容易失效。而IMU可以高频地得到机器人内部的运动信息,而且不受周围环境的影响,从而弥补相机的不足;同时,相机可以得到丰富的环境信息,经过视觉匹配完成回环检测与回环校订,从而有效地修正IMU的累计漂移偏差。github

图1.png

2、什么是相机与IMU外参?

足够准确的相机与IMU外参是实现相机与IMU融合的定位与建图的前提。相机与IMU之间的外参包括两部分:web

(1)相机与IMU之间的相对位姿

以下图所示,相机与IMU之间的相对位姿值的是相机坐标系和IMU坐标系之间的变换,包括相对旋转角和相对平移量。面试

图2.png

相机坐标系坐标和IMU坐标系坐标之间知足以下变换关系:编程

公式1.png

将上式展开能够获得分别获得相机坐标系和IMU坐标系之间旋转角和平移量的变换关系:框架

公式2.png

(2)相机与IMU之间的时间差

因为触发延时、传输延时的存在,传感器的采样时间和时间戳的时间不匹配,以下图所示,从而致使相机和IMU之间存在时间差td。svg

图3.png

td用公式表示为:学习

公式3.png

将相机的时间戳平移td后,相机与IMU之间实现了同步。优化

3、为何须要在线标定?

大部分同窗都是从跑公开的数据集开始入门的,这些数据集都给出了传感器的内外参数,不须要咱们进行标定。可是,若是想投入到实际应用中,咱们就须要使用本身的传感器。对于低成本、本身组装的相机与IMU传感器组合,相机与IMU之间的外参是未知的,这就须要咱们对相机与IMU之间的外参进行标定。.net

对于相机与IMU之间的相对位姿,传统的标定方法每每采用离线的形式,须要手持标定板进行一系列操做,费时费力。对于相机与IMU之间的时间差,因为每次运行时间差都不相同,因此只能依靠在线标定的方法。所谓在线标定方法,指的是在系统运行之初或者系统运行过程当中完成标定,这种方法解放了双手,也可以保证足够的精度。

4、相对位姿在线标定方法

(1)VINS基础上的在线标定

港科大沈劭劼实验室提出了在初始化的同时对相机与IMU之间的外参进行标定的方法[1]。流程以下图所示。首先进行相机与IMU之间相对旋转角的标定,标定完成以后进行初始化和相机与IMU之间相对平移量的标定。标定和初始化完成后进行视觉惯性联合的状态估计,而且把标定量也当作待估计的状态放入联合优化中。此在线标定方法被应用于VINS[2]中。代码实现包含于VINS中,VINS的源码已上传至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。

图4.png

(2)VI-ORB-SLAM基础上的在线标定

Weibo Huang等借鉴了(1)中的标定方法,在VI-ORB-SLAM的基础上加上了相机与IMU的相对位姿在线标定[3]。与(1)的不一样之处在于,此方法可以在系统运行之初快速获得足够精度的标定结果,没有将外参归入状态估计的优化变量中,大大节省了计算量。做者暂时没有开源代码。

5、时间差在线标定方法

(1)基于像素点匀速运动的时间差标定方法

此时间差标定方法[4]一样出自港科大沈劭劼实验室而且应用于VINS中。代码实现包含于VINS中,VINS的源码已上传至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。

原理为:假设在较短期内相机从公式4.png匀速运动到公式5.png,特征点在像素平面上的投影也从公式6.png匀速运动至公式7.png,像素匀速运动的速度为公式8.png。以下图所示。

图5.png

经过平移像素坐标,将时间差做为优化变量加入投影偏差的表达式中,以下面式子所示。

公式9.png

此投影偏差项与IMU偏差项和初始值偏差项相加进行联合非线性优化。每一次优化结束后对时间差进行补偿,最终时间差的标定量逐渐趋于0。

(2)将时间差变量加入IMU预积分表达式中

(1)中的方法引入了像素点匀速运动的假设,不够精确。中科院自动化所的Jinxu Liu等提出的时间差的在线标定方法[5]将时间差加入到IMU预积分表达式中,而且一样做为优化变量参与联合非线性优化。相比于(1)中的方法在表达式上更加复杂,可是带来了更加快速和精确的标定结果。做者暂时没有开源代码。

6、总结

上文咱们对相机与IMU之间的相对位姿和时间差的在线标定的最新研究成果进行了列举。因为篇幅有限,咱们仅仅介绍了框架层面的东西,感兴趣的读者能够直接阅读参考文献部分给出的相应论文。

实际应用的时候,咱们须要根据应用场景和需求选择合适的方法,甚至在现有的方法上作出改进。下表列出了上文提到的方法的各自的适用场景,读者能够据此选择符合条件的方法进行相机与IMU的在线标定。

图6.png

参考文献

[1] Yang Z , Shen S . Monocular Visual-Inertial State Estimation With Online Initialization and Camera-IMU Extrinsic Calibration[J]. IEEE Transactions on Automation Science and Engineering, 2016, 14(1):1-13.

[2] Tong Q, Li P, Shen S. VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator[J]. IEEE Transactions on Robotics, 2017, PP(99): 1-17.

[3] Huang W, Liu H, Ieee: Online Initialization and Automatic Camera-IMU Extrinsic Calibration for Monocular Visual-Inertial SLAM[C], 2018 Ieee International Conference on Robotics and Automation, 2018: 5182-5189.

[4] Qin T , Shen S . Online Temporal Calibration for Monocular Visual-Inertial Systems[J]. 2018.

[5] Liu J , Gao W , Hu Z, Ieee: Online Temporal Calibration of Camera and IMU using Nonlinear Optimization[C], 2018 Ieee International Conference on Pattern Recognition, 2018: 1761-1766.

推荐阅读

如何从零开始系统化学习视觉SLAM?
从零开始一块儿学习SLAM | 为何要学SLAM?
从零开始一块儿学习SLAM | 学习SLAM到底须要学什么?
从零开始一块儿学习SLAM | SLAM有什么用?
从零开始一块儿学习SLAM | C++新特性要不要学?
从零开始一块儿学习SLAM | 为何要用齐次坐标?
从零开始一块儿学习SLAM | 三维空间刚体的旋转
从零开始一块儿学习SLAM | 为啥须要李群与李代数?
从零开始一块儿学习SLAM | 相机成像模型
从零开始一块儿学习SLAM | 不推公式,如何真正理解对极约束?
从零开始一块儿学习SLAM | 神奇的单应矩阵
从零开始一块儿学习SLAM | 你好,点云
从零开始一块儿学习SLAM | 给点云加个滤网
从零开始一块儿学习SLAM | 点云平滑法线估计
从零开始一块儿学习SLAM | 点云到网格的进化
从零开始一块儿学习SLAM | 理解图优化,一步步带你看懂g2o代码
从零开始一块儿学习SLAM | 掌握g2o顶点编程套路
从零开始一块儿学习SLAM | 掌握g2o边的代码套路
零基础小白,如何入门计算机视觉?
SLAM领域牛人、牛实验室、牛研究成果梳理
我用MATLAB撸了一个2D LiDAR SLAM
可视化理解四元数,愿你再也不掉头发
最近一年语义SLAM有哪些表明性工做?
视觉SLAM技术综述
汇总 | VIO、激光SLAM相关论文分类集锦
研究SLAM,对编程的要求有多高?
2018年SLAM、三维视觉方向求职经验分享
2018年SLAM、三维视觉方向求职经验分享
深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?
视觉SLAM关键方法总结
SLAM方向公众号、知乎、博客上有哪些大V能够关注?
SLAM实验室
SLAM方向国内有哪些优秀公司?
SLAM面试常见问题
SLAM相关领域数据集调研
从零开始一块儿学习SALM-ICP原理及应用