如何让 OpenCV 和 Firefly MV 工作?

Bra*_*ers 5 10.10 macbook opencv

我正在尝试在 Ubuntu 中开始使用 Point Grey Firefly-MV USB 摄像头。我按照 Point Grey 的说明操作,得到了全黑的图像(是的,镜头盖已关闭)。有人知道如何在 Ubuntu 中启动和运行 Firefly MV 吗?任何演示代码也会有所帮助(在 gui 中显示来自相机的图像馈送)。

谢谢!

Bra*_*ers 3

2011 年 5 月 16 日:问题已解决,请参阅下面的更新!

好吧,经过多次尝试(以及一台新计算机),我已经安装了 ROS、OpenCV 和 libdc1394,并且(显然)运行正常。我编写了一个 ROS 启动文件,该文件应该启动相机并在计算机上的窗口中显示输出。但是,当我运行此启动文件时,我从 libusb 和 libdc1394 收到以下错误:

libusb couldn't open USB device /dev/bus/usb/002/007: Permission denied.
libusb requires write access to USB device nodes.
libdc1394 warning: usb: Failed to open device for config ROM
libdc1394 warning: Failed to get config ROM from usb device
libusb couldn't open USB device /dev/bus/usb/002/007: Permission denied.
libusb requires write access to USB device nodes.
libdc1394 warning: usb: Failed to open device for config ROM
libdc1394 warning: Failed to get config ROM from usb device
libusb couldn't open USB device /dev/bus/usb/002/007: Permission denied.
libusb requires write access to USB device nodes.
libdc1394 warning: usb: Failed to open device for config ROM
libdc1394 warning: Failed to get config ROM from usb device
Run Code Online (Sandbox Code Playgroud)

随后来自 ROS 的(预期)错误:

[ERROR] [1305210297.868750292]: [camera] device open failed: [Camera1394::open]: No cameras found
Run Code Online (Sandbox Code Playgroud)

我假设这与 udev 规则有关,但我不确定如何修复它(我一般不熟悉弄乱 udev 规则)。

如果有帮助,以下是特定设备的权限:

bradpowers@bp-rosdev:~/ros/launch$ ls -la /dev/bus/usb/002/007
crw-rw-r-- 1 root root 189, 134 2011-05-12 08:16 /dev/bus/usb/002/007
Run Code Online (Sandbox Code Playgroud)

=================================================== =============

好的,问题解决了!问题是我的设备需要 udev 规则。我创建了一个,现在相机工作得很好。这就是我所做的:

首先,我在lsusb插入相机后确定相机的 USB 供应商和产品 ID:

bradpowers@bp-rosdev:~$ lsusb
Bus 002 Device 009: ID 1e10:2000 Point Grey Research, Inc. 
Bus 002 Device 008: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 007: ID 05ac:0220 Apple, Inc. Aluminum Keyboard (ANSI)
Bus 002 Device 006: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 002 Device 005: ID 05ac:921c Apple, Inc. 
Bus 002 Device 004: ID 0cf3:3002 Atheros Communications, Inc. 
Bus 002 Device 003: ID 05ac:911c Apple, Inc. 
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Run Code Online (Sandbox Code Playgroud)

我关心的设备是顶部的 Point Grey Research 设备。我抄下了身份证号码1e10:2000

plugdev从那里,我需要创建一个 udev 规则,以便在插入设备时将设备添加到组中:

bradpowers@bp-rosdev:~$ sudo gedit /etc/udev/rules.d/10-pointgrey.rules
Run Code Online (Sandbox Code Playgroud)

在此文件中,我输入了以下内容:

# udev rules file for Point Grey Firefly-MV
BUS=="usb", SYSFS{idVendor}=="1e10", SYSFS{idProduct}=="2000", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

保存并重新启动后,启动我的 roslaunch 文件效果很好。感谢安迪·巴里(Andy Barry)这么快打来电话并提供了解决方案。