本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员
一、相机与IMU的融合
在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图。这是因为这两个传感器之间具有互补性:相机在快速运动、光照改变等情况下容易失效。而IMU能够高频地获得机器人内部的运动信息,并且不受周围环境的影响,从而弥补相机的不足;同时,相机能够获得丰富的环境信息,通过视觉匹配完成回环检测与回环校正,从而有效地修正IMU的累计漂移误差。
二、什么是相机与IMU外参?
足够准确的相机与IMU外参是实现相机与IMU融合的定位与建图的前提。相机与IMU之间的外参包括两部分:
(1)相机与IMU之间的相对位姿
如下图所示,相机与IMU之间的相对位姿值的是相机坐标系和IMU坐标系之间的变换,包括相对旋转角和相对平移量。
相机坐标系坐标和IMU坐标系坐标之间满足如下变换关系:
将上式展开可以得到分别得到相机坐标系和IMU坐标系之间旋转角和平移量的变换关系:
(2)相机与IMU之间的时间差
由于触发延时、传输延时的存在,传感器的采样时间和时间戳的时间不匹配,如下图所示,从而导致相机和IMU之间存在时间差td。
td用公式表示为:
将相机的时间戳平移td后,相机与IMU之间实现了同步。
三、为什么需要在线标定?
大部分同学都是从跑公开的数据集开始入门的,这些数据集都给出了传感器的内外参数,不需要我们进行标定。但是,如果想投入到实际应用中,我们就需要使用自己的传感器。对于低成本、自己组装的相机与IMU传感器组合,相机与IMU之间的外参是未知的,这就需要我们对相机与IMU之间的外参进行标定。
对于相机与IMU之间的相对位姿,传统的标定方法往往采用离线的形式,需要手持标定板进行一系列操作,费时费力。对于相机与IMU之间的时间差,由于每次运行时间差都不相同,所以只能依靠在线标定的方法。所谓在线标定方法,指的是在系统运行之初或者系统运行过程中完成标定,这种方法解放了双手,也能够保证足够的精度。
四、相对位姿在线标定方法
(1)VINS基础上的在线标定
港科大沈劭劼实验室提出了在初始化的同时对相机与IMU之间的外参进行标定的方法[1]。流程如下图所示。首先进行相机与IMU之间相对旋转角的标定,标定完成之后进行初始化和相机与IMU之间相对平移量的标定。标定和初始化完成后进行视觉惯性联合的状态估计,并且把标定量也当做待估计的状态放入联合优化中。此在线标定方法被应用于VINS[2]中。代码实现包含于VINS中,VINS的源码已上传至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。
(2)VI-ORB-SLAM基础上的在线标定
Weibo Huang等借鉴了(1)中的标定方法,在VI-ORB-SLAM的基础上加上了相机与IMU的相对位姿在线标定[3]。与(1)的不同之处在于,此方法能够在系统运行之初快速得到足够精度的标定结果,没有将外参纳入状态估计的优化变量中,大大节省了计算量。作者暂时没有开源代码。
五、时间差在线标定方法
(1)基于像素点匀速运动的时间差标定方法
此时间差标定方法[4]同样出自港科大沈劭劼实验室并且应用于VINS中。代码实现包含于VINS中,VINS的源码已上传至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。
原理为:假设在较短时间内相机从