ORB-SLAM2详细安装教程-ubuntu18.04
前言一、安装第三方库1.安装Pangolin2.安装OpenCV3.安装Eigen 二、安装以及运行ORB-SLAM21.安装编译ORB-SLAM22.单目模式运行演示案例3.RGBD模式模式运行演示案例 总结
前言
paper:https://arxiv.org/pdf/1610.06475.pdf
githup::https://github.com/raulmur/ORB_SLAM2 提示:ORB-SLAM2源码作者推荐在Ubuntu 12.04, 14.04 和16.04上安装运行。
最近在ubuntu18.04上配置ORB-SLAM2运行环境时踩了很多坑,在这期间查阅了很多资料和博客,于是想对安装过程进行总结,方便自己反复查阅以及分享经验避免大家重复踩坑。
博主是用docker在ubuntu18.04容器中安装的ORB-SLAM2,已经打包成docker的镜像文件分享给大家。
# 查看ubuntu版本号lsb_release -a
安装前的准备:安装cmake、git 、gcc 和g++
# 更新apt库,更新软件列表sudo apt-get update
apt-get源修改参考
# 安装git,用于从Github上克隆项目到本地sudo apt-get install git# 安装cmake,用于程序的编译sudo apt-get install cmake# 安装gcc和g++,安装c和c++编译器sudo apt-get install gcc g++
一、安装第三方库
# 建立一个ORB-SLAM2的文件夹,建议将所有的第三方库以及ORB-SLAM2源码都放入其中mkdir ORB-SLAM2
1.安装Pangolin
Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。
1.安装依赖项
sudo apt-get install libgl1-mesa-devsudo apt-get install libglew-devsudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-devsudo apt-get install libpython2.7-dev
2.安装 Pangolin
通过链接或通过git下载Pangolin源码(不推荐,问题很多)
# 需要科学上网git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
强烈推荐Pangolin 0.6(稳定版) 提取码:45bo
# 解压并重命名为Pangolinunzip Pangolin-0.6.zip && mv Pangolin-0.6 Pangolin
# 开始编译和安装cd Pangolinmkdir build && cd build cmake -DCPP11_NO_BOOST=1 ..sudo make install
3.验证安装是否完成
# 验证cd ../examples/HelloPangolinmkdir build && cd buildcmake ..make./HelloPangolin
若安装成功,则会弹出以下窗口:
2.安装OpenCV
可以参考该链接
1.安装依赖项
# 解决:Unmet dependencies.Try'apt--fix-broken install'with no packages(or specify a solution)sudo apt --fix-broken installsudo apt-get updatesudo apt-get upgradesudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.devsudo apt-get install libtiff5.dev libswscale-dev# 解决:add-apt-repository: command not foundsudo apt-get install software-properties-commonsudo apt-get updatesudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"sudo apt-get updatesudo apt-get install libjasper1 libjasper-dev
2.安装 OpenCV3.4.5
OpenCV3.4.5源码 提取码:m27t (OpenCV老版本可在Github仓库右侧的Releases里找)
# 安装百度云,xxx.deb是自己下载的版本sudo dpkg -i baidunetdisk_4.17.7_amd64.deb
# 解压并重命名为opencvtar -xvf opencv-3.4.5.tar.gz && mv opencv-3.4.5 opencv# 开始编译和安装cd opencvmkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..# 4线程数量,根据电脑性能选择合适的数字make -j4sudo make install
3.验证安装是否完成
# 查询OpenCV版本pkg-config --modversion opencv# 查询OpenCV库pkg-config --cflags opencv# 查询头文件目录pkg-config --libs opencv
# 验证cd opencv/samples/cpp/example_cmakecmake .make./opencv_example
若安装成功,则会弹出以下窗口:
3.安装Eigen
1.安装 Eigen3.3.7
建议源码安装可以下载任意版本对应的文件。
# 解压并重命名为opencvtar -xvf eigen-3.3.7.tar.gz && mv eigen-3.3.7 eigen# 开始编译和安装cd eigenmkdir build && cd buildcmake ..makesudo make install# 在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense># 因此安装后需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include# 后续小节会有C++测试代码说明sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
2.测试eigen库安装完成
在home目录下新建一个test.cp 文件用以测试。
# 建立 test 测试文件touch test_eigen.cpp# 用gedit打开此测试文件,添加C++代码用于测试gedit test_eigen.cpp# 编译后生成一个test_eigen的可执行文件g++ test_eigen.cpp -o test_eigen# 在test_eigen可执行文件目录下执行以下命令,证明eigen库安装完成./test_eigen
在test_eigen.cpp文件中添加的C++测试代码。
#include <iostream>//需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include#include <Eigen/Dense>//using Eigen::MatrixXd;using namespace Eigen;using namespace Eigen::internal;using namespace Eigen::Architecture;using namespace std;int main(){ cout<<"*******************1D-object****************"<<endl; Vector4d v1; v1<< 1,2,3,4; cout<<"v1=\n"<<v1<<endl; VectorXd v2(3); v2<<1,2,3; cout<<"v2=\n"<<v2<<endl; Array4i v3; v3<<1,2,3,4; cout<<"v3=\n"<<v3<<endl; ArrayXf v4(3); v4<<1,2,3; cout<<"v4=\n"<<v4<<endl;}
二、安装以及运行ORB-SLAM2
1.安装编译ORB-SLAM2
# 通过git下载ORB_SLAM2源码,需要科学上网git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2cd ORB_SLAM2# 赋予shell文件运行权限chmod +x build.sh# 需要科学上网# 博主根据个人电脑性能将build.sh里的make -j 修改为 make -j8./build.sh
常见的错误
编译时如果有如下错误,在对应的头文件中加上 #include <unistd.h>
# 下列是需要加上#include <unistd.h>的c++文件# 在ORB_SLAM2/src文件夹下LocalMapping.ccLoopClosing.ccSystem.ccTracking.ccViewer.cc# 在ORB_SLAM2/Examples/RGB-D文件夹下rgbd_tum.cc# 在ORB_SLAM2/Examples/Monocular文件夹下mono_kitti.ccmono_euroc.ccmono_tum.cc# 在ORB_SLAM2/Examples/Stereo/文件夹下stereo_euroc.ccstereo_kitti.cc
或者直接在 ORB_SLAM2/include/System.h 中加上 #include <unistd.h> (强烈推荐)
如果又有如下错误,可以使用gedit打开或者执行以下命令安装xterm
sudo apt-get updatesudo apt-get upgradesudo apt-get install xterm
2.单目模式运行演示案例
TUM 数据集
数据下载链接,下载如下数据集
# 解压数据集tar -xvf rgbd_dataset_freiburg1_desk.tgz
根据数据集要求: Examples/Monocular/TUM1.yaml 对应 freiburg1
执行以下命令显示效果
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /root/Downloads/rgbd_dataset_freiburg1_desk/
3.RGBD模式模式运行演示案例
需额外下载associate.py添加到数据文件夹下
个人理解:作用是使RGD和depth的数据做一个对齐,一 一对应。
注意:只能在Python2 环境下运行
# associate.py需要numoy包sudo apt-get install python-pippip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy# 在数据文件夹里执行命令python associate.py rgb.txt depth.txt > associate.txtpython associate.py associate.txt groundtruth.txt > associate_with_groundtruth.txt
执行以下命令显示效果
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /root/Downloads/rgbd_dataset_freiburg1_desk/ /root/Downloads/rgbd_dataset_freiburg1_desk/associate.txt
总结
尽可能简单、详细的介绍ORB-SLAM2的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解ORB-SLAM2的原理和代码。