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特征。

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

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

ORB_SLAM2运行TUM数据和实时数据相关推荐

  1. 流式数据、批式数据、实时数据、历史数据的区别

    1.流式数据.批式数据.实时数据.历史数据的区别: 根据数据处理的时效性,大数据处理系统可分为批式(batch)大数据和流式(streaming)大数据两类. 其中,批式大数据又被称为历史大数据,流式 ...

  2. 实时监控后台数据 vue_实时数据监控,快速掌握B站爆款视频热度走向

    飞瓜数据B站版的数据监控功能提供对B站UP主监控功能,实时掌握UP主视频热度走向和投放效果. 通过监控输入B站视频链接,设定24/48时长开始对其监控.监控开始后在监控报告中查看对应视频的数据曲线变化 ...

  3. 百分点“数据隧道”玩转大数据平台实时数据复制

    实时数据复制技术在银行.电信.保险.政务和电商等领域应用非常广泛. 比如银行领域的收单业务涉及收单行.银行卡组织及发卡行的数据同步.收单行的数据需要传输到银行卡组织,再由银行卡组织传输给发卡行. 如果 ...

  4. ORB_SLAM2 运行TUM RGBD数据集过程记录

    一. 编译代码 这里是用ubuntu20.04,opencv4安装orbslam2的一点记录.报错信息经过搜索找到了对应的解决办法,在这里做一个笔记 报错1:FATAL_ERROR "Ope ...

  5. 美团酒旅实时数据规则引擎应用实践

    背景 美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集.挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定程度上提高转化率.但T+1本身的延 ...

  6. 【数仓】离线和实时数据开发-《大数据之路》读书笔记

      今天更新<大数据之路>第 4 章和第 5 章,离线数据开发以及实时技术.关注公众号回复 802 获取 pdf.其他章节更新中.可以点击这里查看其他章节.   前面的文章讲述了日志文件和 ...

  7. 阿里1688实时数据工程实践

    导读:在天猫.淘宝网购过程中,商品的推荐与广告的前端展示是怎样的?两者的底层数据服务又是怎样构建的?今天跟大家讲述面向阿里1688业务的实时数据工程实践. 本次分享主要分为三部分:首先讲解实时数据工程 ...

  8. 实时数据产品实践——美团大交通战场沙盘

    背景 大数据时代,数据的重要性不言而喻,尤其对于互联网公司,随着业务的快速变化,商业模式的不断创新.用户体验个性化.实时化需求日益突出,海量数据实时处理在商业方面的需求越来越大.如何通过数据快速分析出 ...

  9. 阿里巴巴实时数据公共层助力双11媒体直播

    作者: 来源:CNET科技资讯网 时间:2014-11-21 15:45:25 关键字:阿里巴巴 实时数据 今年的双11,相信大家对上面央视新闻图片中的数字大屏不会陌生了,除了媒体之外,在阿里巴巴西溪 ...

最新文章

  1. Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
  2. 判断vc2005运行库是否以已安装
  3. jTable保存到mysql_怎么把从数据库里的数据输到JTABLE里面
  4. 遍历 List 之效率
  5. python pip下载安装教程_Python下的常用下载安装工具pip的安装方法
  6. 中国网建SMS短信接口调用(java发送短信)
  7. JavaEE基础(05):过滤器、监听器、拦截器,应用详解
  8. VScode我的setting.json设置,和搜狗输入法配置
  9. 【java笔记】自定义异常
  10. 两端“弱智”的HTML代码
  11. numpy中dot, multiply, *区别
  12. 会计的思考(37):“弱水三千,只取一瓢饮”--业务人员的财务意识
  13. asp二进制mysql_asP 读取二进制数据库
  14. 人工智能数学基础--导数2:高阶导数及莱布尼茨(Leibniz)公式
  15. 不要再被误导了,64位X86 CPU是没有64位寻址能力的!
  16. Github项目精选:2021年6月优秀项目推荐
  17. 竖流式沉淀池三角堰计算_竖流式沉淀池设计计算
  18. git cherry-pick --strategy=recursive -X theirs
  19. 一种二值图像封闭孔洞的高效填充算法
  20. 青灯教育python视频教程_PHD的生涯

热门文章

  1. 生成截断所有表的sql语句
  2. linux 启动流程与文件系统管理
  3. linux的iptable开启命令,linux防火墙查看状态firewall、iptable
  4. 菜鸟 Linux系统学习1简介 安装 云服务器 启动过程
  5. 信息安全—密码学信息熵信息理论基础—熵的概念(熵、联合熵、条件熵、平均互信息)
  6. hooks-riverpod 使用
  7. C语言学习之路-由浅入深(快速掌握c基础)
  8. C语言基础之统计数字
  9. 微信小程序实现车牌号录入
  10. RT-Thread柿饼控件(5)-- ProgressBar