ORB_SLAM2运行TUM数据和实时数据

0.引用:

(1)https://www.cnblogs.com/ifly-zhhades/p/7305572.html

 (  2)https://www.imooc.com/article/details/id/29136

(3)https://www.cnblogs.com/kekeoutlook/p/7693129.html

 (  4)https://blog.csdn.net/zzu_seu/article/details/84866858

(5)ORB-SLAM2部署,编译错误问题解决方法ros_rgbd.cc.o: undefined reference to symbol_power的专栏-CSDN博客

1.查看电脑软硬件配置

(1)硬件

#获取cpu详细信息

$ cat /proc/cpuinfo

# 查看cpu是几核

$ cat /proc/cpuinfo |grep "cores"|uniq

# 查看cpu型号

$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

(2)软件

#查看当前操作系统发行版信息

$ cat /etc/issue

软件平台

$roscore

2. 步骤

(1)更新apt库

$ sudo apt-get update

(2)安装git

$ sudo apt-get install git

(3)安装cmake,用于程序编译

$ sudo apt-get install cmake

(4)安装pangolin作为可视化和用户界面

#安装依赖项

$ sudo apt-get install libglew-dev libpython2.7-dev

#从github上下载项目

$ git clone https://github.com/stevenlovegrove/Pangolin.git

#编译安装

$ cd Pangolin

$ mkdir build

$ cd build

$ cmake ..

报错

所使用的安装包https://github.com/stevenlovegrove/Pangolin.git有问题,改用旧版本安装包

$ git clone https://github.com/zzx2GH/Pangolin.git

重复上述编译过程

$ make

$ sudo make install

(5)安装Open CV,用于处理图像和特征,注意安装版本是否兼容,要求最低版本是2.4.3,安装版本为2.4.11

#安装依赖项

$ sudo apt-get install build-essential

$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc 1394-22-dev

在OpenCV官网http://opencv.org下载OpenCV2.4.11的source版本,解压到本地,编译安装

$ cd ~/opencv

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

#为防止编译时间较长,cpu性能较高使用make -jx, x表示线程(4核*2),以加速编译

$ make -j8

$ sudo make install

(6)安装Eigen3开源线性库,进行矩阵运算

$ sudo apt-get install libeigen3-dev

(7)安装DBoW2和g2o

DBoW2是一个开源C++库,用于索引图像并将其转换为单词表示形式;

g2o是一个开源C++框架,用于优化基于图的非线性误差函数;

这两个库在ORB-SLAM2的ThirdParty文件夹中,后续统一编译。

(8)安装ORB-SLAM2

#克隆仓库

$ git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

#编译ORB_SLAM2,DBoW2,g2o,并解压ORB词典

$ cd ORB_SLAM2

$ chmod +x build.sh

$ ./build.sh

编译过程中如果卡死,说明电脑cpu不行,就把build.sh文件中make -j换成make.

报错:

error: ‘usleep’ was not declared in this scope

在提示有错的文件system.cc、tracking.cc、Localmapping.cc、Loopclosing.cc、Viewer.cc、mono_euroc.cc、mono_kitti.cc、mono_tum.cc、rgbd_tum.cc、stereo_kitti.cc、stereo_euroc.cc

ROS中的viewerAR.cc的外部头文件引用加上#include <unistd.h>
再重新编译./build.sh

3. 单目数据库TUM

有TUM、KITTI、EuRoC三种数据集。其中TUM数据集在http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载对应序列,可以下载最简单序列“freiburg1_xyz”,解压到新建文件夹ORB_SLAM2/data中。该数据序列由kinect提供groundtruth.txt数据。包括depth文件夹、depth.txt、rgb文件夹、rgb.txt。

#运行./Examples/Monocular/mono_tum可执行文件

$ cd ORB_SLAM2

$ ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml Path_to_sequence_folder

其中,TUMX.yaml 与下载的序列freiburgx对应,本文为TUM1;Path_to_sequence_folder为数据序列freiburg1的存储路径。

ORB特征、环境稀疏地图、相机运动轨迹。

公开数据集还可以作为算法性能对比的评价标准。

4.借助ROS实时运行ORB_SLAM2

(1)安装ROS,Ubuntu16.04 安装Ros_zttsm的博客-CSDN博客

(2)摄像头数据读取与显示

#创建工作空间

$ mkdir -p ~/catkin_zttws/src

$ cd ~/catkin_zttws/src

#下载usb_cam包

$ git clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam

(usb_cam: A ROS Driver for V4L USB Camerashttps://gitee.com/ztt1996/usb_cam)

#编译工作空间

$ cd ..

$ catkin_make

$ source devel/setup.sh

插入摄像头连接线进usb2.0端口

#输入查询新设备接入命令

$ lsusb

显示Logitech,Inc.Webcam C930e

#在/计算机/dev文件下搜索video,从新增文件得到设备号

打开/home/ztt/catkin_zttws/src/usb_cam/launch/usb_cam-test.launch文件,设置摄像头对应设备号,一般video0表示电脑自带摄像头,外设依次递增。(本例子是无摄像头的台式机外接罗技单目摄像头,所以如果是带摄像头的笔记本外接罗技单目摄像头,应该为video1)

 <param name="video_device" value="/dev/video0" />

#在catkin_***ws下启动usb_cam节点,弹出显示窗口

$ roslaunch usb_cam usb_cam-test.launch

(3)将ORB_SLAM2文件夹移动到catkin_zttws/src下;将包含ORB_SLAM2/Examples/ROS路径添加到ROS_PACKAGE_PATH环境变量中,打开新终端

$sudo gedit ~/.bashrc

#在文件最后添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

source /home/ztt/catkin_zttws/devel/setup.bash

其中PATH为ORB_SLAM2项目路径/home/ztt/catkin_zttws/src

在终端执行命令

$ source ~/.bashrc

(4)编译ROS下的ORB_SLAM2

(4.1)修改话题

ORB-SLAM默认订阅的话题为/camera/image_raw,而usb_cam节点发布的话题为/usb_cam/image_raw,因此需要在/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc中修改订阅的话题。

  ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);


(4.2)因为(4.3)更改源文件,需要重新编译

#新终端

#重新编译ROS的example

$ cd ~/catkin_zttws/src/ORB_SLAM2

$ chmod +x build_ros.sh

$ ./build_ros.sh

如果报错CMakeFiles/RGBD.dir/build.make:216: recipe for target '../RGBD' failed

则$gedit ./Examples/ROS/ORB_SLAM2/CMakeLists.txt

添加一行-lboost_system

#重新编译工作空间

$ cd ~/catkin_zttws

$ catkin_make

(4.3)新终端运行内核

roscore

(4.4)新终端启动相机

$ cd catkin_ws

$ roslaunch usb_cam usb_cam-test.launch

(4.5)新终端运行/home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2/Mono可执行文件

#cd /home/ztt/catkin_zttws/src/ORB_SLAM2.2/Examples/ROS/ORB_SLAM2

# rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

其中PATH_TO_VOCABULARY:视觉词典,一般可直接使用../../../Vocabulary/ORBvoc.txt

PATH_TO_SETTINGS_FILE:摄像头内参,可以使用路径./Asus.yaml,但需要将Asus.yaml中的参数改成自己使用摄像头标定后的参数,摄像头标定可以使用opencv或matlab工具箱。

(4.6)运行提示打不开参数文件Asus.yaml,复制ORBvoc.txt放在与Asus.yaml相同目录下,并授权

$ sudo chmod 777 Asus.yaml

$ sudo chmod 777 ORBvoc.txt

再次运行

*为顺利初始化,虚选择纹理丰富场景,左右平移相机直至图像提出ORB特征。

*最好保持匀速运动,保持当前帧与上一帧有足够数量匹配的特征点,否则跟踪失败,退回到之前经过的场景,进行重定位。

最后输出相机的运动轨迹与周围环境的稀疏地图。右图中绿线表示相机运动轨迹,蓝色方框表示相机运动过程中的空间位置(关键帧),红黑点表示环境的稀疏地图,红点为当前路标,黑点为历史路标。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值