ORB_SLAM2 移植到 Windows

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a356337092/article/details/82349037

主要基于GitHub上的项目:ORBSLAM24WINDOWS

在Windows下编译的坑:

1.用cmake编译的时候记得选择VS x64
2.编译pangolin的时候需要从GitHub上clone2个库,可能得翻墙,也可能连手机热点更好
3.VS编译的时候可能会显示x86和x64冲突:
error LNK2001: unresolve external symbol_ ……
error LNK1120:52 unsolved externals
右键属性->linker->command line,然后把里面的附加选项(/machine:x86)去掉,不过实际上如果cmake的时候选对,应该不会出现这个问题
4.记得改一下yaml里面的内参

DBoW2使用的词袋模型从读取txt改成读取bin,加速启动

用https://github.com/raulmur/ORB_SLAM2/pull/21/commits/4122702ced85b20bd458d0e74624b9610c19f8cc这里的方法改词典读取,实际上可以在外面做一个.bin以后,只修改System.cc和Thirdparty/DBoW2/DBoW2/TemplatedVocabulary.h,更改读取方式就可以了,可以把二进制词典的生成放在外面项目,并不需要其他依赖,对移植比较方便。

对VIORB在Windows下的移植

直接用LearnVIORB 会遇到ROS在Windows下的问题,可以用:
LearnViORB_NOROS
替换掉相关的cpp和h后可能会出现下列问题:

error C2039: “back_inserter”: 不是“std”的成员
error C3861: “back_inserter”: 找不到标识符
解决方法:#include ﹤iterator﹥

C2719 “dBias”: 要求 16 对齐的形参将不被对齐
Eigin的错误,函数形参调用应该用引用的形式,即加const和&
OptimizationAlgorithmGaussNewton改成用LM
windows下面在读图的时候不需要去除最后一个字符。

这一段是导致VIORD离线读图的时候会越来越卡,可以注释掉(未严格考究)

	/*	while (!SLAM.bLocalMapAcceptKF())
		{
			bstop = true;
		};*/

猜你喜欢

转载自blog.csdn.net/a356337092/article/details/82349037