[关闭]
@iStarLee 2019-07-12T13:41:04.000000Z 字数 4542 阅读 564

第 3 讲基于优化的 IMU 与视觉信息融合

VIO-shenlan


1 基于 Bundle Adjustment 的 VIO 融合

image_1df2agcis1defdpof0l17hm5h91g.png-82.6kB
image_1df29ovqo1eut16fp1e8r5fm1pl0m.png-45.5kB

关于优化函数的构建,可以在像素平面上构建重投影误差,也可以在归一化平面上构建重投影误差。发现在归一化平面上构建优化问题在写代码和推公式的时候少了一个内参矩阵K,大大简单了很多。

这个地方要了解BA的求解细节,
image_1df2affr1pr1cgpu9f1ufp1pm113.png-208.9kB

2 最小二乘问题的求解

2.1 基础算法

Gaussian-Newton算法


LM 算法

image_1df2an8kp18ugs1feq21pt6h0f1t.png-67.3kB
image_1df2ape4ubm6nho7qs1erjj3n2a.png-137.6kB

阻尼因子 µ 的更新策略有很多种,不同的人设计的算法细节上有区别,同一个算法也不可能在所有的数据上都表现很好。其中g2o中的LM阻尼因子更新策略通过比例因子来确定的


image_1df2bb79lpg16k3vcn1ceh1tm82n.png-25.2kB

注意这个和分母上的会消除掉,就得到了上面g2o算法流程里面的的更新。


2.2 鲁棒核函数的实现

最小二乘中遇到 outlier 怎么处理?核函数如何在代码中实现?有多种方法,这里主要介绍 g2o 和 ceres 中使用的Triggs Correction
image_1df2biq9v9fq1rbi10ur4er1cj034.png-97.9kB
其中的计算如下


代入公式14,得到

对该公式求和后,对变量求导,令其等于 0 ,得到

image_1df2bukmf1mc1su51p7h1jocvh43u.png-48.5kB
image_1df2bv80e1nauku46cd17t11ql24b.png-65.1kB

2.3 最小二成LM求解步骤

3 VIO 残差函数的构建

系统需要优化的状态量


image_1df2cbf6iafd1pgfhj81rvq1kpn4o.png-101.2kB

3.1 视觉重投影误差

一个特征点在归一化相机坐标系下的估计值与观测值的差。


待估计的状态量为特征点的三维空间坐标 ,观测值 为特征在相机归一化平面的坐标。

image_1df2e0smn1ek9a4r1vc1ukj9e555.png-42.7kB

image_1df2e4r241h6h6eu1sa3aasu5v.png-84.1kB

3.2 预积分模型

3.2.1 IMU数学模型

image_1df2e7k9snmtfe31tf21ik6ct76s.png-79.6kB
值得注意的是这里的加号,我们认为重力加速度是一个标量。实际上当加速度计静止的时候,IMU的实际读数就是接近于9.8的,这和我们的公式也是一致的,便于我们编程。

3.2.2 Level1 —— 朴素的IMU积分形式

从第 时刻的 PVQ 对 IMU 的测量值进行积分得到第 时刻的 PVQ:
image_1df2e93ed15jj14hrppc11921orb79.png-28kB
注意这个是相对世界坐标系的。

3.2.3 Level2 —— 将相对世界坐标系转为相对上一帧图像

下面的这个是精髓
image_1df2eail419is7nveantf9rv37m.png-27.7kB

然后我们就得到IMU预积分形式
image_1dfi8h4i9c8815421bu66it1sih9.png-39.7kB

3.2.4 Level3 —— IMU预积分的连续形式

预积分量仅仅跟 IMU 测量值有关,它将一段时间内的 IMU 数据直接积分起来就得到了预积分量
image_1dfi8kfoscoqf55enlovlbum.png-25.2kB

3.2.5 Level4 —— IMU预积分的离散形式

重新整理下 PVQ 的积分公式,有:
image_1dfi8lf6v9j2p115lt13m2qct13.png-26.9kB

3.2.6 Level5 —— IMU预积分mid-point连续形式(For Coding)

这个也是VINS程序中使用到的形式,只不过需要转换为离散形式,这个要注意的是编程的时候算式的更新顺序!!
image_1dfia4m5goja1206cd799d16rc2a.png-48.7kB

3.3 IMU预积分误差

image_1dfi9hdd21721uh010c4ifmbqm1t.png-127.3kB
IMU预积分误差关联的状态量如下:

3.4 预积分量方差的计算

3.3.1 为什么要计算预计分量方差?

有了IMU预积分就可以计算两个图像帧之间的IMU积分量得到五个状态量的值。虽然得到了时刻的IMU的状态量,为了构建IMU的误差项,还需要针对我们这五个状态量的协方差。有了协方差才能很好的确定我当前的状态量的估计好坏程度。

image_1dfiahrurcki1efs9kvhbt52m2n.png-55.5kB

3.3.2 怎么计算?

实际上这两种推导方式是可以相互转换的,第一种方式比较直观,那为什么还要有第二种方式呢?因为在很多系统中,比如我们的VIO系统,我们已经知道了状态的导数和状态之间的转移矩阵。第二种才是本质!!

确定误差传递的状态量,噪声量,然后开始构建传递方程。
image_1dfib3b8f1475m6f1qme15r012uo44.png-82.4kB

4 残差 Jacobian 的推导

视觉重投影残差的 Jacobian
IMU 预积分残差的雅克比

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注