1. 概要说明
vslam中的 VIO 涉及的基本算法以及流程,大体上都清楚,只是你问我具体的,我会吞吞吐吐,抓不住重点,也没法清楚简明的说出来,所以这次希望能自己手写一个vio系统,把前端跟踪,后端优化,回环检测,局部地图以及全局地图优化完成,做一个完整完善的vio系统;
之前对 vins框架比较熟悉,orb-slam2也算了解,以及高博十四讲第13章的vo框架也熟悉,但看别人的框架 总有点儿走马观花,不能彻底明白理论知识点,以及具体的实现细节,这也是我想做这样自己手写系统的原因;
我平时也比较喜欢玩,毕竟学习也难,但是呢,不吃学习上的苦,生活的苦会更难!!!
在此,我将根据系统进展,每天更新文章,以便自己记录,也算是自我监督!!!
希望能在一个月以内完成,尽量越早吧 ,两周更好
2. 目标
完整的vio系统,前端基于光流的特征点法,后端使用非线性的图优化;
- 先做单目+imu的vio;
- 初始化需要估计尺度等,具体细节要写代码,看vin-mono代码才知道;
- 后续再加上 双目,毕竟双目在初始化方面会比较轻松,直接能得出尺度;具体是怎样的,见后续吧,因为我现在也说不清楚 (尴尬);
- 前端跟踪过程应该会比较轻松,就是光流+fast特征点 使用三角化,pnp计算帧间位姿,同时创建map点,关键帧等
- 后端优化部分,则有局部优化,和全局优化; 局部优化通过维护一个10帧的滑动窗口,进行BA优化(路标点+位姿),使用g2o实现吧;全局优化则是在有回环检测的时候进行 位姿图优化,不包含路标点优化,其实这个具体看后续的情况吧,若是计算时间允许,其实也做全局的BA也可以;
- 基于特征点vslam 在纹理信息不丰富,以及场景很相似的场景下,会出现跟踪失败或者是回环检测误匹配的情况,后续再添加线面特征,提升系统的鲁棒性,面特征的则主要面向室内;目前也有优秀的框架,见后续文章吧;
- 整个系统也会使用ros系统毕竟比较方便演示,我本人也很喜欢orb-slam的显示部分,所以整个系统的slam部分我会主要参照 vin-mono,显示部分会加 orb-slam中的显示部分;
接下来就真正开始吧
3. 思路
思路在上面目标部分,写了一些,但是目前水平受限,所以先缓一缓,后续再补
4. 框架
这张图是之前我画的,暂时用上;先干吧,鲁代码,啃公式 !!!