Hintergrund
Spätestens seit dem Jahr 2006 sind Multi Touch Table 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 Table möglichst detailliert zu dokumentieren. Der Text 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.
Wie funktioniert ein Multi Touch Table?
Die Funktionsweise eines MultiTouch-Table 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.
Totalreflektion und Streulicht bei MultiTouch-Table:
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 Infrarot-Kamera
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.
Aus der Webcam wird eine Infrarot-Kamera
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:
Die Infrarot-LED-Leisten
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:
Die Projektionsfläche
Neben der Acrylscheibe 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:
- D-C-Fix transparent
- Fensterfolie
- Mattiert mit 800er Schleifpapier
- 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
Die Hardware
Um alle Komponenten des MultiTouchTable 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:
Die Software
Eine erste in C# erstellte Testsoftware funktioniert einwandfrei - inklusive Touchscreen Kalibrierung. Im ersten Test wird unter jedem Finger ein WPF Button angezeigt:
Das FireTouch Framework
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 Absturz 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:
Roh-Modus - zeigt das Bild wie es von der Webcam geliefert wird
Helle Bereiche - zeigt das Bild, bereinigt um statische Bereiche und unter Berücksichtigung ungleichmäßiger Ausleuchtung der Fläche durch die IR-LEDs )
Farb-Visualisierung - der Abstand der Finger von der Glasscheibe wird in Farben dargestellt: Weiss liegt direkt auf der Scheibe auf. Von Blau über Grün nach Rot nimmt dann der Abstand immer weiter zu, bis die weit entfernten Bereiche schwarz dargestellt werden. Zusätzlich sind bereits erkannte Finger durch weiße Rechtecke markiert.
Ein Überblick über die verschiedenen Debug-Ansichten:
Eine kleine Demo-Applikation:
Objekt-Erkennung
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: