Data Acquisition with Gpiv c.s.

Image recording for Digital PIV generally needs the following components: an electronic (CCD or CMOS) camera that allows external triggering, a (double-headed Nd-YAG) laser, trigger electronincs for firing the lasers when the camera shutter is open with well pre-scribed separation time between subsequent recordings and optics for re-shaping the laser beam into a lightsheet.
For Gpiv c.s. recording may be performed by a camera using the (IIDC-compliant) IEEE-1394 (Firewire) protocol. The software uses the libraries libraw1394 and libdc1394 for controlling the camera and reading the images. While we had a close look at the Coriander project for implementing the Graphic User Interface for Gpiv. Principally, all cameras using external triggering that are listed to work with Coriander will also work with this software. A remark should be made that the for Digital PIV popular PCO camera's are not IIDC-compliant, even though these camera's appear on the list. So, any enthousiastic programmer is challenged to write a driver program for Linux, especially for 2.6 ;).

The Gpiv system does not need additional electronics for triggering the camera and lasers. Triggering is performed by Realtime Linux and Real Time Application Interface (RTAI). The trigger pulses are obtained from the parallel port of a PC. Thanks to the contribution of Julio Soria who provided the core of the triggering software. Installation of the triggering software (a kernel module) is not straightforward. Please, read the instructions for installation carefully.


It should be noted that the Data Acquisition algorithm is still quite prelimary. Recording of the images has been tested with the iBOT webcam from Orange Micro Inc.. RTAI (version 3.1) has been tested with the included testsuite on a Pentium III with 700 MHz clock frequency under the (adeos-patched) linux-2.4.27 kernel. Latency tests resulted in maximum times of less then 10 micro seconds. Therefore, separation times between subsequent recordings of an image pair should be equal or larger than 1 ms in order to keep the timing accuracies below 1%. It will have to be figured out whether the scatter in the timings of pulses to the camera and lasers are related to each other. In case the scatter in latency times are in phase and of equal magnitue, the separation timings might probably be choosen shorter. (Whishfull thinking here.) Any help from outside is welcome. A similar testing program as distributed with the RTAI package may give more information and electronic tests need a high-performance (digital) oscilloscope.
The trigger signals have been tested on an oscilloscope. The TTL pulses to the lasers have been triggered by the pulses of the camera. Delay times from 1 millisecond to 20 milliseconds displayed reliable results with jitter below 20 microseconds.


Install the RTAI 3.1 or newer following the instructions. This includes patching a linux kernel (I used 2.4.27), disabling kernel module version (else the configuration of RTAI will complain), configuring, building and installing the kernel and the RTAI package. Copy or symlink the RTAI modules to the kernel module directory (mostly at /lib/modules/kernel-version). In that case the loading and unloading of the modules is easy done with modprobe and rmmod.

The software containing the triggering module is packaged separately. It may be configured and build with "./configure" and "make". The building system of the module is quite premature, but seems to work. Any help for improving the building system of this package is welcome. For the moment, the kernel version, location of kernel and rtai header-files will have to be defined manually during launching ./configure with --enable-module, --enable-rta and --enable-k (see ./configure --help).

Gerber van der Graaf
email: gerber_graaf AT users DOT sourceforge DOT net

Last modified: Mon Nov 17 09:34:11 CET 2008