vio预积分—高翔

Momenta视觉算法研究员,2008年就读清华大学自动化系,2012年免试进入清华大学自动化系攻读博士学位。研究课题为视觉SLAM,兴趣包括计算机视觉与机器学习。曾撰写过与SLAM相关的论文和技术博客。著有《视觉SLAM十四讲 从理论到实践》一书。

 

分享

本次Paper Reading的主题是VIO领域的一个重要的工作:预积分(Preintegration)

 

预积分是Christian Forster(SVO作者)在15年做的工作,发表在2015年的RSS(Robotics: Science and Systems)上,随后又整理成期刊论文,预计发表在2017年的IEEE Trans. On Robotics(TRO)上。预积分给出了一种比较优雅的,在SO(3)流形上处理IMU运动的方法,并给出了实现代码(gtsam中)。有一些后续工作,例如ORB+IMU,LSD+IMU等等,都是在本文的基础上实现的。因此,了解预积分,会对VIO的研究有重要的意义。

 

VIO,或VI-SLAM,是指利用视觉(Vision)加上惯导(Inertial),共同实现视觉里程计(Odometry)或完整SLAM的做法。我们知道,纯视觉可以实现三维空间中的定位,但由于图像可靠性不好,存在一些不可避免的问题:运动模糊、遮挡、快速运动、纯旋转、尺度不确定性,等等。许多问题,在纯视觉的SLAM中,难以得到根本上的解决。而IMU,可以得到与视觉无关的,关于运动主体自身的角速度、加速度的测量数据,从而对运动有一个约束。然而,从IMU数据到六自由度的空间位姿,还隔着一个动力学方程。同时,IMU数据,除了受白噪声影响之外,通常认为还存在一个零偏。仅用IMU来做位姿估计,由于零偏的影响,很快就会漂移。然而,视觉图像在固定不动时,并不会产生漂移。所以,利用视觉确定IMU的零偏,同IMU来辅助快速运动的定位和纯旋转的处理,成为VIO比较吸引人的研究点之一。

 

vio预积分—高翔_第1张图片

图1 IMU与视觉在时间轴上的信息

 

如图1所示。在时间轴上,IMU通常以较快的速率采集角速度和加速度的信息,而视觉则是以较慢的频率采集图像。VIO的器件同步,保证了每个时刻采集的数据都是同步的。原理上,我们可以给出每个时刻的位姿估计,然而,现有视觉SLAM,多数是基于关键帧+BA的处理形式。于是,一个重要的问题是,能否将两个视觉关键帧当中的IMU数据,整合在一起,约束它们之间的运动?如果可以的话,又如何来约束?预积分的目的,就在于处理这里的运动关系。为了说清楚这件事,需要介绍一些背景知识。

 

vio预积分—高翔_第2张图片

图2 VIO器件的坐标系

 

vio预积分—高翔_第3张图片

 

vio预积分—高翔_第4张图片

 

为了估计位姿,首先要选择状态变量。在紧耦合(Tightly Coupled)方案中,通常选择位姿、速度、零偏这几个量,作为待估计的状态量,共15维:

 

vio预积分—高翔_第5张图片

 

于是,可以想见,在带IMU的bundle adjustment中,我们每一个Pose都是这样一个15维的变量。那么,如何通过IMU数据,定义两个状态量之间的运动约束呢?还是回到动力学。

 

前面给出了微分形式的动力学,当然我们可以把它写成积分形式的。然后,由于是在离散时刻进行采样,所以得到的是离散时刻的动力学方程。再代入IMU的测量,有:

 

vio预积分—高翔_第6张图片

 

于是,差分方程给出了两个连续的视觉帧之间的IMU约束。进一步,如果把两个关键帧之间的多个视觉帧积分起来,就形成了预积分:

 

vio预积分—高翔_第7张图片

vio预积分—高翔_第8张图片

 

vio预积分—高翔_第9张图片

 

vio预积分—高翔_第10张图片

vio预积分—高翔_第11张图片

 

然后,还需讨论观测量对零偏的雅可比:

 

vio预积分—高翔_第12张图片

 

至此,除了细节推导之外,我们已经说明了预积分的主要思路。那么,如何在VIO里应用预积分呢?实际上也不难,只要把原先视觉SLAM里的bundle adjustment里,用15维的Pose代替原先6维的Pose,再加上IMU运动约束即可。

 

vio预积分—高翔_第13张图片

 

在ORB+IMU、LSD+IMU的工作中,作者们都是利用了这个框架实现VIO或VI-SLAM的:

 

vio预积分—高翔_第14张图片

 

不过,由于预积分原先是在gtsam上开源的,所以作者们也都用了gtsam作为后端。然而,只要清楚了预积分的原理,那么在g2o或ceres这些通用优化框架中,也完全可以实现预积分的计算。这就给出了一种基于优化方法的VIO处理方式。

你可能感兴趣的:(视觉slam)