Ubuntu16.04 Ros下使用各种摄像头获取图像(踩坑总结)(转载)

128 篇文章 12 订阅

摘自:https://blog.csdn.net/zbr794866300/article/details/100113594

Ubuntu16.04 Ros下使用各种摄像头获取图像(踩坑总结)

berry丶 2019-08-28 11:56:41 1499 收藏 10

分类专栏: Ros视觉

版权

最近再ros下尝试获取摄像头的图像,参照《Ros by Example 1》,但是有些依赖在kinetic下有些不能使用,再连续踩坑的过程中,总结了一套能够使用的方法。

1.安装rbx1包以及相关的基础包

书上是对应的是hydro版本的基础包,有几个再16.04的版本下都找不到了,我就把能够成功安装下载的罗列出来:

 
  1. sudo apt-get install ros-kinetic-turtlebot-*

  2. sudo apt-get install ros-kinetic-openni-camera ros-kinetic-openni-launch

  3. sudo apt-get install ros-kinetic-uvc-camera

  4. sudo apt-get install ros-kinetic-laser-*

  5. sudo apt-get install ros-kinetic-audio-common ros-kinetic-joystick-drivers

  6. sudo apt-get install ros-kinetic-orocos-kdl ros-kinetic-python-orocos-kdl

  7. sudo apt-get install gstreamer0.10-pocketsphinx python-setuptools python-rosinstall

  8. sudo apt-get install ros-kinetic-opencv3 ros-kinetic-vision-opencv

  9. sudo apt-get install ros-kinetic-depthimage-to-laserscan ros-kinetic-arbotix-*

  10. sudo apt-get install git subversion mercurial

这是我在Ubuntu16.04 kinetic opencv3版本上测试安装的,都可以实现,如果不能安装的更新下软件包列表。

然后安装rbx1包到自己的工作空间去:

 
  1. cd ~/catkin_ws/src

  2. git clone https://github.com/pirobot/rbx1.git

  3. cd ..

  4. catkin_make

  5. source devel/setup.bash

2.安装摄像头驱动

网上现在相关的资料博客常提到的有三款驱动:

(1)uvc_cam:这个驱动现在已经不更新了,对于高版本来说,感觉有些小问题,(我下载了这个驱动但是连编译都有问题,毕竟书上是比较老的版本了)

(2)usb_cam:这个驱动配合自带的launch文件可以直接显示电脑摄像头和usb摄像头的图像,参考:usb_cam调用摄像头显示图像。但是我不用launch文件,直接启动roscore,然后运行usb_cam_node节点时,就读取不到图像,全是错误的显示:

所以也没有使用该驱动。

(3)usb_camera:这个驱动的节点是可以直接使用显示图像,因此就选择这个驱动。

安装uvc_camera:

 
  1. cd ~/catkin_ws/src

  2. git clone https://github.com/ktossell/camera_umd

  3. cd ~/catkin_ws

  4. catkin_make

  5. source devel/setup.bash

测试uvc_camera:

新开一个终端输入:

roscore

然后再开一个终端输入:

rosrun uvc_camera uvc_camera_node device:=/dev/video0

然后笔记本摄像头会亮,显示了一串数据,然后就再等待状态。这时再开一个终端,输入rostopic list查看话题名称,找到图像那个名称/image_raw,再输入:

rosrun image_view image_view image:=/image_raw

测试成功,该节能够成功使用。

3.修改launch文件测试

此时,我们要让rbx1_vision动起来,还要做个主题映射把/image_raw -> /camera/rgb/image_color还要修改 rbx1_vision/launch/uvc_cam.launch 文件中调用的 driver node : pkg=uvc_cam; node name=uvc_cam_node。

找到rbx1/rbx1_vision/launch文件夹内,只有名为usb_cam.launch的文件,此时重新创建一个文件取名为:uvc_camera.launch

然后再里面添加以下内容:

 
  1. <launch>

  2. <arg name="device" default="/dev/video0" />

  3.  
  4. <node name="uvc_camera_node" pkg="uvc_camera" type="uvc_camera_node" output="screen">

  5.  
  6. <remap from="image_raw" to="/camera/rgb/image_color" />

  7.  
  8. <param name="device" value="$(arg device)" />

  9. <param name="image_width" value="640" />

  10. <param name="image_height" value="480" />

  11. <param name="frame_rate" value="30" />

  12. <param name="pixel_format" value="mjpeg" />

  13. <param name="contrast" value="32" />

  14. <param name="brightness" value="32" />

  15. <param name="saturation" value="32" />

  16. <param name="autofocus" value="true" />

  17. <param name="camera_frame_id" value="camera_link" />

  18.  
  19. </node>

  20. </launch>

直接沾过去如果运行的时候显示launch文件错误的话就是汉字字母的格式问题。

建议将launch文件中自带的usb_cam.launch的内容沾到uvc_camera.launch中去,然后只是修改了node_name的内容就可以了(我就是这么做的)

4.最终测试

我外接了一个sub摄像头,可以通过命令查看:

ls /dev/video*

电脑自带的一般为:/dev/video0  外设的:/dev/video1

试着运行这个launch文件,然后使用image_view工具查看话题camera/rgb/image_color的数据:

roslaunch rbx1_vision uvc_camera.launch  device:=/dev/video1

然后打开一个新的终端:

rosrun image_view image_view image:=/camera/rgb/image_coror

整体就OK了

 

参考文献:

https://blog.csdn.net/sonictl/article/details/48053597/

https://blog.csdn.net/heyijia0327/article/details/41623419

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值