Entwicklung eines infrarotbasierten Multi-Touch-Table unter Einsatz normal erhältlicher Komponenten und moderater Kosten
Spätestens seit dem Jahr 2006 sind Multi Touch Tables recht bekannt, da die ersten Videos von experimentellen Projekten im Internet aufgetaucht sind.
Seitdem haben sich auch zahlreiche kommerzielle Anbieter dem Thema angenommen. Bekanntester Anbieter ist sicherlich Microsoft mit seinem Surface-Projekt.
Während der Erwerb eines solchen kommerziellen Produktes aktuell etwa 10.000 $ kostet, kann ein funktionierender Multi Touch Table aber auch für unter 500 € selbst hergestellt werden.
In diesem Artikel wird versucht, die Erstellung eines solchen low cost Multi Touch Tables möglichst detailiert zu dokumentieren.
Diese Dokumentation ist nicht als Bauanleitung zu verstehen. Jegliche Verwendung dieser Informationen geschieht auf eigene Gefahr und auf eigenes Risiko. Insbesondere - aber nicht ausschließlich - das Entfernen des IR-Filters der verwendeten Webcam birgt bei unsachgemäßer Durchführung das Risiko einer Beschädigung bis hin zum Defekt der Kamera.
Die Funktionsweise eine Multi Touch Tables ist eigentlich sehr einfach - das Geheimnis liegt eigentlich nur in dem optischen Verhalten einer dicken Acrylglas-Scheibe:
Auf die Acrylglas-Scheibe wird seitlich infrarotes Licht gestrahlt.
Durch den Effekt der
Totalreflexion kann das Licht die Acrylglas-Scheibe Scheibe nicht durch die
Glasfläche verlassen. Wird die Glasfläche jedoch berührt, verhindert dies an
dieser Stelle die Totalreflektion. Dort wird Streulicht erzeugt, welches das
Acrylglas verlassen kann.
Filmt man die Scheibe nun von unten mit einer Infrarot-Kamera, so leuchten jene Stellen, an welchen die Finger die Scheibe berühren. Durch Auswertung des Kamerabildes lassen sich diese Bereich isolieren und dadurch Software-Ereignisse ähnlich eines bzw. mehrerer Mauszeigers erzeugen.
Die Kamera für den Multi Touch Table darf nur infrarotes Licht empfangen. Die meisten Webcams sind jedoch auf den normal sichtbaren Bereich optimiert. Darüber hinaus enthalten sie fast immer auch einen Infrarot-Filter, der das Licht im IR-Bereich darüber hinaus herausfiltert.
Natürlich kann man auch digitale Videokameras erwerben, welche das umgekehrte Verhalten aufweisen und somit nur Licht im IR-Bereich aufzeichnen. Während eine normale Webcam für unter 100,- zu bekommen ist, liegt der Preis für eine IR-Kamera in der Regel weit höher.
(Um Missverständnissen vorzubeugen: Mit IR-Kamera ist keine Wärmebildkamera gemeint. Diese kosten meist mehrere Tausend Euro. Hier geht es lediglich darum, den normalen IR Bereich sichtbar zu machen.)
Für eine möglichst gute Qualität des Kamerabildes wird hier als Grundlage eine Logitech QuickCam Pro 9000 Webcam verwendet. Diese verfügt über 2 Megapixel und Carl Zeiss-Optik mit Autofokus, was zu sehr guten und scharfen Ergebnissen führt.
Die Webcam filtert aktuell also noch IR-Licht heraus und zeichnet normales Licht auf. Gewünscht ist aber das Gegenteil. Daher muss zuerst der in der Kamera enthaltene IR-Filter entfernt werden. Anschließend wird ein Filter angebracht, welcher nur IR-Licht passieren lässt.
Um den IR-Filter zu entfernen, muss die Webcam geöffnet werden:
Nun werden Linse und Autofokus abgenommen. Dazu müssen vorher das Lötzinn der
Lötpunkte (siehe Pfeile), mit welchen der Autofokus angeschlossen ist, entfernt
werden.
Auf der Platine verbleibt der Bild-Sensor. Wie alle optischen Bauteile der Kamera
sollte er nicht berührt werden und weder Staub noch Schmutz ausgesetzt werden.
Im angenommenen Autofokus sieht man nun innen bereits den Infrarot-Filter. Es
schimmert leicht rot, wenn man ihn gegen das Licht neigt.
Dieser Filter muss nun entfernt werden. Leider ist er sehr gut eingeklebt und
dazu das Glas noch sehr spröde. Eine einfaches Entfernen an einem Stück ist
daher nahezu unmöglich. Beim heraus hebeln ist unbedingt eine Schutzbrille zu
empfehlen, da kleinste Glassplitter umher fliegen. Zwischenzeitlich sieht der
IR-Filter dann sehr zerkratzt und zerbrochen aus:
Schließlich ist der Filter dann aber entfernt, so dass die darunter liegende
Linse frei liegt.
Nun muss die Webcam nur noch wieder zusammen gebaut werden.
Wahrscheinlich hat sich aber beim heraus hebeln des IR-Filters der Autofokus
verstellt. Vor dem endgültigen Zusammenschrauben des Gehäuses sollte die Kamera
daher noch an einen PC angeschlossen werden. Mit Drehungen an dem Rad des
Autofokus (siehe Pfeil) kann man den Autofokus neu eichen.
Wenn alles geklappt hat, kann die Webcam ab sofort auch infrarotes Licht
erfassen. Mit einer normalen IR-LED sollte es dann bereits so aussehen:
Nun kann die Kamera zwar auch infrarotes Licht sehen - normales Licht wird aber auch noch erfasst. Um ihr dies abzugewöhnen, muss noch ein Filter angebracht werden, welcher nur noch für IR Licht durchlässig ist. Diese Filter sind im Fotohandel für ca.- 30-40 € erhältlich.
Wer es preiswerter wünscht, kann auch ein belichtetes Foto-Negativ verwenden. Dieses muss maximal belichtet sein, d.h. als Negativ komplett schwarz und undurchsichtig sein. Erfreulicherweise hat ein so belichtetes Negativ die Eigenschaft, dass es für IR Licht noch durchlässig ist. Nimmt man zwei bis drei Lagen dieses Negativs übereinander, hat man bereits einen günstigen Filter. Die Qualität ist nicht so perfekt, wie bei einem richtigen Fotofilter, aber für erste Versuche sollte es genügen.
Wer noch eine Wiimote übrig hat, kann auch die kleine schwarze Plastikmaske
verwenden, welche vorn die eingebaute Kamera verdeckt. Da die Kamera der Wiimote
ebenfalls nur IR Licht sehen soll, ist auch diese Plastikabdeckung ein passender
Filter:
Um die Acrylglasscheibe mit infrarotem Licht zu beleuchten, werden
Infrarot-Leuchtdioden verwendet. Für eine gleichmäßige Ausleuchtung und
Positionierung empfiehlt sich die Montage in einer Leiste:
Im hier vorgestellten Projekt werden bei zwei Leisten von 80cm Länge insgesamt 112
IR LEDs im Abstand von 1,5cm verwendet.
Verwendet man IR LEDs mit 1,5 Volt, kann man 8 Stück ohne Widerstand zu 12 Volt
in Reihe schalten und somit leicht mit einem normalen (PC)Netzteil betreiben.
Um die Verkabelung zu testen, benötigt man bereit die modifizierte Webcam, da das
infrarote Licht der LEDs ja mit bloßem Auge nicht zu sehen ist.
Ein erster Test mit einer 5mm Acrylscheibe bringt bereits viel versprechende
Ergebnisse. In der endgültigen Version wird eine Scheibe mit 8mm verwendet, was
das hier noch vorhandene Streulicht verringert. Man kann aber bereits gut das an
den Berührungspunkten der Finger auftretende (und dort auch gewünschte)
Streulicht sehen:
Neben der Acrylschreibe für die Berührungserkennung wird natürlich noch eine Projektionsfläche für die Computergrafik benötigt. Diese muss entsprechend mattiert sein, damit das projizierte Bild auch sichtbar wird.
Um die beste Oberfläche herauszufinden, wurden einige
Versuche durchführt:
1. D-C-Fix transparent
2. Fensterfolie
3.
Mattiert mit 800er Schleifpapier
4. beklebt mit
Transparentpapier
Die Projektionsfläche muss die Grafik gut anzeigen. Gleichzeitig muss aber auch das infrarote Streulicht der darüber liegenden Acrylscheibe gut und möglichst scharf hindurch gelassen werden. Nur so kann die modifizierte Webcam die Berührungen der Finger erfassen.
Die Tests ergaben, dass die Oberfläche 1. und 4. direkt ausscheiden: 1. ist zu transparent und streut das projiziere Licht zu sehr. 4. lässt das IR-Licht nicht ausreichend genug durch. Bleiben noch mattierte Fensterfolie und Behandeln der Oberfläche mit 800er Schleifpapier.
Erster Test der Oberflächen mittels Beamer
Um alle Komponenten des Multi Touch Tables anzuordnen, wird eine entsprechende Konstruktion benötigt. Hier ist als Material Holz gewählt. Der Tisch ist zusammenklappbar und dadurch von einer Person zu tragen und im Kofferraum eines PKW zu transportieren.
Im zusammen geklappten Zustand:
Im aufgeklappten Zustand von der Seite:
Im aufgeklappten Zustand von vorn:
Im aufgebauten Zustand mit eingelegter Projektionsscheibe:
Der Touchtable in funktionsfähigem Zustand. Auf der Projektionsscheibe liegt nun
die Acryl Glasscheibe.
Der Projektor und die IR Webcam werden zusammen per Spiegel umgelenkt:
Eine erste in C# erstellte Testsoftware funktioniert einwandfrei - inklusive
Touchscreen Kalibrierung. Im ersten Test wird unter jedem Finger ein WPF Button
angezeigt:
Zur besseren Wiederverwendbarkeit der Multitouch-Software entstand das FireTouch Framework. Es ist komplett in managed C# Code programmiert und stellt zahlreiche Komponenten von der Erkennung der Webcam-Streams bis hin zu WPF-Steuerelementen und z.B. einem Multitouch-Canvas bereit.
Das FireTouch Framework wurde komplett neu entwickelt und basiert daher nicht auf bereits vorhandenen Bibliotheken wie z.B. touchlib. Der Grund dafür ist, dass die bisherigen Bibliotheken hauptsächlich in unmanaged Code wie C++ erstellt sind und somit bei einem Fehler die dotnet-Anwendung zum Abstutz bringen könnten. FireTouch hingegen erzeugt bei Fehlern korrekte dotnet Ausnahmen, welches sauber behandelt werden können.
Um die Optik und Webcam optimal einstellen zu können, bietet das FireTouch Framework einen Diagnose-Modus mit verschiedenen Ansichten:
Ein Überblick über die verschiedenen Debug-Ansichten:
Eine kleine Demo-Applikation:
Das Framework unterstützt nun auch die Erkennung von Objekten, welche auf der Projektionsfläche aufliegen.
Dazu werden unter den Objekten Barcode-ähnliche Markierungen angebracht. Diese können dann im Webcam-Bild von den aufgelegten Fingern unterschieden und ausgewertet werden.
Zu den erkannten Information zählt auch die Drehung des erkannten Objektes.
Ein Beispiel für die Erkennung von vier Objekten: