小强ROS机器人教程(21)_获取usb摄像头30fps的1080p图像流及120fps的VGA分辨率图像流
小车默认开机启动的usb摄像头节点,发布的是30fps的VGA(640*480)分辨率的图像流,可以满足大部分的视觉任务要求。usb摄像头硬件实际可以输出120fps的VGA图像流和高达30fps的1080p图像流,本文将介绍获取这两种规格图像的办法。
1.升级usb_cam节点源代码
由于usb2.0带宽问题,输出120fps的VGA视频和30fps的1080p视频,需要采用mjpeg格式。小车自带的usb摄像头ROS驱动包usb_cam,它不能以mjpeg方式读取小车usb摄像头,因此我们需要先升级usb_cam。升级办法请参考这篇帖子:http://community.bwbot.org/topic/144/解决ROS的usb_cam节点无法正常读取mjpeg格式摄像头的方法
2.测试120fps的VGA视频输出
首先关闭小车的开机启动任务
sudo service startup stop
修改usb_cam包中的ov2610mjpg.launch文件内容为下文所示
<launch>
<node name="camera_node" pkg="usb_cam" type="usb_cam_node">
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="framerate" value="120" />
<param name="pixel_format" value="mjpeg" />
<param name="camera_frame_id" value="ov2610" />
<param name="io_method" value="mmap"/>
</node>
</launch>
启动上述launch文件
roslaunch usb_cam ov2610mjpg.launch
新开一个窗口打印发布的图像topic帧率
rostopic hz /camera_node/image_raw
正常会出现类似下图的输出
subscribed to [/camera_node/image_raw]
average rate: 99.497
min: 0.004s max: 0.016s std dev: 0.00246s window: 98
average rate: 99.324
min: 0.004s max: 0.016s std dev: 0.00240s window: 198
average rate: 99.385
min: 0.004s max: 0.016s std dev: 0.00236s window: 297
average rate: 99.247
min: 0.004s max: 0.016s std dev: 0.00236s window: 396
average rate: 99.302
min: 0.004s max: 0.016s std dev: 0.00232s window: 495
average rate: 99.296
min: 0.004s max: 0.016s std dev: 0.00231s window: 595
average rate: 99.249
min: 0.004s max: 0.016s std dev: 0.00230s window: 694
上文输出显示摄像头帧率大概是99fps,并没有达到120fps,这是因为环境光照的影响,如果环境光照亮度充足时是可以达到120帧的。
2.测试30fps的1080p视频输出
首先关闭小车的开机启动任务
sudo service startup stop 修改usb_cam包中的ov2610mjpg.launch文件内容为下文所示
<launch>
<node name="camera_node" pkg="usb_cam" type="usb_cam_node">
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="1920" />
<param name="image_height" value="1080" />
<param name="framerate" value="30" />
<param name="pixel_format" value="mjpeg" />
<param name="camera_frame_id" value="ov2610" />
<param name="io_method" value="mmap"/>
</node>
</launch>
启动上述launch文件
roslaunch usb_cam ov2610mjpg.launch
新开一个窗口打印发布的图像topic帧率
rostopic hz /camera_node/image_raw
正常会出现类似下图的输出
xiaoqiang@xiaoqiang-desktop:~$ rostopic hz /camera_node/image_raw
subscribed to [/camera_node/image_raw]
average rate: 29.986
min: 0.028s max: 0.039s std dev: 0.00318s window: 30
average rate: 29.917
min: 0.028s max: 0.039s std dev: 0.00296s window: 59
average rate: 29.912
min: 0.028s max: 0.039s std dev: 0.00292s window: 89
average rate: 29.853
min: 0.027s max: 0.042s std dev: 0.00308s window: 119
average rate: 29.874
min: 0.027s max: 0.042s std dev: 0.00283s window: 149
average rate: 29.839
min: 0.027s max: 0.042s std dev: 0.00282s window: 179
^Caverage rate: 29.849
min: 0.027s max: 0.042s std dev: 0.00282s window: 202