【SLAM】ubuntu16.04及ubuntu20.04编译ORB-SLAM3及运行EuRoC数据集

本文详细介绍了在Ubuntu 16.04和20.04上编译ORB-SLAM3所需依赖库的安装过程,包括Pangolin、OpenCV 3.4.11、Eigen3的安装与配置,以及解决编译过程中遇到的错误和问题,如cmake版本冲突、依赖库找不到等。
摘要由CSDN通过智能技术生成

需要各种库的下载安装(Pangolin、Opencv、 Eigen 3安装),与ORB-SLAM2基本相同。

详见:https://blog.csdn.net/weixin_47074246/article/details/108690625

一、 依赖库安装

0 准备工作

  • 安装git、vim、g++、gcc、cmake工具
$ sudo apt-get install git
$ sudo apt-get install vim
$ sudo apt-get install g++
$ sudo apt-get install gcc
$ sudo apt-get install cmake

安装最新版本的cmake

  • 将cmake更新至最新版本,现最新为3.18.3

卸载旧版本的cmake

$ sudo apt-get autoremove cmake

下载依赖项

$ sudo apt-get install build-essential
$ sudo apt-get install libssl-dev

下载

$ sudo wget https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3.tar.gz

文件路径一般选择在/opt/usr 路径下, 这里选择/opt
解压并安装

$ tar -zxvf  cmake-3.18.3.tar.gz
$ sudo mv cmake-3.18.3 /opt/cmake-3.18.3
$ cd /opt/cmake-3.18.3
$ ./configure
$ make -j8
$ sudo make install

创建软链接。

$ sudo ln -sf /opt/cmake-3.18.3/bin/*  /usr/bin/ 

查看cmake的版本

$ cmake --version

显示

cmake version 3.18.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

完成安装。

1 安装Pangolin

Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。

(1)安装必要的依赖项

$ sudo apt-get install libglew-dev
$ sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
$ sudo apt-get install libpython2.7-dev libpython3-dev
$ sudo apt-get install build-essential

(2)从github下载项目

$ git clone https://github.com/stevenlovegrove/Pangolin.git

(3)编译安装

$ cd Pangolin
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

2 OpenCV 3.4.11 安装及环境配置

(0)卸载OpenCV

原本安装了OpenCV 4.5.0 但是ORB_SLAM3需要版本号为3,需要卸载原版本。

进入原先编译opencv的build目录,执行以下代码。

$  cd opencv/build
$  sudo make uninstall
$  cd ..
$  sudo rm -r build
$  sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

代码执行后会报错,忽略

$  sudo apt-get --purge remove opencv-doc opencv-data python-opencv

检查,用以下代码检查opencv是否卸载干净

$  pkg-config opencv --libs
$  pkg-config opencv --modversion
$  cd /usr
$  find . -name "*opencv*" | xargs sudo rm -rf

若仍能显出opencv的相关信息,则表示未卸载干净

清除干净

$  sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4

(1)安装依赖项

1)安装编译工具
$ sudo apt-get install build-essential
2)安装依赖包
$ sudo apt-get install libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev
3)安装可选包
# python支持
$ sudo apt install python-dev python-numpy python3-dev python3-numpy
# streamer支持
$ sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
$ sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev  libtiff5-dev libwebp-dev libjasper-dev libdc1394-22-dev libopenexr-dev 


(2)下载和编译OpenCV 3.4.11

官网下载:https://opencv.org/releases/

或者源码下载

$ git clone https://github.com/opencv/opencv.git

$ git clone https://hub.fastgit.org/opencv/opencv.git
$ cd opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/ ..
$ make
$ sudo make install

(3)OpenCV环境配置

1)pkg-config环境
  • 找到opencv4.pc文件所在目录:
$ sudo find / -iname opencv4.pc

/usr/local/opencv4/lib/pkgconfig/opencv4.pc
  • /usr/local/include/opencv4/lib/pkgconfig/路径加入PKG_CONFIG_PATH
$ sudo gedit /etc/profile.d/pkgconfig.sh

在文件中加入下面一行:

export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig:$PKG_CONFIG_PATH

保存退出后,使用命令激活:

$ source /etc/profile
  • 验证是否配置成功:
$ pkg-config --libs opencv4
-L/usr/local/opencv4/lib -lopencv_ml -lopencv_dnn -lopencv_video -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_photo -lopencv_gapi -lopencv_imgproc -lopencv_core
2)动态库环境

配置OpenCV动态库环境——程序执行时加载动态库*.so的路径。

$ sudo vim /etc/ld.so.conf.d/opencv4.conf

在该文件(可能是空文件)末尾加上:

/usr/local/opencv4/lib

再执行以下命令使刚才配置的路径生效:

$ sudo ldconfig
3)python-opencv环境

找到编译好的python cv库:

$ sudo find / -iname cv2*.so
/home/username/opencv/build/lib/python3/cv2.cpython-35m-x86_64-linux-gnu.so
/usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so

cv2.cpython-35m-x86_64-linux-gnu.so就是编译好的python3的opencv库,我们把它复制到对应python解释器的/path/to/dist-packages/(系统自带的python解释器)和/path/to/site-packages(用户安装的python解释器)目录下,之后就能在该python解释器中使用python-opencv库。

链接到系统自带的python3解释器中:
$ sudo ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so
链接到Anaconda创建的虚拟环境python3解释器中:
$ ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.7/site-packages/cv2.so

参考:https://blog.csdn.net/new_delete_/article/details/84797041

3 安装Eigen3

(1) 源码安装

1)安装Eigen库
$ sudo apt-get install libeigen3-dev
2) 寻找Eigen3头文件
$ sudo updatedb
$ locate eigen3
找到位置在/usr/include/eigen3
3) 调用Eigen库

Eigen库全部由头文件组成要使用Eigen库
在cmake工程中的CMakeLists.txt文件中指定Eigen的头文件目录:

include_directories("/usr/local/include/eigen3")
4) 修改目录

运行命令:

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

因为eigen3 被默认安装到了usr/local/include,很多程序经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>。所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。上面指令将usr/local/include/eigen3文件夹中的Eigen文件递归地复制到上一层文件夹(直接放到/usr/local/include中,否则系统无法默认搜索到 -> 此时只能在CMakeLists.txtinclude_libraries

$ sudo cp /usr/local/include/eigen3/ /usr/include/ -R 

复制至/usr/include/目录以防万一。

参考:https://blog.csdn.net/ganbaoni9yang/article/details/83956999

(2) 压缩包安装

详见(3)ORB-SLAM3安装问题 2)Eigen的deprecated错误

(3) Eigen3测试

编写程序test.cpp

#include <iostream>
#include <Eigen/Dense>
 
//using Eigen::MatrixXd;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
 
using namespace std;</
  • 9
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值