ORB_SLAM2 定位模式
上一篇博客记载了ORB_SLAM2地图保存与加载的过程,本篇博客接着上一篇博客的内容记录在已拥有地图的情况下,ORB_SLAM2定位模式的如何运行。
前提
为了实现纯定位,需要对上一篇博客的内容进行一点小小的修改。我们需要在Map.h文件中重新定义Load()函数。即:
void Load(const string &filename,SystemSetting* mySystemSetting, KeyFrameDatabase* mpKeyFrameDatabase);
别忘了添加头文件和命名空间中的类声明。
同样,需要在Map.cc文件中修改Load()函数。Laod()函数中只有一处需要修改,将从地图文件中读到的关键帧添加到关键帧数据库中。即:
// Then read KeyFrames one after another, and add them into the map
vector<KeyFrame*>kf_by_order;
for( unsigned int i = 0; i < nKeyFrames; i ++ )
{
KeyFrame* kf = LoadKeyFrame(f, mySystemSetting);
AddKeyFrame(kf);
kf_by_order.push_back(kf);
//将关键帧添加到关键帧数据库中
mpKeyFrameDatabase->add(kf);
}
定位模式
为了开启定位模式,需要在system.cc文件中系统构造函数中进行相应设置并导入地图。