usb-cam是一个用来打开摄像头并输出图像话题的ros package,可以自己建立工作空间git clone项目自己编译,也可以直接用sudo apt install ros-melodic-usb-cam安装,这时这个ros包安装在/opt/ros的ros默认路径下,不需要再添加环境路径。
我遇到的问题是
roslaunch usb_cam usb_cam-test.launch
相机的灯只是闪了一下,然后报错,没法显示图像
这多半是因为usb_cam-test.launch文件的参数设置不对
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video2" /> <!--usb cam is vedio2, laptop default camera is vedio0-->
<param name="image_width" value="1280" /> <!--resolution has to be correct-->
<param name="image_height" value="720" /> <!--my camera type is USBFHD08S, 1920*1080 or 1280*720 or 640*360, smaller resolution gains larger fps-->
<param name="pixel_format" value="mjpeg" /> <!--my camera type is USBFHD08S which is mjpeg-->
<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>
首先,如果要用usb摄像头而非笔记本自带摄像头,应该把video_device设置成/dev/vedio2
关键:分辨率(image_width、image_height)和像素格式(pixel_format)要设置正确!否则会出现上文摄像头只闪一下的情况
那么怎么知道自己的摄像头的分辨率和像素格式呢?当然是去查啊
我这里用的摄像头的电路板上写了它的型号是USBFHD08S,百度一下它的参数如下
可见像素格式是mjpeg,分辨率有三种都可以。
修改好这些参数后,再启动usb_cam-test.launch就没问题了!