ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程
要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2。
1.ROS的安装
我的电脑安装的是ubuntu16.04系统,所以我安装的是2016年的发行版本ROS_Kinetic,一般的话ROS的版本是一年一更新,和ubuntu的系统更新保持同步。如果你的系统是ubuntu14.04,你可以安装2014年的发行版本ROS_Indigo。
ROS_Kinetic在ubuntu16.04上的安装可以参考我的博客:点击链接地址
2.usb_cam在ROS中的编译
首先要新建一个ROS的工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
编译工作空间
cd ~/catkin_ws/
catkin_make
设置环境变量
source devel/setup.bash
如果你的终端为zsh,请用如下命令
source devel/setup.zsh
进入到catkin_ws/src目录下,下载usb_cam的源文件到此目录下
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
退出到catkin_ws目录下执行catkin_make命令进行编译并设置环境
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
可以测试是否配置成功
roscd usb_cam
没报错就说明安装成功了
3.编译ORB_SLAM2库
最简单的根据orb_slam2在github上面的项目地址就可以安装成功
项目地址:https://github.com/raulmur/ORB_SLAM2
详细的可以参考我的博文:点击链接地址
4.编译ROS例程
网上编译ROS例程的教程很多,但我还是觉得github上面提供的最方便
首先进入到你的ORB_SLAM2源代码目录下,然后执行命令
chmod +x build_ros.sh
./build_ros.sh
这个可能不会100%编译成功,但Mono和MonoAR可以编译成功,主要是ros_rgbd不能编译成功,出现报错,我就没管他。
编译完之后,记得在.bashrc后面加入:
source /home/zn/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/build/devel/setup.bash
5. 运行ROS中的Demo
以上步骤都成功后,我们就可以运行ros中的demo了
开始之前还有个地方需要改:

把ros_mono_ar.cc中的
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);
改为:
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
(看到没有,路径变了哟。因为我们的图片都是从/usb_cam/image_raw发送过来的)
然后再把Example编译一下~
这下可以开始了:
首先我们要启动ros内核,新开一个终端,执行
roscore
启动usb_cam摄像头节点,新开一个终端,执行
roslaunch usb_cam usb_cam.launch
启动 ORB_SLAM2 的 Mono 节点(单目)
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
PATH_TO_VOCABULARY是ORBvoc.txt文件路径,PATH_TO_SETTINGS_FILE是你的摄像机内参数文件路径
所以可以在第三个终端输入如下命令:
rosrun ORB_SLAM2 MonoAR /home/zn/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/zn/ORB_SLAM2/Examples/Monocular/TUM1.yaml
路径按照自己的电脑路径进行更改,TUM1.yaml是参数设置文件,主要是相机的内参,这个得自己标定。如果懒得标定,可以直接用TUM1.yaml,不影响程序的运行。


end......
参考博文:https://blog.csdn.net/u79501/article/details/68942174
http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/
ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程的更多相关文章
- 沈逸老师ubuntu速学笔记(2)-- ubuntu16.04下 apache2.4和php7结合编译安装,并安裝PDOmysql扩展
1.编译安装apache2.4.20 第一步: ./configure --prefix=/usr/local/httpd --enable-so 第二步: make 第三步: sudo make i ...
- ubuntu16.04下笔记本自带摄像头编译运行PTAM
ubuntu16.04下笔记本自带摄像头编译运行PTAM 转载请注明链接:https://i.cnblogs.com/EditPosts.aspx?postid=9014147 个人邮箱:feifan ...
- Linux:Ubuntu16.04下创建Wifi热点
Linux:Ubuntu16.04下创建Wifi热点 说明: 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章转载自编程人生 具体步骤如下: 1. ...
- Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)
由于用的新版本系统,和旧的稍有差别,在网上搜了很多相关资料,搞了三天终于搞好在Ubuntu16.04下的部署,接下来就详细写写步骤以及其中遇到的问题.前提是安装有虚拟环境pyenv+virtualen ...
- Ubuntu16.04下安装数据库oracle客户端
在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...
- 【原创】Octovis在Ubuntu16.04下运行出现core dump的解决方案
本人SLAM研究新手,使用系统为Ubuntu16.04.本文原址:http://www.cnblogs.com/hitlrk/p/6667253.html 在学习SLAM的过程中,使用Octomap进 ...
- Ubuntu16.04下安装redis
Ubuntu16.04下安装redis 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6: sudo wget http://download.redis.io/release ...
- Ubuntu16.04下Office替代品Office Online
Ubuntu16.04下Office替代品 Ubuntu16.04下的office Libreoffice 这个是Ubuntu自带的Office,总是存在各种问题,如果用来阅读还是不错的,但是编辑就不 ...
- Linux入门(13)——Ubuntu16.04下将图片和pdf互转
Ubuntu16.04下将图片和pdf互转 将图片转为PDF: convert 图片 PDF convert pic.jpg pic.pdf 将PDF转为图片: convert PDF 图片 conv ...
随机推荐
- ubuntu下使用VI编辑文件必知的常用命令
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)
作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...
- HGNC 数据库-人类基因组数据库
HGNC 全称为HUGO Gene Nomenclature Committee, 叫做 HUGO基因命名委员会,负责对人类基因组上包括蛋白编码基因, ncRNA基因,甲基因和其他基因在内的所有基因提 ...
- js中页面跳转(href)中文参数传输方式
编码: escape(参数); 解码: unescape(参数);
- iOS获取时间、日期
//获取当前时间 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init]autorelease]; [formatter setLoc ...
- C# SerialPortHelper类
using System; using System.IO.Ports; class SerialPortHelper { private long _receiveByteCount = 0, _s ...
- c#.net常用函数和方法集
1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.D ...
- mysql数据库binary log中的事件到底是什么?
需求描述: 最近看mysql备份恢复的时候,基于时间点恢复,提到了binary log中存的是"事件" 那么到底什么是事件呢 概念解释: binary log中存的是事件(even ...
- JAVA程序员应该看的15本书的电子版
转载▼ 转载自:http://blog.sina.com.cn/s/blog_8297f0d00100v5ew.html 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多, ...
- opencv-从图像旋转学习Mat数据訪问
先看一个简单的样例 代码: // ConsoleApplication3_6_23.cpp : Defines the entry point for the console application. ...