ORB-SLAM(单目版本)编译与运行

Posted epicmild

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORB-SLAM(单目版本)编译与运行相关的知识,希望对你有一定的参考价值。

ORB-SLAM的GitHub主页:https://github.com/raulmur/ORB_SLAM
虽然整体上已经说得很清楚了,但是有些细节不够详细,运行的时候不注意很容易出错,因此对整个编译与运行过程进行详细的介绍:

安装环境:Ubuntu14.04+ROS indigo

准备工作
  1.源代码下载:
    可以在GitHub主页下载到本地;或者执行命令:git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
  2.测试数据集下载并解压:
    http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz

依赖库安装
  1.Boost
    使用Boost库来管理多线程,执行命令:
    sudo apt-get install libboost-all-dev
  2.ROS
    使用ROS主要来获取输入图像序列(来自相机或数据集rosbag)以及可视化(rviz,image_view),ROS的安装与配置详见 http://wiki.ros.org/
  3.OpenCV
    使用OpenCV来处理图像和特征,需要注意的是这里需要使用OpenCV2.4版本(OpenCV3.0以上版本差别较大,编译无法成功)。具体编译与安装过程见下面的多版本OpenCV管理。
    编译之前需要安装依赖项:
    sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
  4.g2o
    ~/ORB-SLAM/Thirdparty里自带g2o库,用来进行优化操作,需要安装以下依赖项:
    sudo apt-get install libblas-dev
    sudo apt-get install liblapack-dev
    sudo apt-get install libeigen3-dev
    再进行编译,进入~/ORB-SLAM/Thirdparty/g2o目录下,执行命令:
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make
  5.DBoW2
    ~/ORB-SLAM/Thirdparty里自带DBoW2库,用来进行位置识别和特征匹配,无需安装其他依赖项,直接编译即可:
    进入~/ORB-SLAM/Thirdparty/DBoW2目录下,执行命令:
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make

ORB-SLAM编译
  1.将ORB-SLAM的绝对路径添加到ROS的工作空间中,执行以下命令: export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM
    将PATH_TO_PARENT_OF_ORB_SLAM替换成ORB-SLAM所在的绝对路径。
    注意:若ORB-SLAM直接放在ROS工作空间的路径下,则无需上述步骤。查看当前ROS的工作空间的路径命令为:echo $ROS_PACKAGE_PATH
  2.进入ORB_SLAM当前目录,执行命令:
    mkdir build
    cd build
    cmake .. -DROS_BUILD_TYPE=Release
    make
    注意:如果使用的是ROS indigo版本,则需要将ORB_SLAM文件夹的manifest.xml文件中的opencv2依赖一行命令删除。

ORB-SLAM运行
  1.打开终端,执行启动ROS服务:roscore
  2.打开终端,运行ORB_SLAM:rosrun ORB_SLAM ORB_SLAM Data/ORBvoc.txt Data/Settings.yaml (运行前先将~/ORB_SLAM/Data目录下的ORBvoc.txt.tar.gz文件解压)
  3.打开终端,执行一些可视化命令:
    rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true(启动图片查看程序,到时可以看到特征点跟踪情况)
    rosrun rviz rviz -d Data/rviz.rviz(启动地图视图窗口,显示轨迹及特征点地图)
    或者直接在ORB_SLAM目录下执行(等价于上述两命令):roslaunch ExampleGroovyOrNewer.launch
    或者直接执行(等价于上述两命令且对目录无要求):roslaunch ORB_SLAM ExampleGroovyOrNewer.launch
  4.打开终端,进入Example.bag(测试数据集rosbag)的父目录,执行命令:rosbag play --pause Example.bag(执行图片发布程序,执行后,按s单步运行,按space停止)


多版本OpenCV管理:OpenCV2.4.9+OpenCV3.1.0
  查看当前工作环境的OpenCV版本:pkg-config --modversion opencv
  下面介绍默认安装了OpenCV3.1.0的情况下,再去安装OpenCV2.4.9
  默认安装的OpenCV位置在 /usr/local/include 目录下,再安装OpenCV2.4.9时自定义安装在 /usr/local/open2.4.9 目录下。
   1.官网下载并解压OpenCV2.4.9 http://opencv.org/
   2.进入OpenCV目录(属于CMake工程),执行以下命令编译与安装:
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.9 ..
    make
    sudo make install
   3.修改配置文件,使系统默认OpenCV版本从3.1.0切换至2.4.9(修改.bashrc文件来设置PKG_ CONFIG_PATH与LD_LIBRARY_PATH)
    sudo gedit ~/.bashrc
    export PKG_CONFIG_PATH=/usr/local/opencv2.4.9/lib/pkgconfig
    export LD_LIBRARY_PATH=/usr/local/opencv2.4.9/lib
    source ~/.bashrc (或者直接使用gedit的保存)
   4.最后在工程中用的OpenCV2.4.9时,需要在CMakeList.txt文件指定opencv的目录,执行命令:
    set (OpenCV_DIR /usr/local/opencv2.4.9/share/OpenCV)
    注意:该命令的位置需要在project(name)之前。
   5.若想切换回OpenCV3.1.0,则需要把第3步中的配置命令换成相应的OpenCV目录:
    sudo gedit ~/.bashrc
    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    export LD_LIBRARY_PATH=/usr/local/lib
    source ~/.bashrc (或者直接使用gedit的保存)

关于ROS的一些便捷操作
  在每次打开终端时都需要先运行这条命令后才能运行ROS相关的命令:source /opt/ros/indigo/setup.bash
  在每次打开终端时都需要添加工作空间到ROS路径:source ~/indigo_workspace/setup.bash (indigo_workspace为自己创建的ROS工作空间)
  或者为了方便,可在.bashrc文件最后添加上述两条命令。
  (.bashrc是主文件夹下的隐藏文件,打开命令:sudo gedit ~/.bashrc)

以上是关于ORB-SLAM(单目版本)编译与运行的主要内容,如果未能解决你的问题,请参考以下文章

怎么在ubuntu下装ORB-SLAM2,并用单目摄像头实时跑起来

ORB-SLAM2初步(源码逻辑分析)

ORB-SLAM2单目初始化过程

ORB-SLAM2在Ubuntu20上配合ROS编译运行

ORB-SLAM3技术详解简介与论文解读

ORB-SLAM3技术详解简介与论文解读