个人经验,每个人情况可能不同,仅供参考。
在Ubuntu18.04上使用USB摄像头(KS2A418)(驱动安装过程就不详说了,教程很多)。
首先用下面网站测试摄像头是没问题的,
https://webcamtests.com/
然后用下面的命令
roslaunch usb_cam usb_cam-test.launch
运行时出现VIDIOC_G_FMT error 22, Invalid argument
这个错误,研究后发现是launch文件中的相机参数设置错误,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="color_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>
解决方法:
1.用下面命令查看接入的USB摄像头的设备号,如下图,可能有两个,然后更改<param name="video_device" value="/dev/video0" />
中的 value,两个需要都试一试,我的是/dev/video0可用 。
ls /dev/video*
2.用下面命令查看相机参数,这里用哪个video*是根据第一步确定
v4l2-ctl -d /dev/video0 --list-formats-ext
然后根据查到的参数,将<param name="pixel_format" value="yuyv" />
中的 value改为mjepg、yuyv、uyvy中的一个。
3.注释掉<param name="color_format" value="yuyv" />
,即<!--<param name="color_format" value="yuyv" />-->
。
4.运行roslaunch即可。