很多相机支持uvc[1]的传输格式。

ros官网自带的libuvc,支持uvc格式的视频流,本文主要对这个链接中的一些细节,进行补充说明。
step 1
插入usb
step 2 获取基本信息
查找camera的Bus、device、vendor和product号码。
lsusb

例子中,
Bus id = 001
Device id = 020(这个号码,每次usb插拔后会变化,目前不知道怎么固定)
Vendor id = 0x0c45
Product id = 64ab
step 3 赋予相机接口权限
sudo chmod o+w /dev/bus/usb/001/020
# where 020 is the device id, and 001 is the bus id.
step 4 禁用其他USB视觉和自媒体驱动
You may need to disable your operating system’s builtin USB video or audio drivers. On Linux, the snd-usb-audio and uvcvideo modules conflict with libuvc. Try unloading them with sudo rmmod snd-usb-audio; sudo rmmod uvcvideo and consider blacklisting them – e.g., add the lines blacklist uvcvideo and blacklist snd-usb-audio to an /etc/modprobe.d/uvc.conf file. (Applications that don’t use libuvc will be unable to stream from the camera.)
snd-usb-audio和uvcvideo会和libuvc发生冲突。
命令行来进行禁用,似乎只在当前终端下有效。一劳永逸的方法可能还是将其加入黑名单。
sudo rmmod snd-usb-audio
以及
sudo rmmod uvcvideo
step 5 查看相机帧率、压缩格式和画幅大小
v4l2-ctl --list-formats-ext

上图列出了相机输出的压缩格式(yuyv)、画幅尺寸和相对的帧率。
其他压缩格式有uncompressed/yuyv/nv12/jpeg,可以参考[2]。
step 6 安装ros官方的libuvc包
sudo apt-get install ros-版本-libuvc_camera
step 7 编写roslaunch文件,并运行。
模板可以从ros官网下复制,将上述的参数,填入对应位置,然后运行即可。

其中,因为没有标定,所以出现黄色的warning表示找不到内参文件,这并不妨碍图像的输出。可以暂时忽视它。
step 8 检查话题消息,并可视化输出图片。
如果step6 运行成功,则可以接收到相关的rostopic
rostopic echo /camera/image_raw
可以通过rviz来输出图像数据。

添加image数据类型的topic,选择对应的rostopic,即可输出对应的图像。
本文介绍了如何在ROS中使用libuvc库配置UVC兼容相机,包括插入USB后获取设备信息,赋予相机接口权限,禁用冲突驱动,查看相机帧率和格式,编写roslaunch文件并运行,以及通过rostopic和rviz检查图像输出。虽然缺少内参文件导致警告,但不影响图像数据的正常输出。



4358

被折叠的 条评论
为什么被折叠?



