环境:Ubuntu16.04+ROS Kinetic+USB单目摄像头
虽然ORB SLAM2的官方说明中表示没有ROS也可以编译运行,但要实时的跑ORB SLAM2还是需要ROS平台的,所以之前没有把ORB SLAM2安装在ROS工作区内的应该是要删除重装了…

参考博客

1.ROS Kinetic安装:http://www.cnblogs.com/liu-fa/p/5779206.html
2.ROS中使用USB摄像头跑ORB SLAM2:http://blog.csdn.net/goding_learning/article/details/52950993
3.ORB SLAM2 ROS实例 单目摄像头:http://blog.csdn.net/xmy306538517/article/details/59501718

ROS Kinetic安装

由于我使用的Ubuntu版本为16.04,所以选择安装ROS Kinetic。
1.软件中心配置
一般都是配置好的,需要保证"restricted", “universe,” 和 "multiverse."前打勾。
2.添加源并设置密钥

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

3.安装ROS

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
apt-cache search ros-kinetic

4.初始化ROS和环境变量

sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

5.安装常用插件

sudo apt-get install python-rosinstall

之后注意在安装其他ROS插件时记得把ros-×××中的×××替换成kinetic,如下:

sudo apt-get install ros-kinetic-...

6.测试ROS

roscore

启动ROS环境,如果显示出started core service [/rosout] ,即为安装成功,如下图:

创建ROS工作区

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash

usb_cam安装

注意要安装在工作区的src文件夹下。
1.下载usb_cam源码并配置环境

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash

2.编译usb_cam

cd usb_cam
mkdir build
cd build
cmake ..
make

3.测试usb摄像头
(1)打开新的终端,运行roscore

roscore

(2)回到原终端,先进入launch文件夹,再运行usb_cam中的launch文件,如果可以成功运行看到图像则安装成功。

cd launch
roslaunch usb_cam usb_cam-test.launch


该usb_cam-test.launch是usb_cam中自带的launch文件,打开之后内容如下:

<launch><node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" ><param name="video_device" value="/dev/video2" /><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>

其中video_device的默认设备为video0,可以根据情况更改,我电脑上的usb摄像头为video2,所以launch文件中被我更改成了video2。
如果不了解自己的usb摄像头为video几,可以运行如下命令查看:

ls /dev/video*

ORB SLAM2安装##

同样安装在工作区下的src文件夹中。
由于之前已经装过一次ORB SLAM2,所以需要的库都已经配置好了,这里直接下载编译。

cd catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

进入catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src,将ros_mono.cc 中的这行代码改成如下形式:

ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1,  &ImageGrabber::GrabImage,&igb);

其中的"/usb_cam/image_raw"为usb_cam打开launch文件后显示画面的窗口标题,如果不确定可以重新查看一下再更改。
返回catkin_ws/src/ORB_SLAM

cd ~
cd catkin_ws/src/ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh

如果后两句命令运行出错,可能是路径问题,需要把包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH的环境中。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

运行ORB SLAM2

1.打开第一个终端,运行roscore

roscore

2.打开第二个终端,运行usb_cam

cd catkin_ws/src/usb_cam/launch
roslaunch usb_cam usb_cam-test.launch

3.打开第三个终端运行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工具箱。

成功运行的结果如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYVjTT3d-1572752022985)(https://img-blog.csdn.net/20170721182625986?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWlsZWVuTnV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

Ubuntu下使用单目相机运行ORB SLAM2相关推荐

  1. Ubuntu20.04 ROS读取basler相机图像步骤。MATLAB2021b标定basler单目相机

    运行环境:Ubuntu20.04(64-Bit) ROS版本:Noetic 网卡型号:Realtek RTL 8156外置网卡 相机型号:acA 1920-25gc (GigE接口) 驱动版本:pyl ...

  2. 基于单目相机的2D地图构建

    第一章 引言 1.1 研究背景 同时定位和建图(SLAM)是机器人和自主导航中的一个重要领域.它是指机器人在未知环境中移动并使用其传感器和里程计信息构建环境地图并同时估计其在此地图中位置的过程.SLA ...

  3. python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)

    学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...

  4. Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行

    Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行 1.运行配置过程中参考链接如下: 1.配置orb_slam2环境 参考链接http ...

  5. opencv 单目相机pnp测距(Cpp)

    概述 单目相机pnp测距是通过单目相机拍摄的一张2d图片,来测量图片中某物与相机的距离. 需要知道被测物的实际尺寸 测距前需要先相机标定,需要使用哪个相机进行测距就标定哪个.一旦换成了其他相机, 就要 ...

  6. 实践篇 | 机器人单目相机测距的实验

    众志成城 抗击肺炎 如何预防新型冠状病毒肺炎? 1 保持手卫生.咳嗽.饭前便后.接触或者处理动物粪便后,要用流水洗手,或者使用含有酒精成分的免洗洗手液. 2 保持室内空气流畅.避免到封闭.空气不流通的 ...

  7. 【RoboMaster】我是这样搞定第一次单目相机测距的

    之前在做一个单目测距的小项目,大概需要就是用单目相机,对一个特定的目标进行识别并测算相机与该目标的距离.所以便去网上找了一堆教程,这里给大家总结一下,希望给小白们一个参考. 首先是基本需求了: ope ...

  8. SLAM学习 | 单目相机标定(附代码实测可用)

    SLAM学习 | 单目相机标定(附代码实测可用) 1 针孔相机模型 2 张正友标定法 3 VS2013下配置openCV 4 标定过程与结果 5 经验总结与注意事项 概要: 这篇文章介绍如何解决做SL ...

  9. 我是这样搞定第一次单目相机测距的

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 之前在做一个单目测距的小项目,大概需要就是用单目相机,对一个特定的 ...

最新文章

  1. Ubuntu12.04下在Android4.0.4源码下载及其编译过程(转载)
  2. h5课件制作_一个好的h5交互课件该怎么制作
  3. c/c++在windows下获取时间和计算时间差的几种方法总结
  4. cbow word2vec 损失_Skip-gram和CBOW知识点
  5. plsql连接oracle11g怎么配置,怎么使用plsql怎么连接64位Oracle11g数据库?
  6. 智能会议系统(30)---WebRTC学习之一:开篇
  7. 关于滚动相关的属性【转】
  8. hexo+github
  9. Vue项目部署到SpringBoot工程下
  10. 开场PPT动画怎么做炫酷
  11. 你真的了解“手机端的 C/S架构 向 B/S架构 迁移”吗
  12. 回声状态网络(echo state network,ESN)概述
  13. java毕业设计-java SSM超市积分兑换系统
  14. macOS下载【转载】
  15. 文字识别模型MNIST
  16. Java定时任务的实现
  17. 【日常实用】git的简单使用
  18. MySQL安装时的配置文件my.ini参考
  19. 中国手机号段分部情况
  20. 马斯克的星链计划原理是什么,快跟室友一起学习一手卫星链路设计吧

热门文章

  1. APP动效设计需要遵守哪些原则?
  2. 物联网 + 区块链系列(二):区块链赋能物联网设备
  3. 细数企业级移动应用应该具备的5大特征
  4. 天气预报+老婆私人订制服务
  5. Annovar 软件注释流程
  6. 互相关函数的实际应用
  7. Redis 分布式高可用终极指南
  8. 格物致知iOS类与对象
  9. 李宏毅机器学习(3,4)
  10. 机器学习(10)-随机森林案例(调参)之公共自行车使用量预测