0. 简介
在VINS优化中,我们除了对IMU的P(位置),Q(旋转角),V(速度),Ba(加速度偏转角),Bg(陀螺仪偏转角)以外,我们还需要对相机本身的外参、逆深度、与时差进行优化。其中逆深度最为重要,但是网上的信息没有能够很好的对逆深度进行科学的阐释。所以本文根据自己的理解来讲述一下里程计。
1. 参数化
在了解逆深度之前,我们需要了解下为什么需要参数化。参数化作为点、线、面的slam表现形式,
这使得我们能够通过矩阵的形式表示出合适的优化输入。
比如我们经常用一个点的世界坐标x,y,z三个量来描述它,这是一种参数化形式。我们认为x,y,z三个量都是随机的,它们服从三维的高斯分布。然而,在极线搜索中使用了图像坐标u,v和深度值d来描述某个空间点(即稠密建图)。我们认为u,v不动,而d服从(一维的)高斯分布,这是另一种参数化形式。那么这两种参数化形式有什么不同吗?我们是否也能假设u,v服从高斯分布,从而形成另一种参数数化形式呢?
不同的参数化形式,实际都描述了同一个量,也就是某个三维空间点。考虑到我们在相机看到某个点时,它的图像坐标u,v是比较确定的(u,v的不确定性取决于图像的分辨率)而深度值d则是非常不确定的。此时,若用世界坐标x,y,z描述这个点,那么根据相机当前的位姿,x,y,z三个量之间可能存在明显的相关性。反映在协方差矩阵中,表现为非对角元素不为零。而如果用u,v,d参数化一个点,那么它的u,v和d至少是近似独立的,甚至我们还能认为u,v也是独立的----从而它的协方差矩阵近似值为对角阵,更为简洁。
2. 逆深度
逆深度(Inverse depth)是近年来SLAM研究中出现的一种广泛使用的参数化技巧。在极线搜索和块匹配中,我们假设深度值满足高斯分布。然而仔细想想会发现,在一些室外应用中,可能存在距离非常远,乃至无穷远处的点。我们难以通过高斯分布描述他们,
同时在Bundle Ajustment中,参数空间通常呈现出高维度、非线性的特点。其中对于3D特征点的优化占据了大量的运算量。然而当特征点的距离很远时,该特征点带来的误差就会很大,代价函数需要对该特征点进行较大幅度的调整才能进一步降低代价函数。
于是,逆深度应运而生。人们在仿真中发现,假设深度的倒数(也就是逆深度),为高斯分布是比较有效的。随后,在实际应用中,逆深度也具有更好的数值稳定性,从而逐渐成为一种通用的技巧。