ErlernBar

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Das Spiel „Bartender“ inspirierte uns dazu, ein Barkeeper Tutorial zu entwerfen, welches aber auch interaktiv sein sollte. Mithilfe dieses Programms erlernt man schnell, wie man einen Cocktail richtig mischt.

Ablauf

Am Anfang des Tutorials wählt man sich ein Rezept, welches nachfolgend angezeigt wird. Dabei wählt man die Zutat, fügt sie in das Glas ein, diese wird gemessen. Man bekommt dazu ein Feedback. Dies führt man solange aus, bis der Cocktail vollständig zubereitet ist. Anschließend kehrt man auf die Startseite zurück und könnte mit einem anderen Cocktail beginnen.


Konzept

Die ursprüngliche Idee war es, einen Multitouchtisch zu verwenden, da er sich gut für die Markererkennung eignet, welche man für die Flaschenidentifizierung benötigt. Dies war notwendig, um die Füllmenge über die Dichte festzustellen, was wie folgt funktionieren sollte: Durch die Identifizierung der entnommenen Flasche wird mithilfe dieser Dichte und des Gewichts die Füllmenge bestimmt. Das Gewicht sollte über Gewichtssensoren ermittelt werden, die an dem Tisch angebracht werden. Folglich bekommt man ein Feedback über die eingefüllte Menge, ob sie zu gering ist (was man schnell beheben kann) oder ob der Füllwert überschritten wurde. Die Füllmenge berechnet sich über Gewicht und Dichte folgendermaßen: Volumen = Masse/ Dichte . Da ein Multitouchtisch nicht optimal für dieses Projekt ist, haben wir uns für eine einfache Projektion auf einen Tisch entschieden. Ein Problem bei Verwendung dieses Multitouchtisches würden Flüssigkeiten auf der Oberfläche darstellen. Außerdem kann es bei solchen oft vorkommen, dass ein Marker als Blob erkannt wird, was in unserem Fall sehr nachteilig wäre. Die Eingaben, die normalerweise mit der Maus ausgeführt werden, sollten mithilfe von Positionserkennung ermöglicht werden. Diese Erkennung sollte wie folgt ablaufen: Die Geste wird mithilfe einer Infrarot-Kamera aufgenommen, anschließend wird diese Information ausgewertet und als Klicken ausgewertet.


Aufbau

Erlernbar aufbau.jpg

Oben links in Orange : eine Kamera

Oben rechts in Rot: eine Infrarot-Kamera

Darunter in Grün: Marker und darüber die Flaschen/Säfte

Mitte in Gelb und Hellblau: Projektion vom Beamer

Unten in Lila: Waage

Unten rechts in Orange: eine Kamera

Design

Die meisten Objekte wurden in Adobe Illustrator entworfen, sie sind ziemlich simpel gestaltet und auf ein Minimum reduziert. Der wichtigste Teil des Projekts war das Erlernen der Cocktailzubereitung, deshalb lag der Schwerpunkt nicht auf der Gestaltung.


Erlernbar pfeil.jpg


Der Weiterbutton



Erlernbar feldO.jpg




Das Startfeld


Erlernbar bspO.jpg




Ein Cocktailfeld






Vorgehensweise

Eyesweb

Um am projizierten Bild das Klicken zu ermöglichen, ist eine Positionserkennung notwendig. Deshalb wurde in EyesWeb ein entsprechendes Patch entwickelt, mit dem dies realisiert wurde. Hierzu wurde das von der Kamera aufgenommene Bild zuerst binarisiert. Um dem Bildrauschen entgegenzuwirken, wurde ein Schwellwert hinzugefügt, der über einen Regler steuerbar ist. Da in diesem Fall ständig geklickt werden würde, sobald eine Bewegung zu erkennen ist, wurde außerdem noch ein Quantity of Motion-Patch verwendet. Die Werte von EyesWeb werden dann über eine OSC Schnittstelle an Processing übergeben.

Erlernbar oscpatch.jpg

Processing

Als Programmierumgebung erwies sich Processing als besonders vorteilhaft, da es für interaktive Anwendungen gut geeignet ist. Die für das Programm benötigten Felder und Rezepte wurden in Illustrator erstellt und dann als jpg-Images in Processing geladen.


Erlernbar oscmessage.jpg

Um die Werte von OSC weiterverwenden zu können, wurde eine Methode benötigt, die die Daten der Schnittstelle bekommt und dann prüft, von welcher Quelle diese stammen.

Erlernbar markererkennung.jpg


Koordinaten des Fingers und Wert von Quantity of Motion

Markererkennung

Die Koordinaten des Fingers wurden dann mit den Koordinaten der Stellen, die man klicken kann, verglichen und falls diese übereinstimmen, wurde die entsprechende Methode aufgerufen, die implementiert, was bei einem bestimmten Klick passiert (z.B. clickButton()). Außerdem wurde die Umrechnung für die Daten der Waage auch in Processing realisiert, da für die Rezepte eine Volumengröße anstatt einer Gewichtsgröße benötigt wird. Dazu wurden die Dichten der Getränke aufgelistet und mit der Formel Volumen = Masse/Dichte berechnet. Auch hier gab es einen kleinen Toleranzwert, da eine Abweichung von ein paar Millilitern nicht vermieden werden kann. Als Marker wurden Fiducials verwendet, welche dann mittels einer Webcam und dem Programm „reacTIVision“ erkannt wurden. Die Nummer des Markers wurde über OSC an Processing übergeben. Dort wurde diese Nummer einer der Dichten der Getränke zugewiesen.

Waage

Da die Umsetzung mittels einfacher Sensoren sich als zu umständlich erwies, wurde das angezeigte Gewicht von einer Webcam abgelesen und mit Hilfe eines Programms (das uns unser Professor Herr Weiss zur Verfügung stellte) an Processing geschickt. Leider konnten wir dies, wegen technischer Probleme, nicht mehr testen.

Probleme

Im Laufe des Entwicklungsprozesses sind wir leider auf einige Probleme gestoßen.

- Waage 
-Processing
-Aufbau

Waage

So erwies sich schon die Suche nach passender Sensoren/Waage als sehr schwierig, da die meisten Sensoren nicht empfindlich genug sind und Waagen mit OSC-Schnittstellen sehr teuer sind. Die nächste Idee, eine Waage aufzuschrauben und die Sensoren auszubauen, konnte weder von uns noch von unseren Professoren umgesetzt werden. Auch das spätere Programm zum Ablesen des Gewichts war teilweise problematisch, da uns erst eine dazu benötigte Bibliothek fehlte, um es auf unseren Laptops zu starten; außerdem konnte das Gewicht schlecht abgelesen werden, da das Material der Waage das vorhandene Licht stark gespiegelt hat.

Processing

Auch bei Processing gab es Schwierigkeiten. Die Bibliothek zur Markererkennung (TUIO) gibt es mittlerweile nur noch für Multitouch-Anwendungen, sodass Alternativen gesucht werden mussten (hier nochmal einen Dank an Herrn Weiss ). Außerdem gab es ein Problem mit der PImage-Klasse, denn nach nur wenig geladenen Bildern kam ein OutOfMemory-Fehler, obwohl noch genügend Speicher vorhanden war. Nach langer Recherche haben wir herausgefunden, dass bei der Processing-Version 2.1 ein Bug vorliegt, der eben diesen Fehler hervorruft und von Benutzern nicht zu beheben ist.

Aufbau

Beim Aufbau hat sich gezeigt, dass die Brennweite der Infrarot-Kamera noch an das Beamerbild angepasst werden muss, was in der Kürze der Zeit leider nicht mehr umzusetzen war, weshalb die Koordinaten der geklickten Stelle in Processing nicht der Position des Fingers entsprachen und so das Programm nicht richtig getestet werden konnte.

Fazit

Auch wenn das Programm zum aktuellen Zeitpunkt leider nicht funktionsfähig ist, so haben wir trotzdem viel gelernt und dabei auch viel Spaß gehabt. Wir möchten uns auch nochmal bei den Dozenten für die stets hilfreiche Unterstützung bedanken!

Erlernbar osc.jpg

Schnittstellen des Programms

Download

Im Content Services des OCS-Systems (my.ohm-hochschule.de) liegen Dateien zum Download bereit:

Datein zum Download