OKVIS是早期(2015年)开源的基于关键帧的视觉-惯导SLAM方案,是众多SLAM研究者入门必须了解的VIO方案之一,放在今天OKVIS的数据集测试结果仍然非常优秀。这篇博文主要针对OKVIS论文[1]整理其中的理论推导。

定义

定义需要估计的机器人状态

其中是机器人在世界坐标系下的三维位置;单位四元数是机器人在世界坐标系下的朝向,对应的旋转矩阵为。进一步将上述状态分为两个部分,位姿部分和速度/零偏部分

考虑相机外参的话,将其定义为,其可以是通过事先校正得到的固定值,也可以当做一个一阶高斯变量来估计,因为外参只受到温度影响。

非线性优化

考虑代价函数是待估计的状态,的最优值可通过最小化代价函数求得:

由于代价函数一般是一个复杂的非线性函数,一般从一个初始值出发,不断地更新当前的状态估计值,使得状态估计值收敛。具体为:

  1. 在状态估计值近似为一个容易处理的解析形式;
  2. 求解增量;
  3. 更新当前状态估计值;
  4. 迭代,直至状态估计量收敛。

在高斯分布的假设下,代价函数通过最大似然估计可以得到,是一个最小二乘问题。OKVIS中代价函数将视觉+惯导的定位和建图问题建模到一个函数中:

其中为重投影误差,为IMU误差项。为系统中的相机下标,为相机采集图像的下标,为路标点的下标,为相机在第帧图像观测到的路标点,为信息矩阵。谷歌提供了ceres库可以用来求解非线性优化问题。

在流形上进行优化

在求解优化问题时,一些状态量往往不在欧式空间中。比如单位四元数不在欧式空间中,其不满足加法交换律,单位四元数加法定义为:

是不可交换的。表达旋转只需要三个自由度,但是四元数有4个自由度,因此需要对四元数增加一个限制。当状态量不在欧式空间时,最小化代价函数求得的增量无法用加法去更新状态估计量[2]。

流形,是局部具有欧式空间性质的空间。在这种情况下,通常是在original space的限制下导出的流形上进行优化。也叫作”optimization in the error-space”, “optimization in the tangent space”, “optimization through local parametrization”。主旨是在minimal tangent space(Euclidean or error space)上进行更新状态量的步骤,从而保证在对应的original space状态量的更新是封闭的。

机器人对应的最小位姿误差状态量为,路标点误差,考虑相机外参的话,最小误差状态量为.

重投影误差

重投影误差公式为:

其中, 是第个路标点在世界坐标系下的齐次坐标表示,第四维值为1。下标表示时刻表示路标点在时刻图像上的观测值,也是齐次坐标。为变换矩阵,将世界坐标系中的点变换到第次测量时的sensor坐标系中。将第次测量时sensor坐标系中的点变换到相机坐标系中。为相机投影模型。以下在公式中省略时刻

为了进行非线性优化过程以及之后的边缘化步骤,需要求出重投影误差对最小机器人状态误差向量的雅克比矩阵。

变换矩阵的线性化

由[3]有旋转矩阵线性化表达为:

其中,扰动的最小表示。

变换矩阵

其逆代表了逆向变换,

定义变量

进行扰动,

扰动量为:

那么有:

其中,

令:

列向量定义运算符

我们有:

类似的,有

即:

设点的齐次坐标为为:

对变换矩阵进行扰动后,有:

定义齐次坐标上的运算符为:

那么有

同样的,有:

雅克比矩阵

在这里需要注意的是,机器人位姿状态量为 ,对应的变换矩阵为

其中是四元数对应的旋转矩阵。有,因此重投影误差公式为:

对其线性化,,设在值的扰动,在值的扰动,在值的扰动值。对重投影误差进行扰动得到:

展开,去除扰动项的积,得到:

由之前推导有:

最后令

得到:

所以有:

将上式展开得到:

同理,有

显然,

参考

[1] Leutenegger, Stefan, et al. “Keyframe-based visual–inertial odometry using nonlinear optimization.” The International Journal of Robotics Research 34.3 (2015): 314-334.

[2]Course on SLAM Institut de Robòtica i Informàtica industrial [PDF]

[3] Furgale, Paul Timothy. Extensions to the visual odometry pipeline for the exploration of planetary surfaces. Diss. University of Toronto, 2011.