介绍:

最近在学习slam,想将其应用在ros平台上,故跑了orb-slam2的代码。这里粗略总结一下"ROS下使用电脑相机运行ORB_Slam2"的过程。本人菜鸟一枚,如有问题欢迎交流。

创建ros工作空间

参考博文:https://blog.csdn.net/qinqinxiansheng/article/details/106768491

编译usb摄像头驱动

网上有很多博文:
https://www.jianshu.com/p/ec0ebf7fef22
配置好后,在终端运行

source devel/setup.bash
roslaunch usb_cam usb_cam-test.launch

即可打开摄像头:其中/usb_can/image_raw即为ros节点发布的话题消息

下载 orb_slam源码

(github链接https://github.com/raulmur/ORB_SLAM2)
下载orb_slam2的源码,并按照提示配置相关环境,包括Pangolin,opencv,eigen,g2o
(这里因为想用ros机制,所以安装了ros).这里只需要配置好环境就行,不需要编译,后续会统一编译。

编译orbslam

1.将下载好的orb-slam源码RB_SLAM2-master放在工作空间的src文件夹下(/home/qin/catkin_ws/src

2.在ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/src文件夹找到ros_mono.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);

3.添加相机参数文件
在ORB_SLAM2-master文件夹下编写一个myslam.yaml文件用于存放相机参数,只为运行程序的话也可以用其他相机的参数:

%YAML:1.0# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 500.0
Camera.fy: 500.0
Camera.cx: 320.0
Camera.cy: 240.0Camera.k1: 0
Camera.k2: 0
Camera.p1: 0
Camera.p2: 0
Camera.k3: 0# Camera frames per second
Camera.fps: 30.0# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 0# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000# ORB Extractor: Scale factor between levels in the scale pyramid
ORBextractor.scaleFactor: 1.2# ORB Extractor: Number of levels in the scale pyramid
ORBextractor.nLevels: 8ORBextractor.iniThFAST: 10
ORBextractor.minThFAST: 5Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500

4.在主文件夹下,Ctrl+h,可以看到隐藏的文件,在.bashrc文档末尾添加两行:(根据自己路径更改)

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/qin/catkin_ws/src/ORB_SLAM2-master/Examples/ROS
source ~/catkin_ws/devel/setup.bash

然后在终端运行

source ~/.bashrc

5.修改Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件
在相应位置添加:一行 -lboost_system

6.编译ORB_Slam2
打开终端,运行

cd catkin_ws/src/ORB_SLAM2-master
mkdir build
cd build
cmake ..
make

7.编译ROS的example

cd ~/catkin_ws/src/ORB_SLAM2-master/Example/ROS/ORB_SLAM2-master
mkdir build
cd build
cmake ..
make

运行测试

1.打开rosmaster
打开终端,输入

roscore

2.打开相机
打开新的终端,输入

roslaunch usb_cam usb_cam-test.launch

3.运行orbslam
新打开终端,运行(路径需要根据实际进行修改)

rosrun ORB_SLAM2 Mono /home/qin/catkin_ws/src/ORB_SLAM2-master/Vocabulary/ORBvoc.txt /home/qin/catkin_ws/src/ORB_SLAM2-master/myslam.yaml
/home/qin/catkin_ws/src/ORB_SLAM2-master

这里献上博主的建模结果:

ROS入门:ROS下使用电脑相机运行ORB_Slam2相关推荐

  1. SLAM导航机器人零基础实战系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览...

    SLAM导航机器人零基础实战系列:(二)ROS入门--10.在实际机器人上运行ROS高级功能预览 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了 ...

  2. ROS入门-ROS的安装及编写简单的节点talker和listener

    废话不多说,我们开始吧!!! 我使用的Ubuntu 18.04的系统,所以安装的是最新的ROS版本. 以下是ROS版本和Ubuntu系统版本的对照. 安装ROS 1 配置Ubuntu软件库 先配置Ub ...

  3. ubuntu16.04+ROS kinect+DELL一体机单目摄像头运行ORB_SLAM2

    首先,我们已经完成了相机标定,生成了head_camera.yaml image_width: 640 image_height: 480 camera_name: head_camera camer ...

  4. 使用D415相机运行ORB_SLAM2

    配置及实测 使用Realsense D435实测orb_slam2 https://blog.csdn.net/Carminljm/article/details/86353775 该博客对reals ...

  5. ROS下获取kinectv2相机的仿照TUM数据集格式的彩色图和深度图

    准备工作: 1. ubuntu16.04上安装iai-kinect2, 2. 运行roslaunch kinect2_bridge kinect2_bridge.launch, 3. 运行 rosru ...

  6. 【ROS】ros入门21讲(下)

    前言:上文讲了话题的通信机制,接下来是ROS的第二种重要通信机制-服务. [ROS]ros学习21讲(上) 客户端请求,相当于开关,一次开,再一次关,控制运动的状态.服务端应答. 目录 ROS 七:客 ...

  7. ROS入门——胡春旭老师《机器人开发实践》在ROS-Melodic下的编译

    入门ROS系统,网上接触到的资料大部分都跟古月有关,故买来胡春旭老师(古月)的书籍<机器人开发实践>拜读.书中对仿真以及真实机器人同步做介绍,能一步一步跟着操作下来,非常适合入门.但由于书 ...

  8. ros下创建节点后运行总是出现[rospack] Error: package '***' not found

    ros下创建节点后运行总是出现[rospack] Error: package '***' not found 这是由于没有配置环境的原因所造成的,解决方法:输入命令行source ~/catkin_ ...

  9. ROS入门:运行小海龟

    安装配置ROS可参考:https://www.ros.org/ 要注意安装的版本:Ubuntu16.04对应Kinetic版本,Ubuntu18.04对应Melodic版本 ROS学习资料: ROS官 ...

最新文章

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
  2. 详细解读Spatial Transformer Networks(STN)-一篇文章让你完全理解STN了
  3. 编译原理四种文法的理解补充
  4. jax_ws_对状态代码使用JAX-RS异常
  5. 为啥不装杀毒软件?全家桶太多...
  6. android 相机纹理,Android平台Camera实时滤镜实现方法探讨(五)--GLSurfaceView实现Camera预览...
  7. 队列的其本应用_迷官问题
  8. Mac使用crontab来实现定时任务
  9. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1
  10. python之函数用法__getitem__()
  11. [转]Yii Framework: 从 model 中生成 select option
  12. java list交换_如何在JAVA中交换两个arraylist?
  13. DJ Mix Pads 2 - Remix Version Mac - DJ混音音乐制作板
  14. 利用反射和元数据编写的通用更新和通用查询
  15. #10015. 「一本通 1.2 练习 2」扩散 二分+并查集或Floyd
  16. 《西部世界》,能给现实世界的人工智能带来怎样的狂想
  17. PLC无线通讯方案详解GRM110
  18. 打印1000-2000年的闰年
  19. 谷歌浏览器崩溃之错误代码:RESULT_CODE_MISSING_DATA
  20. 记录 vue-admin-template 中 npm install 错误解决办法

热门文章

  1. C语言中把小写字符串转换成大写用函数,一个容易的将小写字符串转换成大写的函数...
  2. 方舟生存进化查服务器网站,公告_方舟生存进化online官网 -2017Steam霸榜神作
  3. 纤亿通带您了解什么是综合布线
  4. 【RTX51 Tiny高级】14-修改默认产生时间片的定时器T0为其它定时器
  5. 数据库 SQL常用语句
  6. python 立体图 交叉 平面_如何绘制相交平面?
  7. windows链接网络映射,切换账号
  8. Vue的父组件调用子组件方法
  9. 5324002000,AVENTICS消音器
  10. 更换电脑,文件数据如何快速迁移?