Overview

This package provides a ROS interface for digital cameras meeting the IEEE 1394 IIDC standard using libdc1394, which supports many camera makes and models. Of the thousands of IIDC models, we are accumulating a list of cameras tested with this driver.

It works with the ROS image_pipeline like other streaming camera_drivers.

This is a purely monocular driver, stereo applications need a separate driver node for each camera of the pair.

No C++ API is provided. There are no utility commands or launch files.

Road Map

The camera1394_node driver was first released with ROS C-Turtle. A number of API changes were made during the pre-release review process. That API is now stable.

C-turtle Limitations

The current driver has several significant limitations, some are removed in later releases.

IIDC Options

Several IIDC options are not supported in the current release:

  • Format 6 or 7 modes
  • The mono16 modes

  • Trigger support

Stereo Image Synchronization

It is possible to combine two monocular 1394 cameras to produce a stereo image if they are configured to trigger at the same time. Some IIDC cameras provide hardware trigger synchronization for this purpose.

Unfortunately, the C-turtle stereo_image_proc requires message timestamps for both images to match exactly, which the camera1394 driver does not do. Later releases of stereo_image_proc provide a cleaner solution for this problem (enhancement #4217). For C-turtle, the timestamps would need to be matched by an additional node, not provided in that release.

Box Turtle Prototype

The Box Turtle prototype was an experimental version of this driver developed using the ROS Box Turtle release. It provided a slightly different API than the supported C-Turtle driver. That version is no longer supported.

Features

The IIDC specification lists a number of optional features that may be provided by conforming camera implementations. Many are supported by the driver as parameters. While the spec mentions the names of these features, it does not define what they do. Consult the technical specifications of the camera: manufacturers have great latitude in determining which features to support, what values they can take, and the meanings of those values.

For each supported feature there is a corresponding auto_ parameter providing user control. Different cameras handle these controls in various ways.

The control states are:

  • Off(0): turns the feature off (if possible)

  • Query(1): returns the current mode and (if possible) the value of the feature, with no change to the device

  • Auto(2): the camera sets the value continuously (if possible)

  • Manual(3): sets a specific value from the corresponding parameter (if possible)

  • OnePush(4): the camera sets the value once, then holds it constant (if possible)

  • None(5): the camera does not provide this feature

When setting an IIDC feature to a specific value, it is necessary to set the corresponding control state to Manual (3), otherwise the corresponding value will be ignored unless the device is already in the Manual state when the driver starts.

For example, to set brightness to 256 on the command line:

$ rosrun camera1394 camera1394_node _auto_brightness:=3 _brightness:=256.0

Bayer filtering

Many IIDC cameras use Bayer filtering to provide color information. For cameras of this type, set video_mode to an appropriate mono8 value, and select the correct bayer_pattern. If the bayer_pattern is "", all mono8 images are monochrome.

Note: Bayer decoding of mono16 video modes is not supported in this release.

This driver provides two alternate mechanisms for decoding Bayer color information:

  • Standard ROS image_pipeline decoding.

    To use this, set the bayer_method parameter to "" (the default). This is the preferred method, it behaves like the other ROS camera drivers.

  • Built-in decoding provided by libdc1394 conversions.

    To use this, select one of the other bayer_method options. They may have less CPU overhead in some systems, in others they may slow down the camera frame rate since decoding is done in the main driver thread. Performance depends on image size, decoding method, CPU speed and number of processors available. Experimenting with the different options may reveal the best setting for a specific camera and system.

In both cases the camera/image_raw image stream is compatible with the ROS image_pipeline.

ROS API

camera1394_node

IEEE 1394 digital camera driver.

Published Topics

camera/image_raw (sensor_msgs/Image)
  • A stream of images from the camera.
camera/camera_info (sensor_msgs/CameraInfo)
  • Camera intrinsics for images published on camera/image_raw with matching time stamps and frame IDs. If CameraInfo calibration is not available or is incompatible with the current video_mode, uncalibrated data will be provided instead.

Services

camera/set_camera_info (sensor_msgs/SetCameraInfo)
  • Set the camera's calibration.

Parameters

Additional Reconfigurable Parameters
New in camera_drivers 1.2.5
~reset_on_open (bool, default: True)
  • Reset camera when opening the device.
Dynamically Reconfigurable Parameters
See the dynamic_reconfigure package for details on dynamically reconfigurable parameters.
~guid (str, default: )
  • Global Unique ID of camera, 16 hex digits (use first camera if null).
~video_mode (str, default: 640x480_mono8)
  • IIDC video mode. Possible values are: Format0_Mode0 (160x120_yuv444): , Format0_Mode1 (320x240_yuv422): , Format0_Mode2 (640x480_yuv411): , Format0_Mode3 (640x480_yuv422): , Format0_Mode4 (640x480_rgb8): , Format0_Mode5 (640x480_mono8): , Format1_Mode0 (800x600_yuv422): , Format1_Mode1 (800x600_rgb8): , Format1_Mode2 (800x600_mono8): , Format1_Mode3 (1024x768_yuv422): , Format1_Mode4 (1024x768_rgb8): , Format1_Mode5 (1024x768_mono8): , Format2_Mode0 (1280x960_yuv422): , Format2_Mode1 (1280x960_rgb8): , Format2_Mode2 (1280x960_mono8): , Format2_Mode3 (1600x1200_yuv422): , Format2_Mode4 (1600x1200_rgb8): , Format2_Mode5 (1600x1200_mono8):
~frame_id (str, default: camera)
  • ROS tf frame of reference, resolved with tf_prefix unless absolute.
~frame_rate (double, default: 15.0)
  • Camera speed (frames per second). Range: 1.875 to 240.0
~iso_speed (int, default: 400)
  • Total IEEE 1394 bus bandwidth (Megabits/second). Range: 100 to 3200
~camera_info_url (str, default: ) ~bayer_pattern (str, default: )
  • Bayer color encoding pattern (default: ""). Possible values are: "": No Bayer encoding, "rggb" , "gbrg" , "grbg" , "bggr"
~bayer_method (str, default: )
  • Bayer decoding method (default: ROS image_proc). Possible values are: "": Decode via ROS image_proc, "DownSample", "Simple", "Bilinear", "HQ", "VNG", "AHD"
~auto_brightness (int, default: 1)
  • Brightness control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~brightness (double, default: 0.0)
  • Black level offset. Range: 0.0 to 4095.0
~auto_exposure (int, default: 1)
  • Combined Gain, Iris & Shutter control. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~exposure (double, default: 0.0)
  • Auto exposure value (like contrast). Range: -10.0 to 4095.0
~auto_gain (int, default: 1)
  • Gain control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~gain (double, default: 0.0)
  • Relative circuit gain. Range: -10.0 to 4095.0
~auto_gamma (int, default: 1)
  • Gamma control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~gamma (double, default: 2.2)
  • Gamma expansion exponent. Range: 0.0 to 10.0
~auto_hue (int, default: 1)
  • Hue control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~hue (double, default: 0.0)
  • Color phase. Range: 0.0 to 4095.0
~auto_iris (int, default: 1)
  • Iris control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~iris (double, default: 8.0)
  • Iris control. Range: 0.0 to 4095.0
~auto_saturation (int, default: 1)
  • Saturation control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~saturation (double, default: 1.0)
  • Color saturation. Range: 0.0 to 4095.0
~auto_sharpness (int, default: 1)
  • Sharpness control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~sharpness (double, default: 1.0)
  • Image sharpness. Range: 0.0 to 4095.0
~auto_shutter (int, default: 1)
  • Shutter control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~shutter (double, default: 1.0)
  • Shutter speed. Range: 0.0 to 4095.0
~auto_white_balance (int, default: 1)
  • White balance control state. Possible values are: Off (0): Use fixed value, Query (1): Query current values, Auto (2): Camera sets continuously, Manual (3): Use explicit value, OnePush (4): Camera sets once, None (5): Feature not available
~white_balance_BU (double, default: 0.0)
  • Blue or U component of white balance. Range: 0.0 to 4095.0
~white_balance_RV (double, default: 0.0)
  • Red or V component of white balance. Range: 0.0 to 4095.0

Wiki: camera1394/Cturtle (last edited 2012-03-15 15:01:59 by JackOQuin)