Skip to content

ORB-SLAM2算法安装

1985字约7分钟

CV算法

2023-09-29

前言

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

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

硬件准备

我使用的是DELL-inspirion5488, 对于摄像头配有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. 配置环境

1.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,无需重新安装
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j

注意

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

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

提示

我在Ubuntu18.04下遇到如下问题, 仅供参考:

  1. ERROR1: libpng12-dev has no installation candidate

解决方法:

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

解决方法:

xkbcommon not found 解决方案
xkbcommon not found 解决方案
sudo apt-get install libxkbcommon-dev

提示

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

cmake -DCPP11_NO_BOOST=1 ..
make -j

1.2. 安装opencv3.4.3

注意

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

  1. 在opencv官网上下载对应的版本: https://opencv.org/releases/
  2. 安装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
  1. 下载完之后对文件进行解压
  2. 进入解压后的文件夹并创建build文件夹, 并进入build
mkdir build
cd build
  1. 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

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

1.3. 安装Eigen3

sudo apt-get install libeigen3-dev

1.4 安装DBoW2

提示

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

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

cd DBow2
mkdir build
cd build

cmake ..
make
sudo make install

1.5 安装g2o

本文参考资料

  1. Ubuntu18.4安装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单独安装

  1. 编译
mkidr build
cd build
cmake ..     
make
  1. 安装
sudo make install

2. 安装SDK依赖环境

2.1 安装google-glog +gflags

sudo apt-get install libgoogle-glog-dev

2.2 安装BLAS&LAPACK

sudo apt-get install libatlas-base-dev

2.3 安装SuiteSparse and CXSparse

sudo apt-get install libsuitesparse-dev

3. 安装SDK

注意

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

本文参考资料

  1. https://indemind-sdk.readthedocs.io/zh_CN/latest/src/sdk/ros%20SDK%20anzhuang.html
  2. INDEMIND微信公众号上ORB-SLAM的教程

3.1 下载SDK和源码

下载地址: SDK: https://github.com/INDEMIND/SDK-Linux ORB-SLAM: https://github.com/INDEMINDtech/run.ORB

3.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

即可得到实时ORB