Advertisement

SLAM ORB-SLAM2(2)编译安装

阅读量:

在Ubuntu 20.04上安装SLAM ORB-SLAM2涉及多个步骤:首先安装软件包依赖如Eigen、Pangolin和OpenCV;接着依次安装这些库;然后下载ORB-SLAM2源码并进行修改;最后扩展交换空间并编译软件包以生成动态连接库libORB_SLAM2.so。

SLAM ORB-SLAM2(2)编译安装

  • 1. 软件包依赖安装

  • 2. 依赖安装

    • 2.1. Eigen
    • 2.2. Pangolin
    • 2.3. OpenCV
  • 3. ORB-SLAM2

    • 3.1. 源码下载
    • 3.2. 文件修改
    • 3.3. 扩大交换空间
    • 3.4. 编译

1. 程序包在配置过程中被依赖地进行安装


以一个纯净的ubuntu20.04桌面版为例

1.首先设置软件源为清华源

2.安装必要依赖

复制代码
    sudo apt-get install git cmake g++ gcc libglew-dev build-essential libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config python3-numpy tree

2. 依赖安装


2.1. Eigen

Eigen3是一个C++编写的线性代数库,可以方便的进行向量、矩阵的数值运算

复制代码
    cd ~
    git clone https://gitee.com/JoveH-H/eigen.git
    cd eigen && git checkout 3.1.0
    mkdir build && cd build
    cmake ..
    make -j4 && sudo make install
    sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

2.2. Pangolin

Pangolin是一个用于OpenGL显示/交互以及处理输入视频的库

复制代码
    cd ~
    git clone https://gitee.com/JoveH-H/Pangolin.git
    cd Pangolin && git checkout v0.5
    mkdir build && cd build
    cmake ..

进入Pangolin/src/CMakelists.txt文件
注释掉以下内容(第287-295/第308-332):

复制代码
    # find_package(FFMPEG QUIET)
    # if(BUILD_PANGOLIN_VIDEO AND FFMPEG_FOUND)
    #   set(HAVE_FFMPEG 1)
    #   list(APPEND INTERNAL_INC  ${FFMPEG_INCLUDE_DIRS} )
    #   list(APPEND LINK_LIBS ${FFMPEG_LIBRARIES} )
    #   list(APPEND HEADERS ${INCDIR}/video/drivers/ffmpeg.h)
    #   list(APPEND SOURCES video/drivers/ffmpeg.cpp)
    #   message(STATUS "ffmpeg Found and Enabled")
    # endif()
    
    # find_package(OpenNI QUIET)
    # if(BUILD_PANGOLIN_VIDEO AND OPENNI_FOUND)
    #   set(HAVE_OPENNI 1)
    #   if(_LINUX_)
    #     add_definitions(-Dlinux=1)
    #   endif()
    #   list(APPEND INTERNAL_INC  ${OPENNI_INCLUDE_DIRS} )
    #   list(APPEND LINK_LIBS ${OPENNI_LIBRARIES} )
    #   list(APPEND HEADERS ${INCDIR}/video/drivers/openni.h )
    #   list(APPEND SOURCES video/drivers/openni.cpp)
    #   message(STATUS "OpenNI Found and Enabled")
    # endif()
    
    # find_package(OpenNI2 QUIET)
    # if(BUILD_PANGOLIN_VIDEO AND OPENNI2_FOUND)
    #   set(HAVE_OPENNI2 1)
    #   if(_LINUX_)
    #     add_definitions(-Dlinux=1)
    #   endif()
    #   list(APPEND INTERNAL_INC  ${OPENNI2_INCLUDE_DIRS} )
    #   list(APPEND LINK_LIBS ${OPENNI2_LIBRARIES} )
    #   list(APPEND HEADERS ${INCDIR}/video/drivers/openni2.h )
    #   list(APPEND SOURCES video/drivers/openni2.cpp)
    #   message(STATUS "OpenNI2 Found and Enabled")
    # endif()

编译安装Pangolin

复制代码
    make -j4 && sudo make install

2.3. OpenCV

OpenCV就不用过多介绍了
需要注意的是 ORB-SLAM2 用的是 OpenCV3

复制代码
    cd ~
    git clone https://gitee.com/opencv/opencv.git
    cd opencv && git checkout 3.4.9
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=RELEASE ..
    make -j4 && sudo make install

3. ORB-SLAM2


3.1. 源码下载

复制代码
    cd ~
    git clone https://gitee.com/JoveH-H/ORB_SLAM2.git

若下载非官方源码,下载已经修改过的工程,则跳过下章节 3.2. 文件修改

复制代码
    cd ~
    git clone https://gitee.com/JoveH-H/ORB-SLAM2.git ORB_SLAM2

3.2. 文件修改

编辑~/ORB_SLAM2/include/LoopClosing.h

复制代码
    gedit ~/ORB_SLAM2/include/LoopClosing.h

找到

复制代码
    Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

替换为

复制代码
    Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

然后还有打开下列文件,添加头文件#include<unistd.h>

复制代码
    gedit ~/ORB_SLAM2/src/LocalMapping.cc ~/ORB_SLAM2/src/LoopClosing.cc ~/ORB_SLAM2/src/System.cc ~/ORB_SLAM2/src/Tracking.cc ~/ORB_SLAM2/src/Viewer.cc ~/ORB_SLAM2/Examples/Monocular/mono_euroc.cc ~/ORB_SLAM2/Examples/Monocular/mono_kitti.cc ~/ORB_SLAM2/Examples/Monocular/mono_tum.cc ~/ORB_SLAM2/Examples/RGB-D/rgbd_tum.cc ~/ORB_SLAM2/Examples/Stereo/stereo_euroc.cc ~/ORB_SLAM2/Examples/Stereo/stereo_kitti.cc

3.3. 扩大交换空间

编译ORB_SLAM2前,建立16G的交换空间

复制代码
    sudo swapoff -a
    sudo dd if=/dev/zero of=/swapfile bs=1024M count=16  # 16*1024创建16G的内存分区
    sudo mkswap /swapfile
    sudo swapon /swapfile

3.4. 编译

复制代码
    cd ~/ORB_SLAM2
    ./build.sh

可以在ORB_SLAM2/lib的目录下看到动态连接库libORB_SLAM2.so就成功了

在这里插入图片描述

编译好后可以选择关闭交换空间

复制代码
    swapoff -a
    sudo swapoff /swapfile
    sudo rm /swapfile

谢谢

全部评论 (0)

还没有任何评论哟~