ORB-SLAM3编译指南
ORB-SLAM3直接按照官网的教程进行编译会有一些错误报出,这篇博客总结了作者在第一次编译ORB-SLAM3的时候遇到的一些问题,供大家参考。主题流程为 官方GitHub库的README.md中的教程
作者编译环境
Ubuntu 16.04 LTS
OpenCV 3.4.4
Eigen 3.2.29
编译流程
1.先下载
- 去该项目GitHub官网将本工程下载下来,或直接git下来
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
- 下载数据集,其一共提供了两个数据集EuRoC数据集和 TUM-VI数据集。以后者为例,直接找到下载链接,如下图所示
其下方给出的下载例程脚本不好用,故采用迅雷下载,还可以使用迅雷会员进行加速。下载方式为:“单机”某个链接进入数据集列表>“右击”某个链接>“复制链接地址”>“打开迅雷”>“新建任务”>“粘贴”文件链接>下载,如下图所示。其他文件方式相同。
2.配置环境
安装OpenGL
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
安装CMake(编译环境,一般都会有,可以不装)
sudo apt install cmake
安装Python2 / Python3,(如果已经安装了ROS,就不用装了)
sudo apt install libpython2.7-dev
安装pkg-config(一般情况也已经安装好了,具体用法详见此链接)
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
Doxygen(此为GitHub库,用于产生html或pdf文档,下方命令参考OneSea-V3.1的博客)
sudo apt-get install doxygen
依赖库安装完成,接下来编译下载好的Pangolin
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build . --target pangolin_doc
但是实际上还需要进行安装,官网没说
sudo make install
否则,在编译ORB-SLAM3时会报错
[ 37%] Building CXX object CMakeFiles/ORB_SLAM3.dir/src/System.cc.o
make[2]: *** No rule to make target '/home/bit/Pangolin-master/build/src/libpangolin.so', needed by '../lib/libORB_SLAM3.so'。 停止。
make[2]: *** 正在等待未完成的任务....
- 检查是否已经安装OpenCV,(ROS没有自带安装),并查看版本
opencv_version
若没有该指令说明没有安装,需要安装,若版本低于3.0,则需要升级。
- 安装Eigen3(若安装了ROS则无需安装),最低版本3.1.0,查看是否安装Eigen3
locate eigen3
若有目录返回,则即可确定安装位置,查看Eigen详细版本因安装路径不同而不同,一般为如下两个路径
/usr/include/eigen3/Eigen/src/Core/util
/usr/local/include/eigen3/Eigen/src/Core/util
打开Macros.h文件,后面三个数字连起来就是版本号,此处为3.2.92
#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 2
#define EIGEN_MINOR_VERSION 92
若Eigen为安装,则需要安装
sudo apt-get install libeigen3-dev
3.编译ORB-SLAM3
- 接下来需要对ORB-SLAM3中的“CMakeLists.txt”文件进行修改,防止版本与其默认3.1.0不同而无法编译(如下所示),其实高版本如果差的不是很多,“CMakeLists.txt”更改之后应该没有影响。
Could not find a package configuration file provided by "Eigen3" (requested version 3) with any of the following names: Eigen3Config.cmake eigen3 config.cmake
对路径为 …/ORB-SLAM3/CMakeLists.txt的47行,进行修改
find_package(Eigen3 3.1.0 REQUIRED)
去掉3.1.0限制,改为
find_package(Eigen3 REQUIRED)
同时对路径 …/ORB_SLAM3/Thirdparty/g2o/CMakeLists.txt的第72行,进行修改
FIND_PACKAGE(Eigen3 3.1.0 REQUIRED)
去掉3.1.0限制,改为
FIND_PACKAGE(Eigen3 REQUIRED)
- 接下来对下载下来的ORB-SLAM3进行编译
cd ORB_SLAM3
chmod +x build.sh
./build.sh
- 接下来可以按照包里面的READM.md使用前面下载的数据集进行测试。