ORB SLAM2 USB摄像头

实验环境ubuntu 16.04+ros  kinetic OPencv2.4.9

Step1: 配置环境变量

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src

在’src’目录中可能没有任何软件包,只有一个CMakeLists.txt,依然可以编译它:

$ cd ~/catkin_ws/
$ catkin_make

在主文件夹下ctrl+h后找到隐藏文件夹.bashrc。在.bashrc 最下面添加

source /opt/ros/indigo/setup.bash`
source ~/catkin_ws/devel/setup.bash`

Step2:编译usb_cam

[usb_cam下载链接] (https://github.com/bosch-ros-pkg/usb_cam)
把usb_cam放到catkin_ws/src下

$ cd catkin_ws/src/usb_cam
$ mkdir build
$ cd build
$ cmake ..
$ ma

Step3: 编译orb_slam2

[orb_slam2 下载链接] ( https://github.com/raulmur/ORB_SLAM2 )

  1. 安装orb slam2依赖

    • 安装 g++11
      $ sudo apt-get install gcc g++

    • 安装 Pangolin

$ sudo apt-get install libglew-dev   #安装Glew
$ sudo apt-get install cmake         #安装CMake
$ sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev  #安装Boost
$ sudo apt-get install libpython2.7-dev  #安装Python2'Python3
下载、编译、安装Pangolin:
$ git clone https://github.com/stevenlovegrove/Pangolin.git
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake -DCPP11_NO_BOOST=1 ..
$ make
$ sudo make 

注意:Pangolin最新版本会编译失败请使用旧版本

  • 安装OpenCV
$sudo apt-get update
$sudo apt-get install libcv-dev
  • 安装Eigen
    $ sudo apt-get install libeigen3-dev

  • BLAS and LAPACK

$ sudo apt-get install libblas-dev
$ sudo apt-get install liblapack-dev
  1. 编译ORB_SLAM2库和例子程序(单目、双目和RGB-D)
    $ git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
    把ORB_SLAM2放到catkin_ws/src下
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh

生成的libORB_SLAM2.so位于lib目录下,可执行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc and stereo_euroc位于Examples目录下。

Step4: 把摄像头数据发布到topic

4-1$ roslaunch usb_cam usb_cam-test.launch


这种方法下载并编译的

[html] view plain copy
  1. $ cd catkin_ws/src
  2. $ git clone https://github.com/bosch-ros-pkg/usb_cam.git
  3. $ cd ..
  4. $ catkin_make

需要确保usb_cam安装过程中没有错误

  • Bug / feature tracker: https://github.com/bosch-ros-pkg/usb_cam/issues
  • Source: git https://github.com/bosch-ros-pkg/usb_cam.git (branch: master)
  • ROS wiki:http://wiki.ros.org/usb_cam

4-2、运行usb_cam_node开启摄像头

打开一个新的终端,运行roscore
[html] view plain copy
  1. $ roscore

新版本的usb_cam包在launch文件夹下有自带的launch文件,名叫usb_cam-test.launch

我们可以直接cd到这个文件夹下运行它
[html] view plain copy
  1. $ cd
  2. $ cd catkin_ws/src/usb_cam/launch
  3. $ roslaunch usb_cam-test.launch

如果工作空间的usb_cam包中不带这个launch文件我们就要新建它:

打开catkin_ws/src/usb_cam/launch文件夹,在其中新建一个文件,把名字改为usb_cam-test.launch
用文本编辑器打开,写入以下代码:
[html] view plain copy
  1. <launch>
  2. <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
  3. <param name="video_device" value="/dev/video0" />
  4. <param name="image_width" value="640" />
  5. <param name="image_height" value="480" />
  6. <param name="pixel_format" value="yuyv" />
  7. <param name="camera_frame_id" value="usb_cam" />
  8. <param name="io_method" value="mmap"/>
  9. </node>
  10. <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
  11. <remap from="image" to="/usb_cam/image_raw"/>
  12. <param name="autosize" value="true" />
  13. </node>
  14. </launch>

保存,并关闭这个文件。

然后同样要cd到launch文件夹才能运行这个文件:
[html] view plain copy
  1. $ cd
  2. $ cd catkin_ws/src/usb_cam/launch
  3. $ roslaunch usb_cam-test.launch

4-3、遇到的问题

1、报错[usb_cam-test.launch] is not a launch file name
运行完roslaunch usb_cam-test.launch后报错说usb_cam-test.launch不是一个launch文件,这是因为没有cd到catkin_ws/src/usb_cam/launch文件夹下,系统找不到这个launch文件
或者如果事先source了该工作空间,可以在任意目录下运行roslaunch usb_cam usb_cam-test.launch都行
2、对于有些节点没有跑起来的情况,可以从下载的catkin_ws/src/usb_cam中找到相应的.py文件然后用cp命令复制到opt/ros/hydro/的相应文件夹下
这篇文章:配置ROS工作空间catkin+rosbuild(http://my.phirobot.com/blog/2013-12-overlay_catkin_and_rosbuild.html)对于理解ROS的文件系统很有帮助
3、如果出现报错“sh: 1: v4l2-ctl: not found”则需要安装v4l2
运行:sudo apt-get install v4l-utils

Step5: 修改ros_mono.cc

进入~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src
打开 ros_mono.cc 把程序里面的topic改为 /usb_cam/image_raw
具体还要查看自己的rviz(即上一步打开的摄像头窗口的标题)
然后进入~/catkin_ws/src/ORB_SLAM

$ chmod +x build_ros.sh
$ ./build_ros.sh

Step5: 启动mono

$ ~/catkin_ws/src/ORB_SLAM2$
rosrun ORB_SLAM2 Mono    /home/sun/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt  /home/sun/catkin_ws/src/ORB_SLAM2/my.yaml     node:sun(zhuji)

有两个参数,第二个参数是相机参数文件,根据自己的相机参数修改。

正常启动效果如下

都上一步为止已经成功跑起来了,我们来玩点好玩的吧

Step6: 增强现实

参照step4启动摄像头然后执行一下命令

~/catkin_ws/src/ORB_SLAM2$ rosrun ORB_SLAM2 MonoAR      /home/sun/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/sun/catkin_ws/src/ORB_SLAM2/my.yaml

如果没有界面出来不要着急,参照step5 打开 ros_mono_ar.cc把程序里面的topic改为 /usb_cam/image_raw
具体还要查看自己的rviz(即上一步打开的摄像头窗口的标题)
然后进入~/catkin_ws/src/ORB_SLAM

$ chmod +x build_ros.sh
$ ./build_ros.sh

首先确保SLAM ON 然后点击添加物体,最终效果如下

AR + ROS +UBUNTU16.04+ORB-SLAM2相关推荐

  1. Ubuntu 16.04~ORB SLAM2~Kinect v1

    额 Ubuntu16.04 ORB-SLAM2实现(kinect V1/ROS) ----------------------------------------------------------- ...

  2. ROS: Ubuntu16.04安装ROS-kinetic

    参考连接:SLAM: Ubuntu14.04_Kylin安装ROS-Indigo 第一步: 软件源配置 1. 增加下载源(增加ubuntu版的ros数据仓库,即下载源)(通用指令适合任何版本的ros) ...

  3. ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

    Intel在Github上开源了支持所有RealSense系列相机的SDK,包括了D400.SR300系列深度相机和T265双目跟踪相机,支持Linux.Windows.Mac OS以及Android ...

  4. 树莓派装linux ros,树莓派安装Ubuntu16.04 MATE系统以及ROS(kinetic)的安装

    安装ubuntu16.04 MATE系统 1.安装Ubuntu16.04镜像 从官网下载并按照树莓派刷写系统的流程将ubuntu16.04 MATE烧写到树莓派的SD卡上 2.设置WiFi 将树莓派外 ...

  5. ubuntu16.04下ROS最新换源方法,解决Hash sum mismatch 问题

    1.更换源 备份原始数据 cd /etc/apt/ sudo cp sources.list sources.list.bak sudo gedit sources.list 科大源: deb htt ...

  6. ubuntu16.04 + Kdevelop + ROS开发

    ubuntu16.04 + Kdevelop + ROS开发 转载于:https://www.cnblogs.com/yebo92/p/7307505.html

  7. Ubuntu16.04安装ROS后运行gazebo报错 it says it‘s incompatible with that RT“‘ failed.

    Ubuntu16.04系统安装ROS(kinetic版本)后,使用ROS包含的gazebo时报错,gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfs ...

  8. Ubuntu16.04安装ros残缺包

    由于工程项目对系统环境要求不同,安装ROS时,部分软件包没有安装,在执行程序时才报错,下面是执行程序中的问题以及相应解决方案,可以根据需求自行尝试. 1. 具体报错记不清了,大致是提示相应包找不到,根 ...

  9. Ubuntu16.04 + ROS kinetic + 激光slam-cartographer ROS + 数据仿真 + Turtlebot3仿真

    一.Ubuntu16.04 +ROS kinetic的安装及问题解决 https://blog.csdn.net/GGY1102/article/details/107877937 二.Cartogr ...

最新文章

  1. ibatis.net:第五天,QueryForObject
  2. 如何将页脚固定在页面底部
  3. 全球 MEDC 2007 举行日期
  4. BitMap位图与海量数据的理解与应用
  5. 谷歌:一篇论文,让研究者吃我三份安利
  6. CodeIgniter 的数据安全过滤全解析
  7. 疯狂ios讲义之美化iOS应用
  8. C# 语言历史版本特性(C# 1.0到C# 8.0汇总)
  9. linux 安装 yum
  10. 战地一自定义服务器怎么搜索,战地1怎么快速加入服务器?多种加入方法一览...
  11. 使用Python编写一个QQ聊天机器人
  12. python能开发手机app吗_python开发手机app和java相比,缺点是什么?
  13. YOLO测试图片显示准确率值
  14. 什么是 A 轮融资?有 B轮 C轮么?
  15. 计算机科学与技术影响因子排名,173个学科SCI期刊影响因子排名
  16. 网络工程师2017上半年软考上午试题
  17. 深度学习入门基础讲义
  18. 不刷新页面更新内容的方法
  19. 安装maven时安照说明配置环境变量JAVA_HOME
  20. 利用Power Platform来搭建学校智能健康信息平台(2)

热门文章

  1. python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...
  2. oss生成唯一文件名_根据结构化自然语言规范自动生成精确预言
  3. spark提交到yarn_详细总结spark基于standalone、yarn集群提交作业流程
  4. 开源游戏机java模拟器_最棒的 7 款开源终端模拟器
  5. java中的pattern_Java Pattern的用法是什么?
  6. linux系统桌面缺色,红旗系统如何用?
  7. 洛谷 P3302 [SDOI2013]森林 主席树+启发式合并
  8. 一、PyTorch Cookbook(常用代码合集)
  9. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)
  10. qt能使用logback_使用ELK系统分析SpringBoot日志