I am Joan Pau, author of the camera1394stereo package, now maintained by a collegue.
This package was created to handle binocular cameras, namely bumblebee2 but it should work with any other IIDC camera supported by libdc1394 producing binocular stereo images using the usual way.
From the system point of view, a firewire IIDC stereo camera is seen as a single device (not two or three), it has a unique GID (device identifier on the firewire bus) and a unique set of parameters (frame rate, video mode, ...). Stereo cameras usually use 'smartly' some video modes to transmit 2 or 3 images at a time (one for each camera).
- For 2 images they use a video mode with 16 bit depth (2 images x 8 bits/pixel) or with 32 bit depth (2 images x 16 bits/pixel).
- For 3 images they use a video mode with 24 bit depth (3 images x 8 bits/pixel).
Depending on the camera each single image is either mono or has color information encoded in Bayer pattern indicated by the manufacturer.
For the Bumblebee XB3 this is described in section Stereo Image Formats here:
http://www.ptgrey.com/support/downloads/documents/Bumblebee%20XB3%20Getting%20Started%20Manual.pdf
The camera1394stereo driver is just a copy of the camera1394 one, but with the added functionality to deinterleave the stereo image into two separated images and publish them to two different topics (left and right) with the corresponding camera info topic. So in your case it won't work for a stereo camera with 3 images.
However, you can use the following approach. Use a camera1394 nodelet to grab and publish the 24 bit depth images from the bumblebeeXB3 as if it was a mono camera. Here you can set the frame rate and the other camera parameters. And write a simple nodelet that subscribes to an image topic and deinterlaces the input images, publishing 3 output images to the corresponding output image topics (left, center and right) each one with the corresponding camera info. This should be quite easy to implement (even though it would add some overhead, for which I would not worry if using nodelets because images are not copied). For the camera info part the CameraInfoManager already does the job, you just have to use three instances (one for each output topic):
http://www.ros.org/wiki/camera_info_manager
Actually, it might be even useful to have this included in the image_proc chain: a stereo_split or stereo_decompose nodelet, wich subscribes to an input image topic and decomposes it according to the following parameters:
- number of output images,
- their pixel bit depth,
- the stereo mode (how pixels from each camera are merged in the stereo image)
This same nodelet should provide the camera info topics for each of the output images, the camera info of the original stereo image should be simply ignored.
Sorry for the long response.