代码解读主要是自己梳理代码过程中的记录,和网上各位大神的解读水平比不了。
ORB SLAM的大名和介绍就不需要在这里多介绍了,直接进入代码解读环节吧。
一、系统代码结构
ORB SLAM的代码结构非常清晰,直接看下面这张图就可以
这张图里可以看出orb一共有三个线程,分别负责跟踪(TRACKING)、局部建图(LOCAL MAPPING)和闭环(LOOP CLOSING)功能,同时又增加了重定位(PLACE RECOGNITION)功能。
二、 系统流程
系统流程的入口在http://system.cc文件中,这个文件中一共有四个函数:
1) System
2) TrackStereo
3) TrackRGBD
4) TrackMonocular
其中System是SLAM系统的构造函数,包括所有功能模块和所有线程的初始化,而TrackStereo、TrackRGBD和TrackMonocular分别是双目、RGBD和单目的数据入口,使用过程中,先调用System函数生成SLAM系统的对象,然后根据传感器类型,调用相应的入口函数,就可以执行SLAM的流程了。
下面对各个函数分别做介绍
1. 构造函数(System)
先上一张图,看一下构造函数内部的内容
构造函数中和流程相关的一共有四个参数,分别是
1) strVocFile: ORB词袋数据。词袋是在做闭环检测和重定位时候做检索用的,从历史关键帧中检索出和当前帧最相似的一帧,以进行位姿匹配。
2) strSettingsFile: 配置文件