部署ORB-SLAM2
此系列博客终于接近尾声,走过前方配置依赖库的漫漫长路,我们终于要来部署ORB-SLAM2了!
ORB-SLAM2源码下载:https://github.com/raulmur/ORB_SLAM2
这一次,我们不再用CMake配置工程,我们手动新建一个vs工程,就称为ORB-SLAM2吧,将下载好的源码放在同个目录下,然后右键项目->添加现有代码,将头文件和源文件全部添加进来。
此时随便打开一个.cpp来查看,include头文件那里都会有错,我们需要配置一下属性表。将之前制作的几个依赖库的属性表(OpenCV、Pangolin、DBoW2、Eigen3、g2o)添加到Release x64文件夹下,顺便将编译模式调为Release x64.别忘了,要将关于g2o和DBoW2的头文件都改掉,用尖括号来使用它们。
如果你还看到你的ORB-SLAM2头文件有错,多半是你没把源文件和头文件放在同个目录下(我也不喜欢这么做),这个时候可以右键项目->属性->VC++目录->包含目录,为其添加头文件目录,建议使用相对路径。
好了,先什么都不做,编译一下看看吧。不出意外的话,没有报依赖库的错误,而有不少ORB-SLAM2的错误:
- 表达式必须含有常量值
- 不可指定数组类型 float[N][N]
- “usleep”找不到标识符
- 表达式计算结果不是常数
- 无法打开“sys/time.h”
- 无法打开“stdint-gcc.h”
std::vector<int,std::allocator<_Ty>>::vector
: 对重载函数的调用不明确
我们来逐一解决,首先,错误1、2是同一种问题,就是使用变量去定义一个数组大小,这在C++标准下是不允许的,但gcc编译器对此支持,想必也是做了转换,我们只要将数组定义的时候用new关键字来定义就好了,如:
// float Distances[N][N</