首先需要查找ORB_SLAM2 的安装与运行方式,这里不再介绍,百度就可得到大量教程,配置环境是相对复杂的过程,一定要保持耐心。这里贴出一个相对规范的教程:

写在前面:

ros版本和非ros版本都能在同一个文件夹下编译成功,我是个经常看到csdn的消息的人,希望大家遇到安装类型的错误可以给我留言,24小时内一般都会有回复。

首先就不讲怎样安装ros了,(点进去是ros的中文wiki,安装过程很详细),能在网上搜出大量的教程,我的开发环境时虚拟机Ubuntu16.04+ROS kinetic版本。

装ORB-SLAM2

创建ROS工程

  • 使用ROS创建workspace

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
mkdir ORB-SLAM2

  • 添加环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装必备软件

  • 安装git cmake

sudo apt-get install git cmake

  • 安装一些库

sudo apt-get install libblas-dev liblapack-dev

  • 安装Pangolin

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
sudo apt-get install build-essential
cd ~/catkin_ws/ORB-SLAM2
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin

  • 编译安装Pangolin

mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make

  • 安装OpenCV依赖

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

  • 下载OpenCV并解压到Ubuntu,然后进入OpenCV文件夹进行编译安装(其实你如果安装成功了kinetic版本的ros,opencv3.3的版本已经在你系统中了,不需要单独安装。)

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

  • 安装eigen库(注意 请下载3.2.10版本,如果用3.3.x版本可能会造成ORB-SLAM2编译失败,因为eigen3.3.4版本修改了文件目录结构)
  • 下载Eigen,进入到在解压后的Eigen文件夹(例如eigen-eigen-07105f7124f9)下

mkdir build
cd build
cmake ..
make
sudo make install

  • 下载ORB_SLAM2:

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

  • 编译安装

cd ORB_SLAM2
chmod +x build.sh
vim build.sh

把build.sh的make -j改成make(这是为了防止多线程编译出错,对于build_ros.sh文件也是同理,下面就不说了)

  • 运行build.sh

./build.sh

  • 注意坑1:如果在编译构建的过程中出现error:usleep()函数未定义的错误,要到报错误的代码文件里面加上(或者在头文件加也行),笔者加了下面的内容到很多个文件,比较省事的办法是自己写个头文件,把下面的内容复制过去,然后再报错的文件内,逐个添加你新建的头文件就行了:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
  • 修改环境变量(user就是用户的名字,把它改成你自己的路径名字,ORB-SLAM2/Examples/ROS所在的完整路径。)

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/(user)/catkin_ws/ORB-SLAM2/Examples/ROS

这个时候 打开~/.bashrc文件 最末端的时候应该是这个样子:

  • 编译安装ROS版本的ORB-SLAM2

cd ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh

  • 注意坑2:如果在编译构建的过程中出现关于boost库的错误,要到/Examples/ROS/ORB-SLAM2/CMakeLists.txt文件下修改 加上 -lboost_system
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
#加上这一句
-lboost_system
)
  • ORB-SLAM2测试数据集
    (1)下载测试数据集
    Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.
    (2)执行命令:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

在ROS中使用usb摄像头跑ORB SLAM2

  • 由于使用USB摄像头作为图像输入,需要将图像信息作为topic发送出去,ROS官网提供了usb_cam的package代码,从github上下usb_cam的代码,下载链接:https://github.com/bosch-ros-pkg/usb_cam

  • 安装ROS usb_cam源码

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make

  • 编译usb_cam

mkdir build
cd build
cmake ..
make

  • 测试一下usb摄像头
    首先开个新的终端,运行roscore(如果显示命令没有找到就说明的你没有source source /opt/ros/indigo/setup.bash)
    在运行该节点之前,需要先配置一下节点参数,打开src/usb_cam-develop/launch文件中的的launch文件,我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1,若想看usb摄像头是哪个端口号,可cd到根目录中的dev文件夹下查看。

ls /dev/video*
cd /home/pan/catkin_ws/src/usb_cam
cd launch
gedit usb_cam-test.launch

将其中的内容替换成(其中/dev/videoX要对应为usb摄像头)

<launch><node name="camera" pkg="usb_cam" type="usb_cam_node" output="screen" ><param name="video_device" value="/dev/video0" /><param name="image_width" value="640" /><param name="image_height" value="480" /><param name="pixel_format" value="yuyv" /><param name="camera_frame_id" value="camera" /><param name="io_method" value="mmap"/><remap from="/usb_cam/image_raw" to="/camera/image_raw" /></node><node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen"><remap from="image" to="/camera/image_raw"/><param name="autosize" value="true" /></node>
</launch>
  • 开三个终端,依次分别运行

roscore

roslaunch usb_cam usb_cam-test.launch

rosrun ORB_SLAM2 Mono /home/(user)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user)/catkin_ws/src/ORB_SLAM2/Examples/Monocular/MyCam.yaml

如果遇到你打开了摄像头,摄像头有数据,但是SLAM系统却提示你,Waiting for images。如下图所示。那是因为你没有在ros_mono.cc中把订阅的话题改成你usb相机或者自带相机发布的topic的名字,一般来说,改成usb_cam就行。修改地方在ros_mono.cc中的下面那个地方,如下图所示。

 

  • 运行时,首先是建图
    为了图像清晰,设置只选前两项。建图时尽量获得更多的特征点。

    初始化

    建图

    建图

  • 觉得生成地图OK之后,可以开启定位模式(把localization勾上)

    定位

部分内容转载自:
链接:https://www.jianshu.com/p/f39bf76cfc61

ORB_SLAM2 KITTI数据集测试相关推荐

  1. KITTI数据集测试 - 3 calib 相机参数

    在calib文件中,有sequence 00-21序列,包括calib.txt 和 times.txt文件. 在sequence calib.txt 中, P0: 7.188560000000e+02 ...

  2. 【MMDetection3D】环境搭建,使用PointPillers训练测试可视化KITTI数据集

    文章目录 前言 3D目标检测概述 KITTI数据集简介 MMDetection3D 环境搭建 数据集准备 训练 测试及可视化 绘制损失函数曲线 参考资料 前言 2D卷不动了,来卷3D,之后更多地工作会 ...

  3. 视觉SLAM——ORB-SLAM2运行tum数据集,kitti数据集,euroc数据集

    添加环境变量 echo "source ~/catkin_orb_slam2_ws/devel/setup.bash" >> ~/.bashrc source ~/.b ...

  4. 「Self-driving: KITTI」KITTI数据集简介

    背景 KITTI数据集建立前,前人的实验在米德尔伯里等既定基准上排名靠前的方法在从实验室转移到现实世界时表现低于平均水平. 除了向社区提供具现实世界数据以减少实验偏差,KITTI在补充现有基准的情况下 ...

  5. 毕设日志——在faster rcnn pytorch上训练KITTI数据集

    本次目标: 整理运行代码产生的内容 下载KITTI数据集和LSVH数据集 修改数据集样式为VOC2007 在新的数据集上训测 2019.4.13 一.准备工作 备份之前训练生成的文件models,ou ...

  6. 使用开源激光SLAM方案LIO-SAM运行KITTI数据集,如有用,请评论雷锋

    第一次写博客~ LIOSAM作为优秀的激光slam方案,当然想尝试着运行更多数据啦,然而没有发现类似的方法分享到底如何实现,在B站看到有伙伴发布了测试视频,但是仍然没有写出方法.所以我跑通了之后记录一 ...

  7. 【OpenPCDet】Kitti数据集下训练PointPillars并评估可视化

    文章目录 前言 一.安装OpenPCDet 1.OpenPCDet安装要求 2.安装环境 3.Clone OpenPCDet项目 4.运行以下的命令安装pcdet库 二.运行OpenPCDet 1.数 ...

  8. 【Mini KITTI】KITTI数据集简介 — Mini KITTI

    本文为博主原创文章,未经博主允许不得转载. 本文为专栏<python三维点云从基础到深度学习>系列文章,地址为"https://blog.csdn.net/suiyingy/ar ...

  9. 【KITTI】KITTI数据集简介(三) — 图像数据image_2

    KITTI数据集种共包含了4相机数据,2个灰度相机和2个彩色相机,其中image_2存储了左侧彩色相机采集的RGB图像数据(RGB).其他图像数据本次暂时不介绍,后续算法研究如果用到再进行补充. 相机 ...

最新文章

  1. etcd 笔记(09)— 基于 etcd 实现微服务的注册与发现
  2. 独家 | 手把手教你用Python的Prophet库进行时间序列预测
  3. android系统自带的Service原理与使用
  4. bzoj3959(LCT)
  5. 02 基本序列以及序列表示
  6. 数据结构一:链表(单向链表)
  7. 多商户商城源码_如何利用多商户B2B2C多商户商城系统后台组件玩转商城?
  8. 开启es6——搭建开发环境
  9. 面试Go语言开发?让这本书帮你感动面试官!
  10. 快排 递归与非递归实现 优化
  11. linux u盘 随身,教你安装CentOS到U盘,制作随身Linux系统
  12. 时间序列复杂性的度量—近似熵和样本熵
  13. 谈谈mysql的悲观和乐观锁 - 周伯通的麦田 - 博客园
  14. 2021_WSDM_Pre-Training Graph Neural Networks for Cold-Start Users and Items Representation
  15. 小程序开发学习一:开发语言解析
  16. 【CSS-定位和浮动】
  17. geodesic distance
  18. 使用spool导出数据
  19. 监听器和监听器过滤器常见应用GUl中理解
  20. windows10 vs2019 cl不是内部或外部命令,也不是可运行程序

热门文章

  1. 服务器数据库的简单维护,服务器数据库的简单维护
  2. fortran教程7:输入输出
  3. aspose word转pdf 中文乱码
  4. 【金万维】使用天联高级版登录用友U8+,进行凭证打印操作。
  5. 技能高考 计算机 试题,计算机技能高考模拟试题一
  6. 免费短信验证码SDK是一款由移动开发服务平台Mob(前身ShareSDK)正式推出“全球短信验证码解决方案”
  7. 我的世界服务器物品修改器,ReadyEditor全备编辑————基于箱子菜单的物品编辑器[1.14+]...
  8. 手机php文件怎么换成mp3,视频格式转换成mp3 手机视频转成mp3格式
  9. 致远OA破解思路,致远协同办公OA破解思路
  10. SVN的使用教程总结