Skip to content

ORB-SLAM2 算法安装

约 2258 字大约 8 分钟

部署

2023-09-29

前言

本篇博客将详细讲述我是如何在裸机状态下安装 Ubuntu16.04 双系统, 并安装对应版本的 ROSkinetic 系统. 外加在安装了这两个系统之后, 如何成功安装调试 INDEMIND 双目摄像头并实现 ORB-SLAM 算法.

该文章是我本科期间实验室工作的工作笔记, 正式记录于 2020 年 01 月, 现记录于此博客网站.

硬件准备

我使用的是 DELL-inspirion 5488, 对于摄像头配有 3.0 的 USB 接口.

请各位在安装过程中不要低于这个配置, 以免安装之后算法无法执行.

整个安装过程包含以下几个大的环节. 如果你某些模块已经安装过, 可以跳过该部分.

安装 Ubuntu16.04

IDEMIND 这款双目摄像头可以匹配 Ubuntu18.04 和 Ubuntu16.04 两个版本的 Ubuntu, 但是最好使用 Ubuntu16.04 版本.

由于我安装了太多遍, 忘记截图, 详细过程还请参考这篇文章: Ubuntu-16.04 详细安装教程(图文)附下载地址.

安装 ROS

关于版本

在安装过程中请注意 ROS 的版本, 一定要与自己 Ubuntu 的版本相匹配. Ubuntu16.04 对应的 ROS 版本是 kinetic. 如果不清楚自己的 Ubuntu 对应什么版本的 ROS 可以自行百度.

有能力的朋友可以直接去 ROS kinetic 官网上面跟着官方的安装指南走, 网上多数的安装过程都是官网上的翻译. 而且官网上面能够保证使用的是最新的 key.

安装过程中一定要使用稳定的网络! 绝大部分的错误都是因为网络不稳定导致的.

  1. 配置 Ubuntu 的资源库. Ubuntu 资源库配置

    提示

    Download from 的网址使用阿里云的链接最为有效.

    http://mirrors.aliyun.com/ubuntu
  2. 设置 Ubuntu 的 sources.list.

    sudo sh -c 'echo "deb http://packages.ros.org/ros/Ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  3. 设置 key.

    sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

    提示

    如果无法连接上述服务器, 可以尝试将 keyserver 替换为 hkp://pgp.mit.edu:80 或者 hkp://keyserver.Ubuntu.com:80.

  4. 更新 package.

    sudo apt-get update
  5. 安装 ROS kinetic 完整版.

    sudo apt-get install ros-kinetic-desktop-full

    提示

    安装完可以通过下面的命令查看可用的 package:

    apt-cache search ros-kinetic
  6. 初始化 rosdep.

    在使用 ROS 之前必须要初始化, 使用下面的命令:

    sudo rosdep init
    rosdep update
  7. 配置环境.

    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc

    其中: sourc ~/.bashrc 是更新配置文件的代码, 每次更改 bash 文件之后都要执行该命令才能生效.

  8. 安装 building package 的依赖.

    sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
  9. 测试 ROS 安装成功.

    1. 打开 Termial, 输入以下命令, 初始化 ROS 环境:
    roscore
    1. 打开新的 Termial, 输入以下命令, 弹出一个小乌龟窗口:
    rosrun turtlesim turtlesim_node
    1. 打开新的 Termial, 输入以下命令, 可以在 Termial 中通过方向键控制小乌龟的移动:
    rosrun turtlesim turtle_teleop_key
    turtlesim 运行成功
    turtlesim 运行成功
    1. 打开新的 Termial, 输入以下命令, 弹出新的窗口查看 ROS 节点信息:
    rosrun rqt_graph rqt_graph
    ROS 节点信息
    ROS 节点信息

安装 INDEMIND 中 ORB-SLAM 算法

以下过程多为 Ubuntu18.04 版本下的安装操作过程记录. 第二次 Ubuntu16.04 版本的安装稍有不同, 不同之处以标注的形式体现, 没有截图记录.

安装该摄像头的算法分为以下几个主要步骤:

  1. 配置环境
  2. 安装 SDK 依赖环境
  3. 安装 SDK

配置环境

安装 Pangolin

在安装 Pangolin 之前请确保以下环境已经正确安装.

  1. Glew
sudo apt-get install libglew-dev
  1. CMake
sudo apt-get install cmake
  1. Boost
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
  1. Python

Ubuntu16.04 和 18.04 自带 Python2, 无需重新安装.

在确保以上前置环境安装完毕后, 执行以下命令安装 Pangolin.

git clone https://github.com/stevenlovegrove/pangolin.git
cd pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j

安装过程中可能遇到的问题

  1. 网络问题. 安装过程中一定要注意网络的问题! 如果可能请尽量使用热点.

    若中间报错不是 'XXX package not found' 这种错误, 多半是网络不稳定造成的, 多次重新执行失败的命令即可成功.

  2. Package Not Found 问题.

    只需要按照提示去安装相应的包即可. 注意在安装包完成之后重新执行下面两行代码以生效:

    cmake -DCPP11_NO_BOOST=1 ..
    make -j
我遇到的问题.
  1. ERROR 1: libpng12-dev 安装失败. 在执行 sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev 时出现:

    E: Package 'libpng12-dev' has no installation candidate

    解决方法

    这个错误时由于 libpng12-dev 在 Ubuntu16.04 之后就被丢弃, 需要更换为 libpng-dev.

    sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
  2. ERROR 2: xkbcommon not found.

    xkbcommon not found
    xkbcommon not found

    解决方法

    sudo apt-get install libxkbcommon-dev

安装 OpenCV3.4.3

关于安装的版本

opencv 一定要安装3.4.3版本, 否则 INDEMIND 无法运行. 本文虽然是 18.04 的安装教程, 但是用于 16.04 也完全没有问题.

  1. 安装 cmake 和其他依赖项.

    sudo apt-get update
    sudo apt-get install cmake
    sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
  2. 在 opencv 官网上下载对应的版本: https://opencv.org/releases/.

  3. 下载完之后对文件进行解压.

  4. 进入解压后的文件夹并创建 build 文件夹, 并进入 build.

    mkdir build
    cd build
  5. cmake.

    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
  6. 编译.

    sudo make
  7. 执行安装命令.

    sudo make install
  8. 配置环境.

    sudo gedit /etc/ld.so.conf.d/opencv.conf

    在打开的空白文档中添加:

    /usr/local/lib

    之后执行使得修改生效:

    sudo ldconfig
  9. 配置 bash.

    sudo gedit /etc/bash.bashrc

    在打开的文件末尾添加:

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

    之后执行以下命令进行更新:

    source /etc/bash.bashrc 
    sudo updatedb

    配置完成!

  10. 测试.

    进入 opencv-3.4.3/samples/cpp/example_cmake, 这里面是一些 cmake 官方程序, 执行调用摄像头程序:

    cmake .
    make
    ./opencv_example

    如果能够调用自己电脑的摄像头, 说明安装成功!

安装 Eigen3

sudo apt-get install libeigen3-dev

安装 DBoW2

安装 DBoW2 的时候需要 OpenCV 的支持.

git clone https://github.com/dorian3d/DBoW2

cd DBow2
mkdir build
cd build

cmake ..
make
sudo make install

安装 g2o.

  1. 官网下载压缩包.

  2. 安装依赖项.

    sudo apt-get install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev

    可能会出现其中 linqglviewer-dev 安装不了的现象. 如果不需要 g2o 的 viewer 模块, 则不必装该依赖项. 如果需要可以去官网直接下载, 然后执行以下命令单独安装:

    mkdir build
    cd build
    cmake
    make
    sudo make install
  3. 编译.

    mkidr build
    cd build
    cmake ..     
    make
  4. 安装.

    sudo make install

安装 SDK 依赖环境

  1. 安装 google-glog 和 gflags.

    sudo apt-get install libgoogle-glog-dev
  2. 安装 BLAS&LAPACK.

    sudo apt-get install libatlas-base-dev
  3. 安装 SuiteSparse 和 CXSparse.

    sudo apt-get install libsuitesparse-dev

安装 SDK

重要

Ubuntu16.04 必须使用 GCC5.4 进行编译, 否则可能链接失败.

参考资料

  1. ROS SDK 安装.
  2. INDEMIND 微信公众号上 ORB-SLAM 的教程.

1. 下载 SDK 和源码

SDK: https://github.com/INDEMIND/SDK-Linux\

ORB-SLAM: https://github.com/INDEMINDtech/run.ORB

2. 进行 SDK 的安装

  1. 下载好 SDK 后, 进入 SDK-Linux/demo_ros/src 目录. 将下载好的 ORB-SLAM2 放在该目录下.

  2. 将下载的 CMakeList.txt 替换到 ...SDK/demo_ros/src 目录下.

  3. 进入 sdk/demo_ros/src/ORB_SLAM2/Vocabulary 目录下执行:

    tar -xf ORBvoc.txt.tar.gz
  4. 在 Linux SDK 的 demo_ros 文件夹下打开终端使用命令来进行编译:

    catkin_make

    执行成功之后会在 demo_ros 文件夹之下生成两个执行文件:

    1. module_driver
    2. stereo_euroc
  5. 打开一个新的终端, 执行:

    roscore
  6. module_driver 拷贝到 SDK/lib/1604 下, 打开终端执行:

    sudo -s
    sudo chmod 777 ./run.sh
    ./run.sh
  7. 进入 SDK/demo_ros 目录下, 打开终端, 执行:

    ./stereo_euroc

总结

🎉 🎉 当你完成上述的所有步骤, 你此时应该能够得到一个实时的 ORM-SLAM 算法 🎉 🎉

变更历史

最后更新于: 查看全部变更历史
  • first commit

    于 2024/9/20
  • 给予文件夹顺序

    于 2024/9/24
  • 整理图片格式和名称(not finished)

    于 2024/9/30
  • 升级版本+规整文档中的格式

    于 2024/10/11
  • 升级主题+新增文章+修改格式

    于 2024/10/14
  • 新增文字+CRLF全部替换为LF

    于 2024/10/17
  • update

    于 2024/10/17
  • 整理文章格式

    于 2024/10/29
  • 整理文章格式

    于 2024/11/1
  • 整理文章格式

    于 2024/11/1
  • 整理图片和文章

    于 2024/11/7
  • docs: update docs

    于 2024/11/19
  • modify(docs): remanage folders and rename files

    于 2024/12/17
  • fix(docs): fix text typo

    于 2024/12/26
  • fix(docs): fix text typo

    于 2024/12/26
  • fix(docs): fix text typo

    于 2024/12/27
  • fix(docs): fix text typo

    于 2024/12/27

Keep It Simple