ORB-SLAM2(3) ROS下实时跑ORB_SLAM2
Step1 : 运行内核
roscore
Step2 : 启动相机
cd catkin_ws/src/usb_cam/launch #进入usb_cam驱动的安装目录
roslaunch my_cam.launch
#roslaunch usb_cam usb_cam-test.launch
my_cam.launch文件
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video1" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
- 自己的路径,自己的launch文件名

Step3 : 运行orb_slam2
运行官方的
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
其中包含两个参数:
PATH_TO_VOCABULARY:视觉词典,一般可以直接使用catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt
PATH_TO_SETTINGS_FILE:摄像头内参,可以使用路径catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml,但需要将Asus.yaml中的参数改成自己使用摄像头标定后的参数,摄像头标定可以使用opencv或matlab工具箱。
运行自己的
#如果路径还没配置需要以下两行添加ROS环境
cd /home/hm/catkin_ws/src/ORB_SLAM2 #进入ORB_SLAM2的主目录
#source Examples/ROS/ORB_SLAM2/build/devel/setup.bash
cd Examples/ROS/
rosrun ORB_SLAM2 Mono ../../Vocabulary/ORBvoc.txt ../../my_camera.yaml #自己的相机标定文件
my_camera.yaml #自己的相机标定文件
image_width: 640
image_height: 480
camera_name: head_camera
camera_matrix:
rows: 3
cols: 3
data: [684.9063320280035, 0, 333.8552962590653, 0, 685.8214305739915, 258.3133970146105, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [0.08540487526140211, -0.4947463318653558, 0.002070145615834643, 1.739354152579926e-05, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [679.8218383789062, 0, 334.2231118845648, 0, 0, 686.0590209960938, 258.4570282812347, 0, 0, 0, 1, 0]
修改话题
usb_cam默认话题 为usb_cam/image_raw
ros订阅的图像默认为 image/image_raw
进到catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src 打开ros_mono.cc
将subscribe的话题改为/usb_cam/image_raw,将话题接上
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);

rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
重新编译ROS的example
cd ~/catkin_ws/src/ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh
重新编译工作空间
cd ~/catkin_ws
catkin_make
再来一次:
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
问题:
权限问题: 一直提示无法打开参数文件
解决方法: 直接将两个参数文件,复制到同目录下,还不行需要分别给权限
sudo chmod 777 Asus.yaml sudo chmod 777 ORBvoc.txt

最后出图:

ORB-SLAM2(3) ROS下实时跑ORB_SLAM2的更多相关文章
- ZED 相机 && ORB-SLAM2安装环境配置与ROS下的调试
注:1. 对某些地方进行了更新(红色标注),以方便进行配置. 2. ZED ROS Wrapper官方github已经更新,根据描述新的Wrapper可能已经不适用与Ros Indigo了,如果大家想 ...
- LSD-SLAM深入学习(1)-基本介绍与ros下的安装
前言 借鉴来自RGB-D数据处理的两种方法-基于特征与基于整体的,同样可以考虑整个图片的匹配,而不是只考虑特征点的…… 一般这种稠密的方法需要很大的计算量,DTAM: Dense tracking a ...
- ORB-SLAM2(2) ROS下配置和编译
1配置USB相机 1.1网友参考: http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E ...
- ORB SLAM2在Ubuntu 16.04上的运行配置
http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...
- ros下基于百度语音的,语音识别和语音合成
代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...
- ros下多机器人系统(1)
multi-robot system 经过两个多月的ros学习,对ros的认识有了比较深入的了解,本篇博客主要记录在ros下开发多机器人系统以及对ros更深入的开发.本篇博客是假定读者已经学习完了全部 ...
- Linux 下实时查看日志
Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...
- pl-svo在ROS下运行笔记
一.程序更改的思路(参考svo_ros的做法): 1.在ROS下将pl-svo链接成库需要更改相应的CMakeLists.txt文件,添加package.xml文件: 2.注册一个ROS节点使用svo ...
- orb slam2 双目摄像头
主要参考了http://blog.csdn.net/awww797877/article/details/51171099这篇文章,其中需要添加的是:export ROS_PACKAGE_PATH=$ ...
随机推荐
- [转]Angular项目目录结构详解
本文转自:https://blog.csdn.net/yuzhiqiang_1993/article/details/71191873 版权声明:本文为博主原创文章,转载请注明地址.如果文中有什么纰漏 ...
- VS中C#的快捷键
Ctrl+E,D: 格式化全部代码 Ctrl+E,C / Ctrl+K,C: 注释选定内容 Ctrl+E,U / Ctrl+K,U: 取消选定注释内容 Ctrl+E,S: 查看空白 Ctrl+E,W: ...
- C++注入记事本
#include <iostream>; using namespace std; #include <windows.h>; #include <tlhelp32.h& ...
- CSS学习笔记09 简单理解BFC
引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- JPA与EJB3的关系
JPA是基于Java持久化的解决方案,主要是为了解决ORM框架的差异,它的出现在某种程度上能够解决目前ORM框架之间不能够兼容的问题,对开发人员来说,能够更好的在JPA规范下进行系统开发. JPA全称 ...
- Spring Boot 1.5.* 升级 2.1 - 完善中
Spring Boot 原版本 1.5.12.RELEASE 新版本 2.1.0.RELEASE Spring Cloud 原版本 Edgware.SR3 新版本 Finchley.SR2 一.Act ...
- Android基础系列合集
四大组件 1.Service Android四大组件-Service Android-远程Service Service 动态更新 UI 2.Activity Android四大组件-Activity ...
- ArrayList 原码解析
基于java1.71.ArrayList 是基于数组实现的 通过源码 我们可以知道 ArrayList 提供了三种构造器用于实例化 /** * Constructs an empty list wit ...
- python之线程相关操作
1.线程: 一个进程可以有多个线程,共享一个进程的资源: 2.进程线程的区别: 进程是资源分配的最小单位,线程是程序执行的最小单位 3.python中线程模块threading, 提供的类: Thr ...
- Android 高德地图定位
创建Key 打开高德开发平台 → 我的应用 → 创建应用 → 创建新Key 说明: 1.发布版安全码获取:用自己的签名打包成apk安装软件,用SHA1工具查看 2.调试版安全码获取: 直接运行安装软件 ...