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特征。
*最好保持匀速运动,保持当前帧与上一帧有足够数量匹配的特征点,否则跟踪失败,退回到之前经过的场景,进行重定位。
最后输出相机的运动轨迹与周围环境的稀疏地图。右图中绿线表示相机运动轨迹,蓝色方框表示相机运动过程中的空间位置(关键帧),红黑点表示环境的稀疏地图,红点为当前路标,黑点为历史路标。
ORB_SLAM2运行TUM数据和实时数据相关推荐
- 流式数据、批式数据、实时数据、历史数据的区别
1.流式数据.批式数据.实时数据.历史数据的区别: 根据数据处理的时效性,大数据处理系统可分为批式(batch)大数据和流式(streaming)大数据两类. 其中,批式大数据又被称为历史大数据,流式 ...
- 实时监控后台数据 vue_实时数据监控,快速掌握B站爆款视频热度走向
飞瓜数据B站版的数据监控功能提供对B站UP主监控功能,实时掌握UP主视频热度走向和投放效果. 通过监控输入B站视频链接,设定24/48时长开始对其监控.监控开始后在监控报告中查看对应视频的数据曲线变化 ...
- 百分点“数据隧道”玩转大数据平台实时数据复制
实时数据复制技术在银行.电信.保险.政务和电商等领域应用非常广泛. 比如银行领域的收单业务涉及收单行.银行卡组织及发卡行的数据同步.收单行的数据需要传输到银行卡组织,再由银行卡组织传输给发卡行. 如果 ...
- ORB_SLAM2 运行TUM RGBD数据集过程记录
一. 编译代码 这里是用ubuntu20.04,opencv4安装orbslam2的一点记录.报错信息经过搜索找到了对应的解决办法,在这里做一个笔记 报错1:FATAL_ERROR "Ope ...
- 美团酒旅实时数据规则引擎应用实践
背景 美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集.挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定程度上提高转化率.但T+1本身的延 ...
- 【数仓】离线和实时数据开发-《大数据之路》读书笔记
今天更新<大数据之路>第 4 章和第 5 章,离线数据开发以及实时技术.关注公众号回复 802 获取 pdf.其他章节更新中.可以点击这里查看其他章节. 前面的文章讲述了日志文件和 ...
- 阿里1688实时数据工程实践
导读:在天猫.淘宝网购过程中,商品的推荐与广告的前端展示是怎样的?两者的底层数据服务又是怎样构建的?今天跟大家讲述面向阿里1688业务的实时数据工程实践. 本次分享主要分为三部分:首先讲解实时数据工程 ...
- 实时数据产品实践——美团大交通战场沙盘
背景 大数据时代,数据的重要性不言而喻,尤其对于互联网公司,随着业务的快速变化,商业模式的不断创新.用户体验个性化.实时化需求日益突出,海量数据实时处理在商业方面的需求越来越大.如何通过数据快速分析出 ...
- 阿里巴巴实时数据公共层助力双11媒体直播
作者: 来源:CNET科技资讯网 时间:2014-11-21 15:45:25 关键字:阿里巴巴 实时数据 今年的双11,相信大家对上面央视新闻图片中的数字大屏不会陌生了,除了媒体之外,在阿里巴巴西溪 ...
最新文章
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
- 判断vc2005运行库是否以已安装
- jTable保存到mysql_怎么把从数据库里的数据输到JTABLE里面
- 遍历 List 之效率
- python pip下载安装教程_Python下的常用下载安装工具pip的安装方法
- 中国网建SMS短信接口调用(java发送短信)
- JavaEE基础(05):过滤器、监听器、拦截器,应用详解
- VScode我的setting.json设置,和搜狗输入法配置
- 【java笔记】自定义异常
- 两端“弱智”的HTML代码
- numpy中dot, multiply, *区别
- 会计的思考(37):“弱水三千,只取一瓢饮”--业务人员的财务意识
- asp二进制mysql_asP 读取二进制数据库
- 人工智能数学基础--导数2:高阶导数及莱布尼茨(Leibniz)公式
- 不要再被误导了,64位X86 CPU是没有64位寻址能力的!
- Github项目精选:2021年6月优秀项目推荐
- 竖流式沉淀池三角堰计算_竖流式沉淀池设计计算
- git cherry-pick --strategy=recursive -X theirs
- 一种二值图像封闭孔洞的高效填充算法
- 青灯教育python视频教程_PHD的生涯