Révisions
Auteur: André
Date: 27 janvier 2015
Idiot-proofé par: It is a mystery
1. Preamble
The Point Grey FireFly MV is an IEEE 1394 compliant camera. As such, we can use the ROS camera1394 package to interact with it. To begin, install and run coriander.
sudo apt-get install coriander
coriander
If this fails because of a permission problem, we have to setup udev rules.
1.1 Gather camera information
Find the usb device corresponding to the camera:
andre@eart:~$ lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 002: ID 1e7d:2d5a ROCCAT
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 007: ID 1e10:2001 Point Grey Research, Inc.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 058f:6364 Alcor Micro Corp. AU6477 Card Reader Controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 04d9:0169 Holtek Semiconductor, Inc.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 011 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 010 Device 002: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 010 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
We can see that the device is on bus 002 as device 007 with the vendor id 1e10 and model id 2001.
Bus 002 Device 007: ID 1e10:2001 Point Grey Research, Inc.
1.2 Find the device
With the previous information, we can now investigate our permission problems. Look for the device in /dev
andre@eart:~$ ls -la /dev/bus/usb/002/
total 0
drwxr-xr-x 2 root root 80 Jan 27 22:51 .
drwxr-xr-x 13 root root 260 Jan 27 17:33 ..
crw-rw-r-- 1 root root 189, 128 Jan 27 22:33 001
crw-rw-r-- 1 root root 189, 134 Jan 28 00:18 007
Looks like our device belongs to group root. This is bad for coriander and for ROS. Now we have to write a udev rule to remap it to a new group e.g. plugdev.
1.3 Write a new udev rule
First get the attributes of our device
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/002/007)
This should print out a huge list of attributes of the device and it’s parents. Let’s pick some attributes that can help us identify any FireFly MV from Point Grey. e.g.
SUBSYSTEM=="usb"
...
ATTR{idVendor}=="1e10"
...
ATTR{idProduct}=="2001"
With this information, we can add a new udev rule. Open up an editor on a new rule. e.g.
sudo gedit /etc/udev/rules.d/10-pointgrey.rules
Now add the checks to verify it’s the right device and then move the device to the plugdev group.
# udev rules file for Point Grey Firefly-MV
SUBSYSTEM=="usb", ATTR{idVendor}=="1e10", ATTR{idProduct}=="2001", GROUP="plugdev"
Now restart udev for the rules to take effect.
sudo udevadm control --reload
Now show the device properties and they should have changed
andre@eart:~$ ls -la /dev/bus/usb/002/
total 0
drwxr-xr-x 2 root root 80 Jan 27 22:51 .
drwxr-xr-x 13 root root 260 Jan 27 17:33 ..
crw-rw-r-- 1 root root 189, 128 Jan 27 22:33 001
crw-rw-r-- 1 root plugdev 189, 134 Jan 28 00:30 007
You can make sure you’re in the right group by doing
andre@eart:~$ id
uid=1000(andre) gid=1000(andre) groups=1000(andre),4(adm),24(cdrom),27(sudo),30(dip),44(video),46(plugdev),108(lpadmin),124(sambashare)
2. Connect to the camera
Basically you’re going to follow the official tutorial.
2.1 Find the camera’s GUID
Fire up coriander and it should be pretty straightforward. Write down the GUID without the ‘0x’ and without the ‘-‘.

2.2 Find the camera’s image format
Go to the services tab

2.3 Run the camera1394 driver
Now, start the camera1394 driver using the previously discovered parameters. Don’t forget to start roscore first.
andre@eart:~/Documents/elikos/catkin_ws/src/elikos_ros$ rosrun camera1394 camera1394_node _guid:=00b09d010099d8be _video_mode:=640x480_mono8
[ WARN] [1422425449.988805384]: Comparing 00b09d010099d8be to 00b09d010099d8be
[ INFO] [1422425450.007287112]: Found camera with GUID 00b09d010099d8be
[ INFO] [1422425450.007350434]: camera model: Point Grey Research Firefly MV USB FMVU-03MTM
[ INFO] [1422425450.015302245]: [00b09d010099d8be] opened: 640x480_mono8, 15 fps, 400 Mb/s
[ INFO] [1422425450.044556771]: feature exposure value not available from device
[ INFO] [1422425450.047898868]: [00b09d010099d8be] has trigger support
[ INFO] [1422425450.137183791]: using default calibration URL
[ INFO] [1422425450.137351074]: camera calibration URL: file:///home/andre/.ros/camera_info/00b09d010099d8be.yaml
[ INFO] [1422425450.137575209]: Unable to open camera calibration file [/home/andre/.ros/camera_info/00b09d010099d8be.yaml]
[ WARN] [1422425450.137677704]: Camera calibration file /home/andre/.ros/camera_info/00b09d010099d8be.yaml not found.
[ WARN] [1422425450.137774232]: [00b09d010099d8be] calibration does not match video mode (publishing uncalibrated data)
If you want colours, find the bayer format and mode on coriander, and add them on the command line:
rosrun camera1394 camera1394_node _guid:=00b09d0100db6e43 _video_mode:=640x480_mono8 _bayer_pattern:=rggb bayer_mode:=AHD
You should now see the camera topic being published
andre@eart:~/Documents/elikos/catkin_ws$ rostopic list
/camera/camera_info
/camera/image_raw
/camera/image_raw/compressed
/camera/image_raw/compressed/parameter_descriptions
/camera/image_raw/compressed/parameter_updates
/camera/image_raw/compressedDepth
/camera/image_raw/compressedDepth/parameter_descriptions
/camera/image_raw/compressedDepth/parameter_updates
/camera/image_raw/theora
/camera/image_raw/theora/parameter_descriptions
/camera/image_raw/theora/parameter_updates
/camera1394_node/parameter_descriptions
/camera1394_node/parameter_updates
You can view the published images by running
rosrun image_view image_view image:=camera/image_raw Or, if it doesn't work, you can try ` rosrun rqt_image_view rqt_image_view image:=camera/image_raw`
You can record the stream into a bag by doing
rosbag record -a
Later on, you can replay the feed by running
rosbag play [filename]>