Wiimote Whiteboard
Moritz Kirchner, Thomas Monninger
Wiimote Whiteboard
In einer Zusammenarbeit zwischen dem IWR und dem Archäologischen Institut werden Keilschriften antiker Steintafeln analysiert. Diese Keilschriften werden per Laserscanner abgetastet und auf den Computer übertragen. Anhand der Scandaten werden Vektorgrafiken der Keilschriften erstellt. Dennoch müssen, auf Grund von Scanfehlern, Unleserlichkeiten bzw. wegen Vektorgrafiken, die vor der Laserscannerzeit erstellt wurden, Keilschriften von Hand mit einem Vektorprogramm nachgezeichnet werden. Dazu wurden entweder Touchscreens oder Grafiktablets eingesetzt. Beide Möglichkeiten sind teuer. Beim Grafiktablet kommt hinzu, dass die Bedienung nicht intuitiv ist und dem Nachmalen am Bildschirm nicht gleichzusetzen ist. Ziel des Softwarepraktikums war eine Machbarkeitsstudie, die untersuchen sollte ob Touchscreens oder Grafiktablets durch den geschickten Einsatz einer Wiimote (Eingabegerät der Nintendo Wii) ersetzt werden könnten.

Dazu sollte zunächst die Anbindung der Wiimote an einen Computer mit Linux-Betriebssystem über Bluetooth untersucht werden. Der nächste Schritt sollte der Bau eines Infrarotstiftprototypen sein um danach eine einsatzfähige Arbeitsumgebung bauen zu können.
Für die Anbindung der Wiimote an einen Computer verwendeten wir ein handelsübliches USB-Bluetooth-Dongle. Unter Ubuntu wurde das Softwarepaket bluetooth für die Kommunikation mit blueZ-Stack und die Pakete libcwiid1 bzw. python-cwiid als (python-)API für die Wiimote benötigt. Der ursprüngliche Plan die Software von Grund auf neu zu schreiben wurde schnell fallengelassen als wir die Applikation python-whiteboard mit nahezu gewünschter Funktionalität auf GitHub fanden. Darüber hinaus untersuchten wir inwieweit eine eigene Anbindung mit einem python-Maustreiber besser ist als die o.g. Applikation. Wobei keine Unterschiede festzustellen waren, sodass wir uns für die Weiterarbeit mit python-whiteboard entschieden.

Probleme gab es im Test mit dem Abstand der Wiimote zur anzeigenden Oberfläche (Bildschirm/Wand bei der Verwendung eines Beamers). Der Abstand musste, besonders zur Wand, auf Grund des Erfassungswinkels so groß gewählt werden, dass das Infrarotsignal zu schwach für die Erkennung wurde. Ein weiteres Problem war, dass python-whiteboard nur den Umgang mit einer Wiimote erlaubt. Eine zweite Wiimote konnte damit keine Verbesserung bringen. Dazu kam, dass die Software, besonders in der Erkennung und Anbindung der Wiimote, nicht fehlerfrei war und einige Male den Dienst vorübergehend verweigerte.
Die ersten Tests wurden mit einem simplen Aufbau aus Akkupack(2x Typ AAA), Widerstand und Infrarot-LED(3mm) vollzogen. Durch die geringe Lichtstärke der LED war dieser Aufbau ausschließlich für Versuche innerhalb einer Entfernung von 2m zu verwenden. Hinzu kommt, dass das Aus- bzw. Einschalten mittels an- bzw. abklemmen des Akkupacks geregelt wurde.

Erster Prototyp
Der erste verwendbare Prototyp wurde mit einer stärkeren, größeren(5mm) LED ausgestattet. Hinzu kommt die Verwendung des richtigen Widerstands (der mitgelieferte Widerstand entsprach nicht der passenden Ohmzahl). Ein eingebauter Tippschalter ermöglichte zielgerichtetes Einschalten der LED.

Zweiter Prototyp
Highslide JS
Zweiter Prototyp eines IR-Stifts.

Highslide JS
Zweiter Prototyp eines IR-Stifts (Schema).
Um näher an das Vorbild eines Whiteboards heranzureichen verwendeten wir für diesen Prototypen eine leere Hülle eines Edding-Stifts. Die IR-LED ersetzte die Stiftspitze und wurde mit Hilfe der Feder eines Kugelschreibers auf einem Tippschalter im Inneren des Stifts montiert. Dadurch wurde ein drucksensibles einschalten der LED ermöglicht. Da die Hülle nur wenig Platz bot, der Feder/Schalter-Aufbau jedoch viel Raum einnahm hatte nur noch ein Akku (Typ AAA) in dem Aufbau platz. Dies führte zu einer deutlich erkennbaren reduzierten Lichtstärke der LED. Ursprünglich hätte der Prototyp anstatt des Feder/Schalter-Aufbaus lediglich mit einem Taster an der Stiftspitze ausgestattet werden sollen. Da dadurch aber keine Positionierung der LED mehr möglich war musste diese einfachere Lösung der tatsächlichen weichen. Ein weiteres Problem das auffiel war der Abstrahlwinkel der LED. Im Gegensatz zu einem IR-Laser streut eine LED das ausgesendete Licht, was widerrum zu einer Unschärfe in der Erkennung führt. Umgehen ließe sich dieses Problem nur durch aufwendige optische Verbesserungen (Linsen, Spiegel, ...), die uns aus Kostengründen nicht zur Verfügung standen. Ein weiterer Punkt, der gegen die Benutzung des Prototyps sprach war das, trotz der Verwendung nur eines Akkus, hohe Gewicht. Ausserdem ließ sich der zweite Prototyp nicht wie gehofft verwenden, da der Widerstand zwischen der druckemfpindlichen LED und jeder von uns getesteten Oberfläche zu hoch war, als dass ein flüssiges Schreiben möglich gewesen wäre.

Dritter Prototyp
Highslide JS
Dritter Prototyp eines IR-Stifts.

Highslide JS
Dritter Prototyp eines IR-Stifts (Schema).
Vor allem Aufgrund des letzen Umstands, haben wir uns letztendlich für den Bau eines dritten Prototypen entschieden. Dieser sollte möglichst einfach sein und nicht aus viel mehr als einer LED als Stiftspitze und einem Tippschalter, der per Finger bedient wird, bestehen. Da der Sensorschalter im vorderen Teil des Stifts wegfiel war soviel Platz, dass der Akku komplett in das Gehäuse integriert werden konnte, was sich positiv auf den Schwerpunkt auswirkte. Gleichzeitig war die Integration des Akkus ein Problem, da die Stiftlänge nun so kurz war, dass er nur noch schlecht zu greifen war und die Stifthaltung unnatürlich wurde.






Vierter Prototyp
Highslide JS
Vierter Prototyp eines IR-Stifts.
Der vierte und damit finale Prototyp war lediglich eine Erweiterung des dritten Prototyps um dessen Fehler auszubessern. Die geringe Lichtstärke durch die Verwendung von nur einem Akku (siehe 2./3. Prototyp) war das größte Problem, dass es zu beseitigen galt. Da die Stiftlänge ohnehin nicht ausreichte wurde kurzerhand der zweite Akku als Stiftverlängerung angebracht. Somit konnten zwei Fliegen mit einer Klappe geschlagen werden. Bisher wurde nicht berücksichtigt, dass die Akkus irgendwann geladen werden müssen. Da wir Heißkleber und Strukturklebeband verwendeten kam ein einfaches Herausnehmen der Akkus nicht in Frage. Zwei Ladedrähte, an die ein Ladeadapter gelötet werden kann, lösten das Problem.
Vertikale Projektionsfläche
Der erste Arbeitsplatz, der erprobt wurde, war mit starkem Bezug auf das Ursprüngliche Projekt, ein Whiteboard zu bauen. Deswegen fanden unsere ersten Tests an einer vertikalen Projektioinsfläche statt. Während unserer Tests fanden wir heraus, dass sich eine vertikale Projektionsfläche nicht gut für das dauerhafte und präzise Arbeiten eignet. Unsere Hauptprobleme:
  • Der Schatten der Hand verhindert die Sicht auf das von hinten projizierte Bild
  • bei längerem Arbeiten ist eine stehende Arbeitsposition sehr unbequem
  • der Abstrahlwinkel der LED ist direkt nach vorne. Eine präzise Erfassung ist damit nahezu unmöglich
  • die Oberfläche reflektiert die IR Strahlung nicht gut, was in der Natur einer Leinwand liegt

Horizontale Arbeitsfläche
Vor allem die unbequeme Arbeitsposition brachte uns zu der Überlegung, dass eine horizontale Arbeitsfläche besser geeignet ist. Wir erprobten eine Tischprojektion, verwarfen diese aber recht schnell aus folgenden Gründen:
  • Projektionsabstand zwischen Beamer und Tisch um eine annehmbar große Arbeitsfläche herzustellen,
    erscheint schwierig
  • das gleiche Argument gilt auch im Hinblick auf die Mobilität oder geteilten Arbeitsplatz
  • der Schatten der eigenen Hand blieb weiterhin ein Problem
  • die Anbringung der Wiimote in der Nähe des Beamers wurde so deutlich schwieriger
Unser nächster Schritt, war die Erprobung eines TFT Monitors. Um ihn vor Kratzern und Druckstellen zu schützen, passten wir eine Plexiglasscheibe ein, die das komplette Display abdeckt und in den Rahmen des Monitors passt. Der Monitor ist die bestmögliche Lösung bisher, denn:
  • das Arbeiten erfolgt sehr ähnlich wie mit einem Grafiktablett
  • der Montior erlaubt das Ausschließen jeglicher Schatten der Hand auf dem Bild
  • der Aufbau ist viel unkomplizierter als mit einer Tischprojektion
  • die Wii-Mote ist leichter Anzubringen, z.B. mit Hilfe eines Stativs
    Ausrichten der Wiimote mit Hilfe eines Stativs.
    oder Klebeband
    Ausrichten der Wiimote mit Hilfe eines Stuhls,Pappe und Klebeband.
Um in einer Produktivumgebung mit dem Whiteboard zu arbeiten stellten wir fest, dass die Präzision, mit der die Infrarotsignale erkannt werden, unzureichend war.

Präzisionserhöhung durch Einsatz mehrerer Wiimotes
Highslide JS
Verwendung mehrerer Wiimotes zur Präzisionserhöhung.
Unsere Idee war, mehrere Wiimotes einzusetzen. Jeder Wiimote sollte eine Koordinate zugeordnet werden. Der Versuchsaufbau enthielt jeweils eine Wiimote für X- bzw. Y-Koordinate. Da hierbei, auf Grund der Projektionsumrechnung, die Whiteboard-Applikation nicht mehr genutzt werden konnte, programmierten wir uns eine eigene Testapplikation. Von jeder Wiimote sollte nur die Positionsdaten des X-Wertes übernommen werden. Die X-Werte der zweiten Wiimote stellten die Y-Koordinate dar. Mit einer API für Mausbewegungen setzten wir die Koordinatenwerte in Bewegungen des Mauszeigers um. Was wir nicht bedacht hatten war, dass die Ausrichtung beider Wiimotes extrem präzise sein muss, um die volle Arbeitsfläche zu erfassen und gleichzeitig so nahe an der Fläche zu bleiben, dass das Signal nicht zu schwach wird. Da die Wiimotes nicht so präzise eingesetzt werden(Abtastwinkel entspricht nicht der theoretischen Angabe) konnten wurde diese Idee der Präzisionserhöhung wieder verworfen.

Präzisionserhöhung durch Mittelwertbildung
Highslide JS
Einstellbare Schwellenwerte.



Highslide JS
Euklidisches Limit.
Unsere Beobachtungen zeigten, dass pro Klick mit dem IR-Stift im Schnitt etwa 8 Signale durch die Wiimote empfangen werden. Bei stillstehender Siftspitze sollte man 8 gleiche Werte erwarten. In der Praxis kommen allerdings Werte mit einer unberechenbaren Streuung am Empfangsgerät an. Grund dafür sind Unebenheiten in der Oberfläche und, damit verbunden, Spiegelungen, die das Signal verfälschen. Die Mehrheit der verfälschten Daten liegt nahe am tatsächlichen Wert, was im unbearbeiteten Zustand zu einem Wackeln des Mauszeigers führt. Vereinzelt treten Ausreißer auf, die den Mauszeiger kurzzeitig über die Projektionsfläche rasen lassen. Um dem Mauswackeln entgegen zu wirken entwickelten wir einen Datenfilter zur Mittelwertbildung. Die eingehenden Signale werden dabei auf ihren Zeitstempel und ihre örtliche Abweichung hin analysiert. Als Referenzwert dient ein Startsignal. Liegt der Zeitstempel eines eingehenden Signals innerhalb eines eingestellten deltas wird der Wert gespeichert. Liegt ein Folgewert über delta aber innerhalb eines eingestellten limits wird der Mittelwert über dem aktuellen Signal und den gespeicherten Signalwerten gebildet und als Mausbewegung ausgegeben. Liegt der Wert über dem limit oder übersteigt der euklidische Abstand des Werts ein euklidisches limit werden alle gespeicherten Werte verworfen. Der aktuelle Wert wird daraufhin zum neuen Referenzwert.
In der Praxis ließ sich für die Werte
  • delta = 0.04
  • limit = 0.5
  • euklidlimit = 20
eine Optimierung erzielen.

Die Testapplikation(Erweiterung.py) findet sich in den Downloads.
Innerhalb des Praktikums kamen einige Ideen auf, wie man das Whiteboard optimieren könnte. Aus Zeit- und Geldgründen konnten wir folgende Punkte nicht umsetzen. Sie sollen aber zukünftigen Praktikanten die die Whiteboard-Idee aufgreifen zeigen, was noch möglich wäre:
  • Umsetzung von Stiftgesten
    Ähnlich wie bei Mausgesten wäre es möglich besondere Befehle(z.B. Hin-/Herauszoomen) mit Stiftgesten umzusetzen.
  • Glas statt Plexiglas
    Wie bereits erwähnt sorgt der Einsatz einer Plexiglasscheibe für Unebenheiten und damit zu ungewollten Spiegelungen auf der Oberfläche. Eine starre Glasscheibe könnte dieses Problem verhindern.
  • IR-Laser/Linsen
    Da IR-LEDs das ausgesendete Licht nicht punktgenau ausstrahlen entsteht eine gewisse Unschärfe. Abhilfe könnte dabei ein IR-Laser oder der Einsatz von Linsen schaffen.
  • (Multi-)Touchscreen
    Das, was eigentlich durch das Praktikumsergebnis ersetzt werden soll ist vielleicht doch die zwar teurere jedoch präzisere Lösung. Touchscreens mit Multitouch erlauben zudem besondere Befehle für das Zoomen der Arbeitsfläche.