ORB-SLAM2环境配置中遇到的问题
基本的ORB-SLAM2的配置可以参考该文章:
Ubuntu20.04配置ORBSLAM2并运行
然后在配置环境过程中遇到了几个问题:
问题一:Cere库与Eigen库的冲突问题
因为电脑上之前装了 Eigen3.3.7 的库,后面在安装 Cere 库的时候,起初没什么问题,Cere 库的编译也很好。但是后面在 ORB-SLAM2的 CMakelist.txt 中报错找不到 CUDA::cublas ,当时以为是链接库有问题,后面发现是 Eigen 库的版本和 Cere 库的版本不一样。
当时电脑上 Cere 库的版本是2.0.0 的,后面把 Eigen 库版本换成 3.4.0 问题就解决了,不再报 Cere::ceres 找不到 CUDA::cublas的问题。
问题二:Pangolin库与Eigen库的冲突问题
Pangolin could not be found because dependency Eigen3 could not be found
网上其实有这部分的解释,说因为 Pangolin 里面的 ffmpeg 文件需要换,版本不对,后面也就换成了3.1.0版本的 ffmpeg。问题也就解决了。过程如下:
-
下载FFmpeg源代码:
wget https://ffmpeg.org/releases/ffmpeg-3.1.tar.gz
-
解压源代码包:
tar -xf ffmpeg-3.1.tar.gz
-
进入解压后的目录:
cd ffmpeg-3.1/
-
安装编译所需的依赖库:
sudo apt-get install build-essential yasm
这将安装编译所需的基本工具和YASM汇编器。
-
配置和编译FFmpeg:
./configure --enable-shared make
--enable-shared
参数是可选的,用于编译共享库。你可以根据需要进行调整。 -
安装编译好的FFmpeg:
sudo make install
这将安装编译好的FFmpeg程序和库文件。
-
验证安装:
ffmpeg -version
运行此命令可以查看安装的FFmpeg版本信息。但是如果在运行验证安装时报错说:
ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory
那么可以运行一下
sudo ldconfig
然后再运行验证安装的命令就可以了。
ffmpeg version 3.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
configuration: --enable-shared
libavutil 55. 27.100 / 55. 27.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 40.101 / 57. 40.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100