ORB-SLAM3安装及运行EuRoC数据集
需要各种库的下载安装(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.txt
用include_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;</