【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例

Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例

    • ORBSLAM2安装配置
      • 安装编译eigen3.2
      • 安装配置opencv
      • 安装配置pangolin
      • 安装配置ORB_SLAM2
    • 运行单目测试实例
      • 遇到的问题及解决

软件 版本
Ubuntu 16.04LTS
ros kinetic
opencv 3.4.9
pangolin 2.8.12
eigen 3.2
ORB_SLAM 2.8

ORBSLAM2安装配置

一般g++、gcc、cmake、git这些依赖项应该都是安装过的吧,如果不确定就运行sudo apt-get install +名字进行安装。

安装编译eigen3.2

从http://eigen.tuxfamily.org/index.php?title=Main_Page下载源码包,然后解压源码包,并进入目录

mkdir build
cd ./build
cmake ..
make
sudo make install 

还有就是采用命令安装

sudo apt-get install libeigen3-dev

eigen的文件一般在/usr/include/eigen3/目录下,可以使用下面的 命令查看

sudo updatedb
locate eigen3

安装配置opencv

从opencv官网下载opencv,(我是从window上下载了之后再拖到Ubuntu下面的,这样快一些)然后解压到ROS工作空间下的src文件夹下
首先安装依赖包

sudo apt-get install build-essential -y
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y

然后解压到ROS工作空间下的src文件夹下,就可以在该目录下看到opencv文件夹
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第1张图片
然后进入opencv文件夹,新建一个build文件夹,进入build文件夹,右键,在终端中打开,运行命令

cd ~/catkin_ws/src
cd ./opencv
mkdir build
cd ./build
cmake -D CMAKE_BUILD_TYPE=Release -D
make
sudo make install

【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第2张图片
然后使用命令进入/etc/bash.bashrc文件

sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH

将下面的文字添加的末尾添加到末尾,保存退出
在这里插入图片描述

安装配置pangolin

安装之前要先安装依赖项:

sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y

然后就可以安装pangolin了,使用下面命令进行安装

cd ~/catkin_ws/
git clone https://github.com/stevenlovegrove/Pangolin
cd Pangolin
mkdir build
cd ./build
cmake -DCPP11_NO_BOOSR=1 ..
make
sudo make install

安装配置ORB_SLAM2

sudo apt-get install libboost-all-dev libblas-dev liblapack-dev
cd ~/catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git

在这里插入图片描述
使用命令进入~/.bashrc文件,添加下面的语句,然后保存退出,使用source使配置生效

sudo gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
sodo source ~/.bashrc

【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第3张图片
然后就可以进行编译了,使用下面的命令进行编译,我的电脑性能不高,所以我将build.sh和build_ros.sh文件中的make -j全部换为了make,再执行的编译

cd ~/catkin_ws/src/ORB_SLAM2/
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
./build_ros.sh

【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第4张图片
只要是没有报错,基本都是配置完成了的,所以现在就可以进行测试了。
当然,这些安装配置完成后,要进入~/catkin_ws/目录进行编译,才能生效

cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash

运行单目测试实例

从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载数据集(我下载的是第一个数据集)
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第5张图片
下载之后,将文件解压,然后放到相应的位置,最好在ORB_SLAM2文件夹下新建一个专门存储数据集的文件夹,然后将数据集解压到该文件夹下,之后会用到这个路径。
使用下面的命令运行TUM1的数据集测试ORB_SLAM2环境是否搭建完成

cd ~/catkin_ws/src/ORB_SLAM2/
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

data/rgbd_dataset_freiburg1_xyz是我下载的数据集所在的位置,当然这是在ORB_SLAM2文件夹下。
运行效果:

然后就可以测试用自己的摄像头来实时显示图像构建地图
首先将目录下的ros_mono.cc文件中的camera改为自己设置的camera名称,一般为usb_cam【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第6张图片
运行roscore命令开启ROS系统
进入文件系统,ORB_SLAM2文件夹下,右键,在终端中打开,然后运行下面的命令

roscore
cd ~/catkin_ws/src/ORB_SLAM2/
rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml 

点击虚拟机,下面的可移动设备,连接电脑的的摄像头
如果没有下载usb_cam的可以根据我参考博客的第一个里面的usb_cam安装进行下载编译.
总的命令如下:

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
cd usb_cam
mkdir build
cd build
cmake ..
make

在ORB_SLAM2文件夹下新建一个usb_cam_node.launch文件,内容如下:


  
    
    
    
    
    
    
    
  

也可以使用默认的usb_cam-test.launch文件
video0是一般的,可以根据自己的情况进行更改,使用/dev/video*可以查看摄像头的名称是0还是1,自行更改
新建一个终端,运行命令开启摄像头

rosrun usb_cam usb_cam_node

在这里插入图片描述
如果没有开启摄像机,就会显示
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第7张图片
看到有图像显示的时候,抱着自己的笔记本/手机,缓慢的移动,
注意一定要缓慢移动,如果你运动太快的话,右边的map viewer是不会显示图像运动轨迹的,而且即使你有了运动轨迹,运动过快的话,就不会再提取特征点,简而言之就是右边的图像不会发生变化了
运行效果:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第8张图片

遇到的问题及解决

【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第9张图片
问题解决参考:https://github.com/raulmur/ORB_SLAM2/issues/535
在ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt文件中加入-lboost_system
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第10张图片问题解决,编译成功:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第11张图片
错误:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第12张图片
这个是因为在src文件下,有不是功能包的文件,我之前是将pangolin文件夹放在了这个目录下,所以编译不能用catkin_make,要用catkin_make_isolated,我觉得这样不方便,我就将pangolin文件夹移了位置,放在了~/catkin_ws/目录下,使用catkin_make就不报错了。
ORB_SLAM2编译时报错:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第13张图片
这是因为编译时内存不够,可以先将ORB_SLAM2文件夹下的build.sh和build_ros.sh文件中的make -j都改为make,然后试着编译一下,如果还是不行,就启用交换空间或交换文件(我启用交换文件后,就运行的比较顺畅了,也没报错了)参考:Linux开启swap空间.

运行自己的相机的时候出现问题:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第14张图片
我这个是运行的uvc_camera相机,之后我解决不了这个问题,我就换成了usb_cam相机,就没有报这个错了
usb_cam和Mono一起运行出错:
【ORB_SLAM2基础学习】Ubuntu16.04下ORB_SLAM2安装与配置及运行单目测试实例_第15张图片
是因为有一个终端之前运行了打开usb_cam的命令,但是停止命令了之后,没有关闭这个终端,usb_cam没有完全关闭,所以要关闭其他打开过相机的终端
参考博客:https://blog.csdn.net/radiantjeral/article/details/82193370
https://blog.csdn.net/learning_tortosie/article/details/79881165
https://blog.csdn.net/u014709760/article/details/85253525

如有错误请指正!

你可能感兴趣的:(嵌入式系统开发与应用)