uvc_camera参考链接:uvc_camera - ROS Wiki

usb_cam参考链接:usb_cam - ROS Wiki

#ROS调包侠#使用摄像头

什么样摄像头可以用

在ROS中使用摄像头的前提是,摄像头在Linux系统下是可识别的,通常来说UVC协议的USB摄像头都可以正常使用,例如这一类。

大部分笔记本电脑自带的摄像头都是UVC协议的,所以也是可以直接使用的。

对于一些具有CSI或者MIPI接口的嵌入式板卡,在接入对应接口的摄像头后可能也可以使用,但不是绝对的。

例如树莓派接入CSI摄像头后启用bcm2835-v4l2驱动可以正常使用,但是JetsonNano使用CSI摄像头就不可以通过本文的方法驱动。

验证摄像头设备可用

使用命令检查当前设备列表

ls /dev

如果设备列表中有video*设备,则摄像头设备在当前系统中有被正确的识别。

如果使用虚拟机,需要将摄像头设备连接到虚拟机中。

检查有video设备后可以使用Ubuntu下的拍照软件cheese进一步验证

cheese

拍照软件能显示摄像头画面就基本稳了

获取摄像头驱动包

ROS下摄像头的驱动包有多款,这里笔者常用的两款为例,如果你有更好用的功能包也欢迎留言推荐给我

usb_cam

usb_cam可以通过apt方式直接安装二进制包,如果使用其他版本的ROS,自行替换命令中的noetic字段

sudo apt install ros-noetic-usb-cam

安装没有报错即为完成

rosrun方式运行

先启动roscore,然后运行驱动节点usb_cam_node

roscore
rosrun usb_cam usb_cam_node 

启动节点后终端中可能会报如下的警告,可以忽略,实测不影响使用

摄像头启动后启用rqt工具查看图像

rqt_image_view

选择正确的话题即可预览到摄像头的画面

roslaunch方式运行

usb_cam包中提供了一个launch文件例程usb_cam-test.launch

roslaunch usb_cam usb_cam-test.launch

在这个launch文件中除了启动usb_cam_node节点外还会包含一个image_view用于预览摄像头画面

uvc_camera

在Melodic版本中,uvc_camera有提供二进制安装包,可以通过apt方式安装

sudo apt install ros-melodic-ucv-camera

在Noetic版本中,uvc_camera目前还没有提供二进制安装包,需要通过源码编译的方式安装

源码编译前需要先安装依赖的软件

sudo apt install libv4l-dev

然后将源码克隆到你的工作空间src目录下,这里以catkin_ws工作空间为例

cd ~/catkin_ws/src/
git clone https://github.com/ros-drivers/camera_umd.git

github在不同的时间,不同的地区可能会出现无法访问的问题,可以借助ghproxy来牵线搭桥

cd ~/catkin_ws/src/
git clone https://ghproxy.com/github.com/ros-drivers/camera_umd.git

成功获取源码后就可以编译功能包

cd ~/catkin_ws/ && catkin_make

编译完成后就可以使用uvc_camera功能包了

rosrun方式运行

roscore
rosrun uvc_camera uvc_camera_node

节点启动后可以通过rqt等工具查看图像

roslaunch方式运行

roslaunch uvc_camera camera_node.launch

有多个摄像头时

以上两个功能包无论时通过使用rosrun还是roslaunch的方式启动,使用的视频设备都是/dev/video0。当你有多个摄像头或者需要使用的摄像头设备不是/dev/video0时候,通过这两种方式启动就不能达到预期的效果了。

我的建议是编写launch文件来启动,launch文件可以参考功能包目录下的luanch。

Tips:我不建议对原功能包中的文件做修改,如果编写launch文件,我建议你将launch文件放在你自己开发的功能包目录下。

例如usb_cam功能包下的usb_cam-test.launch文件

<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>

通过修改video_device参数的值即可修改摄像头设备为你需要启动的设备名。其余的参数例如image_width和image_height是用于设备图像的分辨率,完整的参数列表和参数含义可以在功能包的wiki页面中查看。

带compressed的图像话题

如果你已经安装了compressed-image-transport功能包,则相机节点发布的话题中,除了image_raw话题外,应该还有image_raw/compressed这样一个话题。

带有compressed的话题是一种压缩后的图像格式,在跨设备或者带宽资源有限的网络中传输时会更流畅,以640*480分辨率的图像为例。通过rostopic bw工具分别查看两个话题的带宽。

rostopic bw /usb_cam/image_raw
rostopic bw /usb_cam/image_raw/compressed

可以看到两个话题分别占用的带宽,差距还是很明显的。

ROS掉包侠修炼计划相关推荐

  1. Java怎样掉包,如果不想你被称做掉包侠,那么请有效地学习机器学习算法知识...

    机器学习远远超出了sklearn中简单的fit和predict方法.   背景: 现在大家都习惯说掉包侠这个词,尤其是人工智能领域.我的一个朋友就嘲笑我,说:"你这么久学会了什么?只是几 ...

  2. 显卡达人修炼计划 [完成篇]

    转载来自: http://bbs.zol.com.cn/index20070219/index_257_11247.html http://bbs.zol.com.cn/index20070219/i ...

  3. python怎么掉包_python掉包侠与深浅拷贝

    今日所得 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝 包 在学习模块的时候我们了解过模块的四种表现形式,其中的一种就是包. 什么是包? 它是一系列模块文件的结合体,表示 ...

  4. ROS 2 Humble 标定纠正畸变全景鱼眼展开网络摄像头

    from: https://blog.zhjh.top/archives/dKw4qwd4j7vw6q0R1KB37 简介 本文使用 Ubuntu 系统,用 Python 开发 ROS 2 ,用 ca ...

  5. ROS 2 Foxy Fitzroy:为生产和开发机器人设定新标准

    作者:Matt Hansen,Aaron Blasdel和Camilo Buscaron (机器翻译) 备受期待的机器人操作系统2发行版Foxy Fitzroy(ROS 2 Foxy)已发布.ROS ...

  6. 神兔侠儿童安全预警平台正式发布,互联网将为保护儿童安全提供新思路

     2017年6月3日,以"让家庭不再失孤.让爱回家"为主题的神兔侠APP儿童安全预警平台在北京公安部瑞安宾馆正式发布.政府公安部门.中国人民公安大学专家教授.著名社会学者.法律服务 ...

  7. 吐血整理深度学习入门路线及导航【教学视频+大神博客+书籍整理】+【资源页】(2019年已经最后一个月了,你还不学深度学习吗???)

    声明: 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益, ...

  8. 如何看待 2019 年 CS PhD 现扎堆申请且大部分为 AI 方向?未来几年 AI 泡沫会破裂吗?...

    来源:https://www.zhihu.com/question/316135639 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 每年 AI 的 PhD 申请人都在增多,现在不光 CS 这 ...

  9. 北大数院学长对转行机器学习/算法同学的建议(转自知乎)

    作者:LionKing数据科学 链接:https://zhuanlan.zhihu.com/p/42157282 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 北大 ...

最新文章

  1. Object的finalize()方法的作用是否与C++的析构函数作用相同
  2. 独家 | 人工智能不能忽视符号逻辑以及原因
  3. 【趣说】IT人的职场艰难,全藏在气氛组里!
  4. python3怎么使用qstring_请问PyQt的QString和python的string的区别?
  5. 吃豆人(luogu 7472/NOI Online 2021 普及组 T2)
  6. osi7层协议源代码_捍卫开放源代码的17年:立即加入OSI
  7. 计算机网络滑动窗口机制编程,计算机网络之滑动窗口机制
  8. 框架通讯契约——接口
  9. Linux Shell数值比较和字符串比较及相关
  10. react 项目 测试
  11. 基于qt制作的音乐播放器,2.0版
  12. 管网平差c语言编程,哈工大给水管网平差软件
  13. 中国科学院研制的开放式超导磁共振成像磁体系统
  14. 原笔迹手写实现平滑和笔锋效果之:笔迹的平滑(一)
  15. 湖北移动B863AV3.1-M2_S905L3A_UWE5621DS_安卓9语音线刷包--支持语音-首页正常-设置不要密码-灯正
  16. Wi-Fi PNO扫描流程(Android P)
  17. Pycharm的安装并且连接已有的Python环境实现自由编译(附中文配置)|并通过Pycharm实现增加网站访问
  18. java字母随机生成_java生成随机字母
  19. POJ 2356 Find a multiple 神题 传说中的经典.
  20. Apple watch 回收如何选择

热门文章

  1. 公众号文章里使用svg进行交互
  2. 云计算行业前景好不好 如何成为云计算专业人才
  3. 笑看春夏秋冬,淡泊无悔人生
  4. # vue+JavaScript实现slideDown与slideUp效果
  5. java web电子商务网站_电子商务 javaweb b2b b2c o2o 平台
  6. RSD 教程 —— §2.4  RSD基本操作
  7. Linux 之父自传《just for fun》读书笔记
  8. Spark 的三种join方式
  9. 《第二行代码》—— 酷欧天气的开发
  10. C语言strstr函数