16 de maio de 2011: problema resolvido, consulte a atualização abaixo!
Tudo bem, depois de muito cutucando e cutucando (e uma nova compilação de computador) eu obtive ROS, OpenCV e libdc1394 instalados e (aparentemente) funcionando corretamente. Eu escrevi um arquivo de inicialização do ROS que deve iniciar a câmera e exibir a saída em uma janela no meu computador. No entanto, quando executo este arquivo de inicialização, recebo os seguintes erros da libusb e 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
Seguido por um erro (esperado) de ROS:
[ERROR] [1305210297.868750292]: [camera] device open failed: [Camera1394::open]: No cameras found
Suponho que isso tenha a ver com as regras do udev, mas não tenho certeza de como corrigi-lo (não estou familiarizado com o uso de regras do udev em geral).
Se isso ajudar, veja as permissões para o dispositivo em particular:
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
=============================================== =================
Ok, problema resolvido! O problema era que meu dispositivo precisava de uma regra do udev. Eu criei um, e a câmera funciona muito bem agora. Aqui estava o que eu fiz:
Primeiro, usei lsusb
com a câmera conectada para determinar o fornecedor de USB e os IDs de produto da minha câmera:
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
O dispositivo que me preocupa é o dispositivo Point Grey Research no topo. Eu copiei o número de ID, 1e10:2000
.
De lá, precisei criar uma regra do udev para adicionar o dispositivo ao grupo plugdev
quando conectado:
bradpowers@bp-rosdev:~$ sudo gedit /etc/udev/rules.d/10-pointgrey.rules
Neste arquivo, eu digitei o seguinte:
# udev rules file for Point Grey Firefly-MV
BUS=="usb", SYSFS{idVendor}=="1e10", SYSFS{idProduct}=="2000", GROUP="plugdev"
Após salvar e reiniciar, iniciar meu arquivo roslaunch funcionou muito bem. Obrigado a Andy Barry por um telefonema e solução tão rapidamente.