Ubuntu20.04安装orb-slam3

说明:笔者是在一个全新的系统上面配置的。安装时间:2022.10.30
环境:虚拟机;VMare Workstation16 Pro,运行内存16G.

之后,笔者在Ubuntu18.04的机器上安装过,也能使用.

注意orb-slam3的版本.

版本说明:

  • orb-slam3 : v0.4-beta.
  • cmake : 3.16.3
  • pangolin : v0.8
  • openCV : 4.4.0
  • Eigen : 3.3.7
  • pyhon : 2.7.18
  • boost : 1.70.0

注:笔者使用了科学上网工具

0.安装cmake、git

cmake安装:

sudo apt-get update #软件更新
sudo apt install cmake # 安装cmake3.16.3
cmake --version #查看cmake 版本

g++ install

sudo apt install g++

git安装:

sudo apt install git

1.安装Eigen3

environment: Could NOT find OpenGL

sudo apt-get install libegl1-mesa-dev

environment: Could not find GLEW

sudo apt install libglew-dev

apt安装:

sudo apt install libeigen3-dev

注意:
默认安装可能会在以下文件夹:/usr/local/include/eigen3/Eigen/usr/include/eigen3/Eigen
那么需要将Eigen拷贝一份到:/usr/local/include

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

or

sudo cp -r /usr/include/eigen3/Eigen /usr/local/include 

因为:许多程序使用的是:#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>,否则一些程序在编译时会因找不到Eigen/Dense而报错。

2.0安装pangolin(方法一)

下载pangolin:
笔者用的 V0.8 版本

git clone --recursive https://github.com/stevenlovegrove/Pangolin.git

安装依赖:

cd Pangolin
# Install dependencies (as described above, or your preferred method)
./scripts/install_prerequisites.sh recommended

安装:

# Configure and build
cmake -B build
cmake --build build

2.1安装Pangolin(方法二)

说明:不知道为什么上面突然装不上了,然后用这种方法装上了

ubuntu18.04下 安装SLAM-Pangolin

下载Pangolin:

git clone --recursive https://github.com/stevenlovegrove/Pangolin.git

编译安装:

cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
#如果遇到 :error: ISO C++1z does not allow dynamic exception specifications 类似报错
#使用:cmake -DBUILD_PANGOLIN_LIBOPENEXR=OFF .. #目的是禁用OpenEXR
sudo make install

3.安装Python

sudo apt install libpython2.7-dev

4.安装openCV4.4.0

说明:4默认不会生成.pc文件,最后查看版本的时候查看不到,找不到包。
安装依赖:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

下载openCV:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
把opencv_contrib放到opencv文件夹中
在opencv文件夹中打开终端

CMAKE_INSTALL_PREFIX表示安装的目标路径, OPENCV_EXTRA_MODULES_PATH表示opencv_contrib所在路径
编译安装:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D DOPENCV_GENERATE_PKGCONFIG=ON ..
make -j4
sudo make install
sudo ldconfig

5.安装ORB-SLAM

下载orb-slam3:建议去github下载0.4版本的

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

安装orb-slam3:

cd ORB_SLAM3
chmod +x build.sh
./build.sh

6.安装ORB-SLAM可能遇到的错误

1.fatal error: boost/serialization/serialization.hpp: No such file or directory 解决方法:

sudo apt install libboost-filesystem-dev

2.fatal error: openssl/md5.h: No such file or directory
解决方法:

sudo apt install libssl-dev

3./usr/local/include/sigslot/signal.hpp:1180:65: error: ‘slots_reference’ was not declared in this scope cow_copy_type<list_type, Lockable> ref = slots_reference();
解决方法:

sed -i 's/++11/++14/g' CMakeLists.txt

4.internal compiler error: killed
解决方法:增加运行内存到16G。(据说安装时,内存占用最高可达14G)。当然还有其他方法,此处不介绍。

5./usr/bin/ld:找不到 -lboost_serialization
解决方法:安装boost库。笔者使用的1.70版本
解压:

bzip2 -d boost_1_70_0.tar.bz2
tar xvf boost_1_70_0.tar

解压后:

cd boost_1_70_0

安装:

./bootstrap.sh
sudo ./b2 install

创建boost.sh文件:

cd /etc/profile.d
sudo gedit boost.sh

添加如下文字:
说明:BOOST_ROOT为boost文件的路径(改成你自己的boost解压之后的位置),笔者路径为:/home/u/Downloads/boost_1_70_0
BOOST_INCLUDE为boost头文件。BOOST_LIB为boost库文件。

#!/bin/sh
BOOST_ROOT=/home/u/Downloads/boost_1_70_0
BOOST_INCLUDE=/usr/local/include/boost
BOOST_LIB=/usr/local/lib
export BOOST_INCLUDE BOOST_LIB BOOST_ROOT

保存退出后,执行以下代码:

sudo chmod +x boost.sh
source boost.sh

6.error while loading shared libraries: libpango_image.so: cannot open shared object file: No such file or directory
原因:共享库文件装到了/usr/local/lib目录下,但是配置文件(/etc/ld.so.conf)中没有这个路径.
解决方法:

sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf"

参考文章:
ORB-SLAM3配置安装及运行—Ubuntu20.04
ubuntu 20.04版本更新软件源为国内源(清华、网易、阿里云等等)
ubuntu 安装使用eigen3 (两种方式)
stevenlovegrove /Pangolin
ubuntu18.04下 安装SLAM-Pangolin(亲测有效)
Ubuntu20.04安装OpenCV4.4.0
Ubuntu18.04下编译ORB_SLAM3遇到的问题
编译 ORB-SLAM 3 出现 slots_reference 错误
报错:error while loading shared libraries 的解决方法