ROS中使用摄像头的问题
ROS中使用摄像头的问题
0.prepare
4 . 安装uvc_cam
$ sudo apt-get install ros-indigo-uvc-camera
$ source /opt/ros/indigo/setup.bash
采用apt-get的方式,直接装在了ROS的安装路径中,并设置工作路径。
安装成功后在/opt/ros/hydro/的路径中就会找到uvc_camera_node。
5 . 运行节点显示摄像头内容
$ rosrun uvc_camera uvc_camera_node
$ rosrun image_view image_view image:=/image_raw
以上测试均可用于启动usb摄像头。
一、前言
在ROS下常用的主要有两种驱动包:usb_cam和uvc_cam
我这里用的是usb_cam包
第一次使用首先要安装这个包,安装完了之后就可以很方便的运行摄像头节点了
二、安装usb_cam包
首次使用需要下载安装usb_cam包
这里参考博客:How to Use a Webcam in ROS with the usb_cam Package
三种方式安装:
1、可以直接用apt-get install命令
[html] view plain copy
- $ sudo apt-get install ros-hydro-bosch-drivers
注意上面的hydro要替换成你的ROS版本
2、也可以下载usb_cam源代码自己编译
有网友提示说第二种方法不能运行,可能是因为svn上源码版本太低,编译无法生成可执行文件,所以launch文件找不到usb_cam_node节点
[html] view plain copy
- $ cd catkin_ws
- $ svn co https://bosch-ros-pkg.svn.sourceforge.net/svnroot/bosch-ros-pkg/trunk/stacks/bosch_drivers
- $ rospack profile
- $ roscd usb_cam
- $ rosmake --rosdep-install
上面的catkin_ws是你创建的catkin工作空间的名字,一般会将软件包建在catkin空间中
3、还有第三种安装方式,我是用这种方法下载并编译的
[html] view plain copy
- $ cd catkin_ws/src
- $ git clone https://github.com/bosch-ros-pkg/usb_cam.git
- $ cd ..
- $ 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
三、运行usb_cam_node开启摄像头
打开一个新的终端,运行roscore
[html] view plain copy
- $ roscore
新版本的usb_cam包在launch文件夹下有自带的launch文件,名叫usb_cam-test.launch
我们可以直接cd到这个文件夹下运行它
[html] view plain copy
- $ cd
- $ cd catkin_ws/src/usb_cam/launch
- $ roslaunch usb_cam-test.launch
如果工作空间的usb_cam包中不带这个launch文件我们就要新建它:
打开catkin_ws/src/usb_cam/launch文件夹,在其中新建一个文件,把名字改为usb_cam-test.launch
用文本编辑器打开,写入以下代码:
[html] view plain copy
- <launch>
- <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
- <param name="video_device" value="/dev/video0" />
- <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>
保存,并关闭这个文件。然后同样要cd到launch文件夹才能运行这个文件:
[html] view plain copy
- $ cd
- $ cd catkin_ws/src/usb_cam/launch
- $ roslaunch usb_cam-test.launch
四、遇到的问题
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对于理解ROS的文件系统很有帮助
3、如果出现报错“sh: 1: v4l2-ctl: not found”则需要安装v4l2
运行:sudo apt-get install v4l-utils
相关文章:

EmEditor Professional(文本编辑) 下载地址
http://www.greenxf.com/soft/2126.html 16.1.5 http://www.cr173.com/soft/3031.html 16.3.0 http://www.pc6.com/softview/SoftView_43146.html 17.8.1 绿色注册版 EmEditor 71 个实用插件汉化版 http://www.onlinedown.net/soft/35609.htm

【ACM】杭电OJ 4548 美素数(二次打表)
二次打表,第一次是标记哪些是素数,哪些不是。 第二次是前n个数中 “本身是素数 && 各个位上的和是素数 ” 的个数 TLE: #include <iostream> #include <cstdio> using namespace std;int fun1(int x) {int sum0…

animation与transition区别
transition: 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间;默认值分别为:all 0 ease 0 1、局限性: 1)只能设置一个属性 2)需要伪类/事件触发才执行 3)只能设置动画初始值和结束值 2、过…

如何将cocos2d-x程序分别移植到ios,android,windowsphone三个手机平台上
作者:方格子链接:https://www.zhihu.com/question/21505500/answer/22152464来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。面向android的移植 0. 这移植过程简直…… 1. 完成以上工具的下载安装…

【数据结构】顺序循环队列及其实现(C语言)
给定一个大小为MAXSIZE的数组储存一个队列,经过若干次的插入和删除以后,当队尾指针 rear MAXSIZE 时,呈现队列满的状态,而事实上数组的前部可能还有空闲的位置。为了有效地利用空间,引入循环队列(环状&…

C++中Reference与指针(Pointer)的使用对比
了解引用reference与指针pointer到底有什么不同可以帮助你决定什么时候该用reference,什么时候该用pointer。在C 中,reference在很多方面与指针(pointer)具有同样的能力。虽然多数C程序员对于何时使用reference何时使用pointer 都会有一些直觉࿰…
云南实现手机自主补(换)领居民身份证
图为云南首位通过手机自主补领居民身份证的申领人付宏强。 缪超 摄 中新网昆明1月22日电 (缪超)春节临近,云南实现手机自主补(换)领居民身份证,首张通过手机补办的居民身份证于22日在武定县公安局狮山派出所成功申领。 据悉,为方便民众因遗失…
NDK JNI 安装与配置(一)(UBUNTU16.04 )
1、下载Android NDK自解压包,官方地址:https://developer.android.com/ndk/downloads/index.html#download下载:$ wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin2、解压,将Android NDK压缩包解压到…

【数据结构】顺序表的应用(4)(C语言)
【数据结构】顺序表的应用(1)(C语言) 【数据结构】顺序表的应用(2)(C语言) 【数据结构】顺序表的应用(3)(C语言) 设计一个算法&…

Java泛型:泛型类、泛型接口和泛型方法
2019独角兽企业重金招聘Python工程师标准>>> 根据《Java编程思想 (第4版)》中的描述,泛型出现的动机在于:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。 泛型类 容器…

POJ 2456 Aggressive cows(二分答案)
Aggressive cowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 22674 Accepted: 10636Description Farmer John has built a new long barn, with N (2 < N < 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0…

JMeter打开脚本报错处理方法
今天电脑重装了系统,安装好jmeter后打开以前写的脚本,总是报错如下图,研究了半天也没搞明白。 后来一个群里的人员提醒才想起来,是脚本的问题,为啥捏? 因为之前写的脚本用了一些监听,而这些监听…

Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
简介 在Android日常的开发过程中有的项目需要引入第三方的库,有时候大家可能会在libs文件夹下看到 mips、armeabi、armeabi-v7a和x86这四个文件夹。那么这三个文件夹下面的包是干什么用的? 这三个包下面存放的用C编译的本地库文件(各类『.…

【数据结构】判断一个单链表中各结点的值是否有序
count记录的是单链表的总长 count1记录的是升序的结点的个数 count2记录的是降序的结点的个数 如果count1或者count2等于count,那么就说明该序列是升序或者降序的。 稍加改进可以在准确判断是升序还是降序还是无序 (个人认为链表中只有一个结点或者…

MSSQL-最佳实践-行级别安全解决方案
title: MSSQL-最佳实践-行级别安全解决方案 author: 风移 摘要 在SQL Server安全系列专题月报分享中,我们已经分享了:如何使用对称密钥实现SQL Server列加密技术、使用非对称密钥加密方式实现SQL Server列加密、使用混合密钥实现SQL Server列加密技术和列…
浮点数运算原理详解
导读: 浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华,所有的软件开发人员都…

vCenter的安装
转载于:https://blog.51cto.com/yht1990/1857211

【数据结构】双链表的应用
1、设计一个算法,在双链表中值为y的结点前面插入一个值为x的新结点,即使得值为x的新结点成为值为y的结点的前驱结点。 2、设计一个算法,将一个双链表改建成一个循环双链表。 #include <stdio.h> #include <stdlib.h>typedef st…

Eclipse for Tricore 的安装方法
1.安装JDK32位版 2.安装Eclipse for Tricore 32位版(应该也只有32位的) 3.OK(如果打开Tricore提示找不到JDK的话,在网上搜索如何配置JDK,修改环境变量) 注意:Eclipse的位数必须和JDK位数相同 转…
NDK JNI方式读写Android系统的demo(二)
NDK & JNI(方式读写Android系统的Demo) 大家都知道Android系统是一种基于Linux的自由及开放源码的操作系统,所以读写GPIO也可以直接用Linux那一套export/unexport方法,本文将介…

【数据结构】顺序串的插入算法,删除算法,连接运算,顺序串求子串算法
主函数自行添加 头文件 宏定义 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 顺序串的创建 void creat(seqstring *S) {char c;int i0;while((cgetchar())!\n){S-…

log4j日志记录级别是如何工作?
级别p的级别使用q,在记录日志请求时,如果p>q启用。这条规则是log4j的核心。它假设级别是有序的。对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。 举个栗子 下面的栗子明确指出如何可以过…

Kafka背后公司获1.25亿融资,估值超25亿美元
北京时间1月24日,开源Apache Kafka项目背后的公司Confluent在官方博客宣布进行了D轮融资,价值约为1.25亿美元,公司总估值高达25亿美元。 Confluent公司CEO Jay Kreps在博客中表示:我很高兴地宣布,Confluent已经募集了1…

深入学习jQuery描述文本内容的3个方法
前面的话 在javascript中,描述元素内容有5个属性,分别是innerHTML、outerHTML、innerText、outerText和textContent。这5个属性各自有各自的功能,且兼容性不同。jQuery针对这样的处理提供了3个便捷的方法,分别是:html(…
NDK JNI Android Studio开发与调试DEMO(三)(生成 .so 文件)
Android Studio NDK 开发与调试(生成 .so 文件) 温馨提示:如果你的 Android Studio 版本在 3.0以上 , 建议你用 cMake /ndk-build 的新姿势进行 NDK 开发 : https://developer.android.google.cn/index.html AS与g&am…
字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)
字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素的模式匹配算法 基本思想:用p中的每一个字符去与t中的字符一一比较。 模式p 正文 t 如果匹配成功,…

框架页面jquery装载
转载于:https://www.cnblogs.com/moonsoft/p/10313309.html

NDKJNI Android 相关资料整理(四)
JNI/NDK开发指南 JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld http://blog.csdn.net/xyang81/article/details/41777471 JNI/NDK开发指南(二)——JVM查找java native方法的规则 http://blog.csdn.net/xyang81/article/det…
【ACM】与全排列相关的STL函数 prev_permutation next_permutation
排列 与 全排列 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。 当mn时所有的排列情况叫全排列。如果这组数有n个,那么全排列数为n!个。 对于全排列的求解…

虚拟机无法使用网卡桥接模式
重装了好几遍操作系统,换了两个虚拟机,差点怀疑人生…… 最终的原因竟然是win10!!! 1.执行WINR 输入services.msc,打开服务管理器(回车)。 2.找到Device Install Service服务 启动此…