上一篇博客给大家了一个很模糊的ORB-SLAM轮廓,从这一篇博客开始,我们开始一起学习具体的理论和代码解读。在我的博客里会参考一些前辈的博客内容。我会把参考的链接放到最后。
二 System.cc
1.代码解读
System.cc是ORB-SLAM2的主程序,也是ORB-SLAM2系统的入口。本篇主要讲System.cc程序,以及其中用到的理论。
还来上一篇博客中的图。
再来一张吴博的图,大家可以作为对照。
我把关键代码提取出来,进行标注。
mpVocabulary = new ORBVocabulary();//读取ORB词袋
mpKeyFrameDatabase = new KeyFrameDatabase(*mpVocabulary);//创建关键帧数据库
mpMap = new Map();//创建地图对象
mpFrameDrawer = new FrameDrawer(mpMap);//创建显示关键帧的窗口
mpMapDrawer = new MapDrawer(mpMap, strSettingsFile);//创建显示地图的窗口
mpTracker = new Tracking(this, mpVocabulary, mpFrameDrawer, mpMapDrawer,
mpMap, mpKeyFrameDatabase, strSettingsFile, mSensor);//初始化Tracking线程,该线程在主循环中
mpLocalMapper = new LocalMapping(mpMap, mSensor==MONOCULAR);//初始化Local Mapping线程
mptLocalMapping = new thread(&ORB_SLAM2::LocalMapping::Run,mpLocalMapper);//启动线程
mpLoopClos