Skip to content

ORB-SLAM2 算法安装

2194字约7分钟

部署

2023-09-29

前言

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

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

硬件准备

我使用的是 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 的资源库

    重要

    安装过程中一定要使用稳定的网络!

    使用手机热点最好. 绝大部分的错误都是因为网络不稳定导致的.

    提示

    Download from 的网址使用阿里云的链接最为有效(如图中所示). 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

    提示

    如果无法连接上述服务器, 可以尝试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. 安装 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 问题

      还有可能出现一些 package 找不到的错误, 只需要按照提示去安装相应的包即可. 在安装包完成之后重新执行下面两行代码即可:

      cmake -DCPP11_NO_BOOST=1 ..
      make -j
    我在 Ubuntu18.04 下遇到如下问题, 仅供参考
    1. ERROR1: libpng12-dev has no installation candidate

      解决方法:

      libpng12-dev 解决方案
      libpng12-dev 解决方案
    2. ERROR2: xkbcommon not found

      解决方法:

      xkbcommon not found 解决方案
      xkbcommon not found 解决方案
      sudo apt-get install libxkbcommon-dev
  2. 安装 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 ..
    1. 编译
    sudo make
    1. 执行安装命令
    sudo make install
    1. 配置环境
    sudo gedit /etc/ld.so.conf.d/opencv.conf

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

    /usr/local/lib

    之后执行使得修改生效:

    sudo ldconfig
    1. 配置 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

    配置完成!

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

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

  3. 安装 Eigen3

    sudo apt-get install libeigen3-dev
  4. 安装 DBoW2

    重要

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

    git clone https://github.com/dorian3d/DBoW2
    
    cd DBow2
    mkdir build
    cd build
    
    cmake ..
    make
    sudo make install
  5. 安装 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. https://indemind-sdk.readthedocs.io/zh_CN/latest/src/sdk/ros SDK anzhuang.html
  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 算法 🎉 🎉

变更历史

最后更新于: 查看全部变更历史
  • docs: update docs

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

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

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

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

    于 2024/10/29
  • update

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

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

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

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

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

    于 2024/9/24
  • first commit

    于 2024/9/20