ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
xiaoqiang tutorial (21) get USB camera 30fps 1080p image stream and 120fps VGA resolution image stream
-
Xiaoqiang’s default USB camera node publishes a 30fps VGA (640*480) image stream that can satisfy most visual tasks. The USB camera hardware can actually output 120fps VGA image stream and up to 30fps 1080p image stream. This article will introduce how to obtain these two type of the image.
1.Upgrade usb_cam node source code
Taking into account the USB2.0 bandwidth, output 120fps VGA video and 30fps 1080p video, need to use mjpeg format. For Xiaoqiang’s own USB camera ROS driver package usb_cam, it can not read Xiaoqiang usb camera in mjpeg way, so we need to upgrade usb_cam first. For the upgrade method, please refer to this post
2.Test 120fps VGA video output
First please turn off Xiaoqiang’s startup task
sudo service startup stop
Modify the contents of the
ov2610mjpg.launch
file in the usb_cam package as shown below<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 the above launch file
roslaunch usb_cam ov2610mjpg.launch
Open a new window to print the published image topic frame rate
rostopic hz /camera_node/image_raw
Normal output similar to the following figure
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
The above output shows that the camera frame rate is about 99fps and does not reach 120fps. This is due to the influence of ambient light, which can reach 120 frames if the ambient light is sufficient.
2.Test 1080p video output at 30fps
First please stop Xiaoqiang’s startup service
sudo service startup stop
Modify the contents of the
ov2610mjpg.launch
file in the usb_cam package as shown below.<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 the above launch file
roslaunch usb_cam ov2610mjpg.launch
Open a new window to print the published image topic frame rate.
rostopic hz /camera_node/image_raw
Normal output similar to the following figure.
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 average rate: 29.849 min: 0.027s max: 0.042s std dev: 0.00282s window: 202