orbslam2+windows10+vs2017下运行常见错误

详细链接见https://github.com/phdsky/ORBSLAM24Windows

1. 链接中使用的opencv版本为2.4.13.6,从官网下载后需要使用cmake进行编译生成vc15的链接库(dll,lib)。

过程参考链接中Step-》DBoW2的过程。

2. 在编译Pangolin的时候,缺少OpenGL的库:

VS2017->项目->管理NuGet程序包->浏览->NupenGL,进行安装。(最后提示1个失败项,忽略即可)

3.在Applications-》5 中添加参数命令时,不要加“./mono_tum”,直接写那三个路径。数据集的那个链接打不开,自己去官网下载。

4.运行前,把mono_tum设为启动项,再运行;运行成功后,运行一段时间可能会出现vector iterators incompatible错误,修改Tracking.cc中的UpdateLocalKeyFrames()函数中的代码。

这是因为:有一个用迭代器iterator来遍历参数mvpLocalKeyFrames的操作,而且在遍历里面有 mvpLocalKeyFrames.push_back()的操作。这就会引发上面vector iterators incompatible的报错。因为当push_back后可能引发vector的容量的变化,标准库会自动为其新分配一段更大的内存空间,从而使得迭代器失效。

修改:把for(vector<KeyFrame*>::const_iterator itKF=mvpLocalKeyFrames.begin(), itEndKF=mvpLocalKeyFrames.end(); itKF!=itEndKF; itKF++)变成for(int i=0;i<mvpLocalKeyFrames.size();i++);

再把KeyFrame* pKF = *itKF;变成KeyFrame* pKF = mvpLocalKeyFrames[i];

 差不多就是遇见的所有问题了。。。。。

posted @ 2020-09-15 15:02  如梦似幻11  阅读(659)  评论(0)    收藏  举报