Synchronizing image acquisition of multiple FireWire cameras.
Last Revision Date: 8/27/2015
This article describes how to synchronize the image acquisition of multiple Firewire cameras in a variety of different configurations.
Synchronizing Cameras on the Same 1394 Bus
The Applicable Products listed above, with some exceptions, are automatically synchronized to each other at the hardware level when they are on the same IEEE-1394 bus and running at the same frame rate. This is a feature of the cameras themselves, and is independent of the host system, camera drivers or software. For a list of exceptions, consult your camera's Technical Reference manual. A single IEEE-1394 OHCI host adapter card generally constitutes a single “bus”.
NOTE: See "Maximum Number of IEEE-1394 cameras on a single 1934 bus" to determine the maximum number of cameras that can be on one bus.
Synchronizing Cameras Across Different 1394 Buses
Cameras that are on separate 1394 buses, either on the same host system (e.g. PC) or across multiple host systems, are not automatically synchronized to each other. To synchronize cameras in these cases without externally triggering the cameras requires the following product:
MultiSync2™ - a software application that synchronizes the image acquisition of multiple compatible cameras across separate buses on the same computer, and across separate buses on multiple computers. MultiSync2 has support for the S800 (800Mb/s) speeds that are possible with our IEEE-1394b products. MultiSync2 works with both Windows and Linux.
Accuracy of Synchronization
Cameras that are synchronized and running in continuous shot (free-running) are synchronized to within 125 µs (microseconds) of each other. NOTE: 125 µs (one iso cycle) is the maximum deviation. Synchronization is done to the end of shutter (integration), so the start of integration (shutter open) will not be synchronized when the shutter times are different between cameras. For applications that require the start of integration to be synchronized, users can either make the shutter times the same or externally trigger the camera.
Testing Synchronization
The most effective way of testing the synchronization between cameras is to configure each camera to output a strobe pulse off one of its GPIO pins, then use an oscilliscope to monitor the strobe outputs. Provided the shutter times are the same for all cameras, the strobe pulses from each of the cameras should be aligned. In cases where the shutter times are different, the time between strobe pulses will be offset by the difference in shutter times.
Another way of testing inter-camera synchronization is to use either the TimeSliceDemo or MultipleCameraEx example programs that come with the FlyCapture SDK. These programs use the camera's image timestamping functionality to check synchronization. If the cameras are synchronized, the image timestamps should be within 125us (one cycle count) of each other, regardless of the individual camera shutter times (timestamps reflect the end of integration).
Offsetting / Delaying Camera Synchronization
Some applications may require that the camera synchronization be offset by a specific amount of time. To delay the end of integration of one camera relative to another, use the TRIGGER_DELAY register 0x834 or the FRAME_SYNC_OFFSET register 0x1244 (Dragonfly only).