In order to track participants movements across the interactive surface we’re using Thermitrack thermal image tracking cameras, mounted on the ceiling above. Although not an inexpensive solution these are reliable and well-tested, unaffected by changes in light (useful when an adjacent wall is made of glass and you’re turning most of the floor into a display!) and do not need illumination. They work by tracking body-heat, plotting coordinates of detected heat-sources and sending them via serial. All processing is done inside the Thermitrack cameras themselves, they are able to detect and track either a single or multiple heat sources within view and send coordinates via serial packets at 30fps.
There are a number of other options available for tracking movements, one of the most popular option at the moment is the Microsoft Kinect, mostly due to its relative inexpense and easy availability . Multiple Kinects would have been needed for the project, their positioning around the area would have been difficult, they would have been less reliable in regard to changing light conditions, their output be slower resulting in a less responsive system and they would have a considerably higher processing overheard than the Thermitrack cameras.
Our first step was to wire up each camera individually and check they were working. As there was no software or drivers available for OS X I fired up an old windows laptop, installed the drivers and Mike’s VB code and pressed go…
After two minutes of warming up, the image on the screen above appeared. The image is from the Thermitracks sat on a coil of Cat5, it shows me waving at the camera with one hand whilst trying to take a picture with the other… This is more difficult as it sounds as when you remain still for more than 8 seconds you fade into the background- each time I focused the camera I looked up to see that I had disappeared from view! In the above image multi-point tracking is turned on, it’s picked me up as two heat sources, this is because I’m rather too close to it and looking at the wrong pane of view (from in front rather than above). Fortunately all of the cameras appear to be working properly, so we moved on…
So, we knew that each of the cameras was working individually, because of the reasonably large surface we are aiming to cover we need four cameras. The Thermitrack lens has a 60* angle of view, meaning that space it covers on the floor is approximately the same as its mounting height- a 3 metre mounting height will equal 3×3 metre coverage. The Thermitrack units have provision for chaining and packet-forwarding, this allows up to 9 cameras to be connected in series to one RS422 interface. I set about making a wire to allow all four cameras to connect to the Thermitrack RS422 to USB interface.
The wiring diagram in the installation guide showed that each camera needed a common earth, and that the data wires should be connected in series. As recommended we also gave each camera a separate fused power-supply. Each camera draws just 250ma, but the fuse lessens the risk of fire or damage if the cable is severed, or if something else is plugged into it. The cabling used throughout is cat5, this is useful as it incredibly cheap and common, easy to terminate and join, and fairly robust. The image below shows how the wires are joined- black and brown are ground and common to all cameras and the interface, green and blue are for transmitting and receiving data and are joined in a ring, and orange is used for power.
If I’d had some to hand I’d have probably made the cable with some strip-board so it looked a little less messy. However, as it is the cable is robust and as it will be situated alongside the computer so I don’t foresee any issues. Each of the cables is terminated with a standard RJ45.
RJ45 couplers are then used to join the cameras to the lead, and power is supplied by an ATX PSU (just out of shot) In this image they’re all sat on the bench in the lab for testing, but they will eventually be located on a different floor to the mac and coupling cable- requiring four runs of cat-5 approximately 25m long.
As there were no drivers available, I set about finding out how to get the serial-port working under OS X. The Thermitrack interface uses an FTDI chip, OS X drivers were available for this, but compatibility for the thermitrack unit was not included. Instructions on the FTDI site showing how to add compatibility for an additional PID, unfortunately after following these instructions I ended up with a kext which wouldn’t load. After lots of kext-loading, swapping between Windows and OS X I eventually got the driver working correctly, and to save future hassle I made a driver installer with the modified info.plist to work with the Thermitrack.
There’s a long way to go yet, we need to get the multi-point data into Ofx and understand it, get multiple cameras working together, install them into the ceiling, calibrate them with the floor and get them working together with the display. Another update soon!