从零开始手写VIO 第5期(Lesson 1)
从本文开始会陆续将VIO课程的作业进行一个总结,记录下之前的作业,权当自己的总结,由于github可能比较慢,所以放在了gitee,链接参见下方源码位置,欢迎大家参考,更新不易,如需转载,请著名出处,谢谢。
课程内容回顾
第一讲的内容主要是对课程的介绍,VIO的概述,以及一些基础数学知识的回顾,相对来说比较简单
这里直接贴上作业。
## 1 文献阅读
1.1 视觉与IMU进行融合后有何优势?
a. 视觉信息分析
传统的单目视觉SLAM存在尺度问题,无法直接获取深度信息,需要进行三角化等方法来进行估计,此外,单目视觉SLAM对环境很敏感,在环境的光照变化明显,纹理特征不丰富等情况下容易出现定位失败的现象,另一方面,更新频率是相机的频率,比较低,在快速运动的情况下也容易导致定位失败。
b. IMU传感器分析
IMU传感器则相对稳定,受温度以外的影响比较小,能够自主积分定位,并且输出频率高,但是存在着误差累积,长时间情况下定位漂移的问题严重。
c. 视觉与IMU融合优势
视觉信息与IMU信息的融合是一种信息互补,IMU的加入有以下优点:
1) 能够解决初始化中的尺度问题
2) 为视觉信息的匹配提供较好的初始值
3) 可以估计重力方向
4) 融合后的定位信息输出频率更高
5) 在视觉的短时间失效的情况下能够作为一种补偿,不至于定位失败
1.2 有哪些常见的视觉 + IMU 融合方案?有没有工业界应用的例子?
1). 常见的视觉 + IMU融合方案
a. 优化方法: VINS, OKVIS, ORB + IMU, SVO+GTSAM
b. 滤波方法: rovio, msf, msckf, SVO+MSF,
2). 工业解应用的例子
谷歌: Tango(目前已停产),ARCore
微软: HoloLens
苹果: ARKit
1.3 在学术界, VIO 研究有哪些新进展?有没有将学习方法用到 VIO中的例子?
1). VIO研究有哪些新进展?
a. GPS + VIO [ 1 ] ^{[1]} [1]: GPS信息和VIO的紧耦合,适用于长航时
b. GPU前端加速的VIO [ 2 ] ^{[2]} [2]: 利用GPU加速前端算法,Faster than FAST
c. 结合线段特征: PL-VIO [ 3 ] ^{[3]} [3], Trifo-VIO [ 4 ] ^{[4]} [4]
d. 激光SLAM融合: V-LOAM [ 5 ] ^{[5]} [5], VISO2 + LOAM [ 6 ] ^{[6]} [6]
等等…
2). 有没有将学习方法用到 VIO中的例子?
a. Vinet [ 1 ] ^{[1]} [1]
b. DeepVIO [ 2 ] ^{[2]} [2]
b. 半监督,无监督学习的VIO [ 3 ] ^{[3]} [3]
2 四元数和李代数更新
2.1 源码
https://gitee.com/zmliu2020/vio-course ,
2.2 编译运行
###### 编译 ######
cd code_practice
mkdir build
cd build
cmake ..
make
###### 运行 ######
./main
2.3 结果展示
可以看到两种方式得到的结果十分接近。
3 其他导数
- d ( R − 1 p ) R \frac{d(R^{-1}p)}{R} Rd(R−1p)
d ( R − 1 p ) R = lim Δ ϕ → 0 ( R ∗ e x p ( Δ ϕ Λ ) ) − 1 p − R − 1 p Δ ϕ = lim Δ ϕ → 0 e x p