要编译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例程的更多相关文章

  1. 沈逸老师ubuntu速学笔记(2)-- ubuntu16.04下 apache2.4和php7结合编译安装,并安裝PDOmysql扩展

    1.编译安装apache2.4.20 第一步: ./configure --prefix=/usr/local/httpd --enable-so 第二步: make 第三步: sudo make i ...

  2. ubuntu16.04下笔记本自带摄像头编译运行PTAM

    ubuntu16.04下笔记本自带摄像头编译运行PTAM 转载请注明链接:https://i.cnblogs.com/EditPosts.aspx?postid=9014147 个人邮箱:feifan ...

  3. Linux:Ubuntu16.04下创建Wifi热点

    Linux:Ubuntu16.04下创建Wifi热点 说明: 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章转载自编程人生 具体步骤如下: 1.  ...

  4. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)

    由于用的新版本系统,和旧的稍有差别,在网上搜了很多相关资料,搞了三天终于搞好在Ubuntu16.04下的部署,接下来就详细写写步骤以及其中遇到的问题.前提是安装有虚拟环境pyenv+virtualen ...

  5. Ubuntu16.04下安装数据库oracle客户端

    在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...

  6. 【原创】Octovis在Ubuntu16.04下运行出现core dump的解决方案

    本人SLAM研究新手,使用系统为Ubuntu16.04.本文原址:http://www.cnblogs.com/hitlrk/p/6667253.html 在学习SLAM的过程中,使用Octomap进 ...

  7. Ubuntu16.04下安装redis

    Ubuntu16.04下安装redis 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6: sudo wget http://download.redis.io/release ...

  8. Ubuntu16.04下Office替代品Office Online

    Ubuntu16.04下Office替代品 Ubuntu16.04下的office Libreoffice 这个是Ubuntu自带的Office,总是存在各种问题,如果用来阅读还是不错的,但是编辑就不 ...

  9. Linux入门(13)——Ubuntu16.04下将图片和pdf互转

    Ubuntu16.04下将图片和pdf互转 将图片转为PDF: convert 图片 PDF convert pic.jpg pic.pdf 将PDF转为图片: convert PDF 图片 conv ...

随机推荐

  1. 用 #include <filename.h> 格式来引用标准库的头文件

    用 #include <filename.h> 格式来引用标准库的头文件(编译器将从 标准库目录开始搜索). #include <iostream> /* run this p ...

  2. 查看Centos系统最近一次启动时间和运行时间

    1.uptime命令 [spark@Master Log_Data]$ uptime 09:18:01 up 20:17,  1 user,  load average: 0.13, 0.12, 0. ...

  3. Android v4包中的 SwipeRefreshLayout 官方的下拉刷新组件

    SwipeRefreshLayout在v4包下,相应的v4Demo中也有相应的样例.假设没有请下载最新support-v4 SwipeRefreshLayout 仅仅能有一个直接子View,可能是一个 ...

  4. db2 over()

    说起 DB2 在线分析处理,可以用很好很强大来形容.这项功能特别适用于各种统计查询,这些查询用通常的SQL很难实现,或者根本就无发实现.首先,我们从一个简单的例子开始,来一步一步揭开它神秘的面纱,请看 ...

  5. chrome浏览器开发者工具使用教程[转]

    转自:http://www.cr173.com/html/16930_1.html 更多资源:https://developers.google.com/chrome-developer-tools/ ...

  6. 根据前面的FtpUtil写一个demo

    说说现在开发中一般都是对象化,对于配置文件也不例外. 1.FTPConfig 配置类 /*** * * @author  * */public class FTPConfig { private St ...

  7. CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  8. View的setTag()与getTag()方法使用

    通常我们是用findViewById()方法来取得我们要使用的View控件,不过除了这一种方法之处 ,我们还可以用View中的setTag(Onbect)给View添加一个格外的数据,再用getTag ...

  9. ARM漏洞

    Google安全团队Project Zero公布了多个高危漏洞,称这些漏洞几乎影响到了市面上所有的微处理器,AMD.ARM还是英特尔的处理器都难以幸免,围绕这些处理器打造的操作系统和硬件设备也会受到影 ...

  10. shell、cmd、dos和脚本语言杂谈(转)

    问题一:DOS与windows中cmd区别   在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作. 操作系统可以分成核心(kernel)和Shell(外壳)两部 ...