WORK IN PROGRESS!
Thanks especially to the marvelous #linux.cz@IRCnet people for all the electrotechnics advice.
Jeff Han inveted a marvelously cool multi-touch screen interface. The moment I have seen the video, I have decided that I want it. So - I started building it. And I'm actually making some progress now.
Currently I have a simple IR LED powered by 5V from a standard computer PSU (so it shouldn't be a problem to power it from USB later) illuminating a tiny piece of acrylate and an IR camera capturing that.
The issue is that I haven't been able to reproduce the actual jhun's setup - the light is not coming through the desk but only around. It actually reflects from the fingers and most other objects closely behind the screen, but it probably won't work on larger distances from the edge, and it doesn't detect the area of contact, only the bottom edge. And there is a problem with shadows when you touch at multiple points in line with the leds.
Two problems: First, the LED is too far away from the acrylate; I will yet have to devise a staging where I can adjust the vertical distance. Second, the acrylate material - I wanted to experiment with a dim material and the ray is simply not coming through; I will try other acrylate materials, but it would be nice to have at least one surface dim so that I could do the rear projection directly on the acrylate (else I don't know what to use for the rear projection yet); not sure how will it affect the total reflection, though.
Still, the current setup probably gives relatively good approximation of how will the final camera input look like, so now I will work on the computer part for a while - implementing the points of touch detection and some simple SDL extension and trivial example application.
I'm not even an amateur in electrotechnics (or optics or anything else; I'm a pure computer geek), so it's all a huge awful hack.
Prices are in CZK; the approximate conversion rate is 1EUR == 28CZK, 1USD == 24CZK. But prices of these things might get quite country-specific. *shrug*
The problem falls to four parts:
Cost: I got few free but tiny samples and the cost per square meter is much higher than I expected - around 1500 CZK given the 6mm width jhun used.
Cost: Extremely cheap if you already have the needed equipment to build the circuit (well, soldering iron; a multimeter is a very good idea, especially using a 20A PSU ;).
You need to make the camera "see in infra-red". That's really quite easy; you need a piece of color film negative (a really small piece will be enough; try asking at your local minilab), then take the camera apart and use it to replace an IR filter right in front of the CCD sensor; detailed instructions are here.
Cost: I've paid around 500 CZK for it.
So, this maps my progress:
IR cam shots from three different acrylate samples I've get:
Sample A - white acrylate, too little opaque.
Sample B - slightly different white acrylate, unusable.
Sample C - much more opaque acrylate but also a lot thinner, 2mm only.
Tomorrow, I will try to get more samples, and also try with clear transparent acrylate.
Using the sample C, few shots I'll use for detecting the points of touch (not very useful now since there was a lot of light in the room; when it's dark it's enough to use the shots as they are and no substraction is required):
A video of how it looks like after a bit of postprocessing...
(c) Petr Baudis <pasky@ucw.cz>