ubuntu16.04编译ORB-SLAM3遇到的问题汇总
首先上官方github:https://github.com/UZ-SLAMLab/ORB_SLAM3.git
本文为在实现ORB-SLAM2的基础上,安装ORB-SLAM3,默认解决了ORB-SLAM2编译过程中出现的所有问题。
1、编译g2o时eigen出现undeclare问题:
虽然官方github中给的eigen版本是3.1.0,但是在使用eigen3.1.0编译时会出现undeclare的问题,怀疑是eigen版本问题,切换成3.2.10,问题解决,编译通过。
附链接:
1)eigen版本查看:<>
2)eigen各版本下载:https://gitlab.com/libeigen/eigen/-/releases
2)eigen版本切换:<>
2、编译ORB-SLAM3、g2o、ORB-SLAM ROS时出现找不到eigen的情况
采用https://www.it610.com/article/1278616421705728000.htm中的方法,简单来说,核心思想就是直接定义电脑中eigen的安装位置,不让cmake自己find,一般安装在/usr/include/eigen3,具体修改如下:
1)orb-slam3
添加eigen3位置,include_directories("/usr/include/eigen3"),注释find_package和include

2)g2o
注释关于eigen3的一大块内容,添加eigen3位置,include_directories("/usr/include/eigen3")

3)ROS
注释关于eigen3的find_package,添加eigen3位置,include_directories("/usr/include/eigen3")

3、编译orb-slam3 ros时出现fatal error: GeometricCamera.h: 没有那个文件或目录,或者是Pinhole.h,或者KannalaBrandt8.h
参考<>的博客
在头文件添加他们所在的文件夹名称
#include "CameraModels/GeometricCamera.h"
#include "CameraModels/Pinhole.h"
#include "CameraModels/KannalaBrandt8.h"
4、编译orb-slam3 ros时出现error: ‘ORB_SLAM2’ does not name a type,应该是作者没有更换ros下的代码,还保留的ORB-SLAM2的代码,此时更换代码中的名称即可
命令行进入ORB-SLAM3文件夹,输入:
sed -i "s/ORB_SLAM2/ORB_SLAM3/g" `grep -rl "ORB_SLAM2"`
5、libboost_system.so: error adding symbols: DSO missing from command line
与ORB-SLAM类似,在CMakeLists中添加-lboost_system,如图
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM3.so
-lboost_system
)
6、error while loading shared libraries: libORB_SLAM3.so: cannot open shared object file: No such file or directory
应该是/usr/lib中没有对应的.so文件,把ORB-SLAM3下lib文件夹中的.so文件复制到/usr/lib中即可
sudo cp lib/libORB_SLAM3.so /usr/lib
7、MonoAR: error while loading shared libraries: libg2o.so: cannot open shared object file: No such file or directory
原理同上
8、运行./example后不出现图像
检查.sh文件中数据集的路径是否正确!!!
9、fatal error: GeometricCamera.h: 没有那个文件或目录
因为在orb-slam3中该文件放到一个文件夹中,所以可以在对应文件添加文件夹名称CameraModels
#include "CameraModels/GeometricCamera.h"
10、fatal error: Pinhole.h: 没有那个文件或目录
与第九条类似#include "CameraModels/Pinhole.h
11、类似
#include "CameraModels/KannalaBrandt8.h"
