Optical time-of-flight range cameras work with a modulated visible infrared light source. The emitted light pulses are reflected by the objects in a scene, traveling back to the camera, where their precise time of arrival is measured locally in each "smart" pixel of a custom image sensor. In contrast with conventional cameras, time-of-flight range cameras are able not only to determine the local brightness in a scene but also the complete distance map of the camera's environment. The distance resolution is limited by the amount of available reflected light and the timing precision of the camera's electronics. Thanks to the continuing advances of solid-state technology, the measurement precision today reaches the millimeter range.
In order to be able to demonstrate the results of this technique, the output data from the special sensor chip has to be transmitted to the outside world - either to a PC for display, or to external electronics for further evaluation and interpretation. The first project implementation achieved this by transferring the data, both black/white intensity and the complete distance map, via a parallel port interface 4 bits at a time. It quickly became apparent that this technique was far too slow and that a USB interface would be more appropriate for transferring the large amount of data at frame rate or above to provide real-time operation.
3D false color image
WinDriver USB in CSEM's 3D Camera
The company's initial intention was to develop a WDM driver for the Windows environment by making use of the DDK provided by Microsoft. Having no previous experience of writing drivers for Windows, it took some time to appreciate the complexity of the task and they began looking for alternative approaches. "After searching for some time, we came across a reference in a newsgroup to the ease of USB driver development offered by WinDriver", said Graham K. Lang CSEM's software developer. "Using the evaluation version of WinDriver, we were very quickly able to establish that the firmware already developed on the device side was performing correctly and automatically to generate a console program to communicate with the camera". The next stage was straightforward - they replaced the C functions and assembly language previously used for communication with the camera by function calls extracted from the source code generated by WinDriver.
Since then, several different versions of the camera interface have been developed. In each case, in addition to the control pipe, two bulk pipes were used - an output pipe to extract data from the camera and an input pipe to enable the setting up of camera parameters, including region of interest [ROI], integration time, display options, etc.
For the USB 1.1 versions CSEM used the FT245AM and FT245BM chips from FTDI and, more recently, the CY7C68013 chip from Cypress for USB 2.0. For all these chips, the generation of the necessary driver function calls and INF files has been a minor part of the development effort - typically a matter of minutes - allowing them to concentrate their attention fully on the details of the application itself.
Company description
CSEM SA, the Swiss Center for Electronics and Microtechnology, is a privately held company carrying out applied research, product development and prototype production. CSEM is principally active in the fields of micro- and nano-technology, microelectronics, systems engineering and photonics. Partial government funding also supports PhD and other diploma work.
For more information, please visit CSEM's website at: http://www.swissranger.ch/