Projekt: „AR-Bedienungsanleitung für einen Kaffeeautomat“

Breaking News

Um Vrml Modelle korrekt zeichnen zu können, musste ich die ARVrml.lib anpassen. Der "Patch" dazu ist unten im WIKI. Kompilieren nicht vergessen wink Ab dann kann man nach setzen eines Flag alle OpenGL States wie "glEnable(GL_BLEND)" selbst setzen.

-- TobiasLang - 03 Jul 2005

Aktuelle Screenshots

-- TobiasLang - 04 Jul 2005

0 Projektbeschreibung

Unser Projekt umfasst die Implementierung und Installierung einer interaktiven AR-Bedienungsanleitung für einen Kaffeeautomat auf Grundlage des opensource Augmented Reality Toolkit (ARToolKit). Je nachdem welche Aktion an dem Gerät durchgeführt werden soll, kann der Benutzer eine Animation auswählen die ihm die dazu nötigen Schritte einfach demonstriert und auf seine Interaktion wartet bzw. reagiert.

1 Kamera

Wir verwenden für das System eine Firewire-Kamera die mit 30 Frames pro Sekunde aufzeichnet.

1.1 Kameraposition

Die Kamera wird in der Kaffeeküche des Lehrstuhls für Medieninformatik im 5. Stock in der Amalienstraße fest installiert. Um eine Störung des Systems durch Verdeckung möglichst gering zu halten installieren wir die Kamera in einem steilen Aufnahme-Winkel über der Eingangstüre zur Kaffeeküche, so dass sie den Kaffeeautomat über die rechte Schulter des vor ihm stehenden Benutzers filmt.

2 Workflows

Das System soll eine Unterstützung zum durchführen folgender Aktionen an dem Kaffeeautomat bieten.

2.1 Kaffee kochen

Hierbei handelt es sich um die Standard-Aktion, das Kochen einer Tasse Kaffee. Der Benutzer wird angewiesen eine leere Tasse unter den Ausguss zu stellen und die entsprechende Kaffee-Taste am Apparat zu betätigen.

2.2 Espresso kochen

Zum bereitstellen eines Espressos wird der Benutzer angewiesen eine leere Espresso-Tasse unter den Ausguss zu stellen und die Espresso-Taste am Gerät zu drücken.

2.3 Wasser nachfüllen

Wenn der Wasserbehälter des Kaffeeautomaten leer ist muss dieser vom Benutzer nach oben herausgezogen werden. Dann wird der Deckel entfernt und am Wasserhahn Wasser eingefüllt. Anschließend wird der Deckel wieder auf den Wassertank gesetzt und dieser in den Kaffeeautomat gesteckt.

2.4 Kaffeebohnen nachfüllen

Im Fall, dass der Kaffeebohnen-Behälter leer ist muss der Benutzer den Deckel dessen abnehmen und Kaffeebohnen nachfüllen. Anschließend verschließt er den Behälter wieder mit dem Deckel.

2.5 Reinigen

Zum Reinigen des Kaffeeautomaten muss der Benutzer als ersten Schritt die Schublade die sich ganz unten im Gerät befindet herausziehen. In dieser sammelt sich der nachtropfende oder übergelaufene Kaffee. Der Inhalt muss in die Spüle entsorgt werden. Als zweiten Schritt kann der Benutzer wenn die Schublade entfernt ist den Kaffeesatz-Behälter aus dem Kaffeeautomat entnehmen und dessen Inhalt in den Abfall entsorgen. Anschließend werden erst der Kaffeesatz-Behälter und dann die Auffang-Schublade wieder an ihre Position gebracht.

3 Animationen

Die Startup-Animation eines Workflows wird nach der Auswahl dessen in einer Schleife zehn Mal wiederholt. Sollte der Benutzer in dieser Zeit die vorgegebene Aktion nicht durchführen geht das System in den Ausgangszustand zurück.

3.1 Kaffee kochen

Eine Hand stellt eine Kaffeetasse unter den Ausguss und betätigt virtuell den Schalter für Kaffee am Gerät der grafisch rot markiert ist. Daraufhin läuft virtueller Kaffee in die Tasse.

3.2 Espresso kochen

Eine Hand stellt eine Espressotasse unter den Ausguss und betätigt virtuell den Schalter für Espresso am Gerät der grafisch rot markiert ist. Daraufhin läuft virtueller Espresso in die Tasse.

3.3 Wasser nachfüllen

Der Wasserbehälter wird grafisch in transparentem Rot hervorgehoben. Er wird von einer virtuellen Hand aus seiner Position im Kaffeeautomat nach oben gehoben. Dann entfernt eine zweite virtuelle Hand den Deckel des Behälters in einer Rotationsbewegung nach rechts. Daraufhin bewegt sich der Behälter etwas in Richtung Wasserhahn. Anschließend bewegt sich der Behälter wieder zurück, der Deckel wird wieder aufgesetzt und zuletzt der Behälter wieder nach unten an seine ursprüngliche Position gebracht.

3.4 Kaffeebohnen nachfüllen

Nachdem der Deckel des Kaffeebohnen-Behälters von einer virtuellen Hand nach rechts in einer Rotationsbewegung geöffnet wurde schüttet eine zweite Hand virtuelle Kaffeebohnen hinein. Anschließend wird der Deckel wieder zurück auf den Behälter geklappt.

3.5 Reinigen

Eine virtuelle Hand zieht die Auffang-Schublade aus dem Kaffeeautomat und bewegt sie zum ausleeren in Richtung Spüle. Dann entnimmt eine zweite virtuelle Hand den Kaffeesatz-Behälter und bewegt ihn in Richtung Abfalleimer zum entleeren. Zuletzt laufen die beiden Teilanimationen in umgekehrter Reihenfolge ab.

4 Menü

Die Auswahl eines Workflows erfolgt vom Benutzer über ein Menü. Dieses besteht aus einem Multimarker, der durch sechs Marker in einer Reihe repräsentiert wird. Eine Auswahl erfolgt aufgrund von Verdeckung genau eines Markers z.B. mit dem Finger.

4.1 Position des Menüs

Das Menü wird auf dem rechten Seitenteil des Küchenschranks über der Spüle angebracht, so dass es von der Kamera gut und relativ störungsfrei eingefangen werden kann.

4.2 Sechs Menüpunkte

Für jeden der fünf Workflows existiert ein Menüpunkt. Das Design des jeweiligen Markers soll mit der von ihm repräsentieren Aktion in Beziehung stehen. Außerdem existiert ein weiterer Menüpunkt zum Abbrechen eines laufenden Workflows bzw. Animation. Durch dessen Betätigung wird das System in den Ausgangszustand zurückgesetzt.

4.3 Animation der Menüpunkte

Um die Selektion eines Workflows bzw. eines Menüpunkts genau zu bestimmen und zufällige Verdeckungen nicht zu interpretieren reagiert das Menü nur auf eine Selektion bei der nur genau ein Marker mindestens eine Sekunde verdeckt ist. Dem Benutzer wird die Dauer der Verdeckung durch seinen Finger demonstriert, indem sich innerhalb der Sekunde grafisch ein Zylinder auf dem jeweiligen Marker aufbaut.

5 Anzeige

Zur Anzeige ist für den Prototyp zunächst ein Notebook ausreichend. Später soll dieses durch ein in der Küche fest installiertes Display, z.B. durch einen Tablet-PC, ersetzt werden.

6 ARToolKit-Marker

Für die Realisierung der Funktionalitäten werden an dem Kaffeeautomat und an allen seinen herausnehmbaren Teilen, wie z.B. dem Wasserbehälter, Marker angebracht. Wir verwenden dazu mehrere Multimarker, um der Verdeckung eines Markers durch den Benutzer und somit einem Totalausfall des Systems vorzubeugen. Die Multimarker können dann in Bezug zueinander gesetzt werden. So kann der Start einer Animation durch das Entfernen eines herausnehmbaren Teils, wie z.B. der Auffangschublade, über eine Distanzmessung zwischen zwei Markern oder die Verdeckung eines Markers getriggert werden. Da sich einige der Marker an Stellen befinden werden an denen sie mit Wasser oder Kaffee in Berührung kommen können werden wir sie mit einer Schutzfolie abdecken. Dies gilt besonders für die Marker am Wasserbehälter der unter dem Wasserhahn gefüllt wird und den Marker unter dem Ausguss dessen Verdeckung das Unterstellen einer Tasse triggert. Für die Animationen „Wasser nachfüllen“ und „Reinigen“ benötigen wir die Kalibrierung des Raums. Dies geschieht über einen Marker an der Wand hinter dem Kaffeeautomat. In einer Konfigurationsdatei kann dann angegeben werden in welcher Richtung vom Gerät aus sich die Spüle bzw. der Abfalleimer befinden.


PS: Sorry für die Qualität...mein Handy gibt nicht mehr her...die Fire-Wire-Cam hoffentlich schon wink

-- HelgeGross - 01 Jul 2005

 

7 Programmierbare Shader (GLSL)

Da wir die Möglichkeiten, die uns moderne Hardware bietet, auch nutzen wollen, habe ich die Rendering Pipeline auf Shader umgestellt. Diese sind in der OpenGL Shading Language geschrieben und ermöglichen uns z.B. Blinn Shading oder Environment Reflections. Zur Technik: Die Shader benutzen OpenGL Extensions, dafür gibt es den Wrapper GLEW Dieser muss gelinkt sein. Das Programm checkt, ob eine geeignete Grafikkarte vorhanden ist und rendert dementsprechend. Eine Einführung in GLSL gibt es im GLSL Tutorial . Die Shader programmiert man am besten mit dem Render Monkey, die Projektdatei für den Default Kaffee Shader ist hier auf dem WIKI ladbar.

-- TobiasLang - 02 Jul 2005

 

System Design

UML

GLSL Shader (CShader)
  • beinhaltet einen Shader
  • wird an eine C3DObjekt gebunden
  • kann je nach Bedarf ein- und ausgeschaltet werden.

3D-Objekte (C3DObject)
  • haben fertige, modellierte 3D-Grafik/Animation zugeordnet
  • laden/verwalten/zeichnen sich selbst

Szene (CScene)
  • generiert sich aus aktuellem Zustand
  • verwaltet alle 3D-Objekte sowie deren Beziehungen untereinander

Zustand (CState)
  • speichert logischen Gesamtzustand des Systems
  • kennt Zuordnung Marker <-> 3D-Objekt

Ablaufsteuerung (CControl)
  • interpretiert Sichtbarkeit und Transformation von Markern
  • löst Aktionen aus (Objekt verändern, Animation abspielen...)
  • modifiziert (als Ergebnis) den aktuellen Zustand

ARToolkit
  • trackt und liefert Markertransformationen

Framework
  • (eher kleines) Rahmenwerk zur Initialisierung und zum Zusammenspiel des Ganzen

Integration der Markerdetektion von ARToolKitPlus

Hier der Patch mit der neuen Markererkennung von ARToolKitPlus:

-- ToniZeitler - 13 Jul 2005

Szenengraph

Hier ist mal ein Entwurf. Sollen wir die Multimarker auch noch irgendwie berücksichtigen? Wenn ja wie? Zwei Markerpfeile gehen auf ein Objekt?


Ergänzung: Die Kaffeemaschine ist auch noch ein Objekt, die Marker für die Benutzereingabe fehlen

VRML Modelle und Markerpositionen

Der Kaffeeauffang blinkt solange, bis der darunterliegende Marker sichtbar wird. -- TobiasLang - 20 Jun 2005

SVN-Verzeichnisstruktur

bin
  • Data
    • Patterns
  • Wrl
    • src
    • textures

doc

include

src

-- SebastianBoring - 23 Jun 2005

 

Auswahlmenü (oberer und unterer Teil)

Oberer Teil des Menüs Unterer Teil des Menüs

Restliche Marker

Auffangbecken (unten)

Auffangbecken Unten

  • Ort: Auffangbecken (darnuterliegend)
  • ID: 014
  • Größe: 6 x 6 cm

Kaffeebohnenbehälter (Deckel)

Kaffeebohnenbehälter Deckel

  • Ort: Kaffeebohnenbehälter (Deckel)
  • ID: 012
  • Größe: 6 x 6 cm

Kaffeesatzbehaelter

Kaffeesatzbehälter Links

  • Ort: Kaffeesatzbehälter (Links)
  • ID: 015
  • Größe: 4 x 4 cm

Kaffeesatzbehälter Rechts

  • Ort: Kaffeesatzbehälter (Rechts)
  • ID: 016
  • Größe: 4 x 4 cm

Kaffeesatzbehälter Vorne

  • Ort: Kaffeesatzbehälter (Vorne)
  • ID: 017
  • Größe: 6 x 6 cm

Kaffeemaschine

Maschine Oben

  • Ort: Kaffeemaschine (Oben)
  • ID: 011
  • Größe: 6 x 6 cm

Maschine Vorne

  • Ort: Kaffeemaschine (Vorne)
  • ID: 010
  • Größe: 4 x 4 cm

Verdeckung der Tasse

Tasse Verdeckung

  • Ort: Verdeckungsmarker für Tasse (auf dem Auffangbecken)
  • ID: 013
  • Größe: 4 x 4 cm

Wandmarker (für Umgebung)

Wand

  • Ort: Wand hinter der Kaffeemaschine (zu jeder Zeit hoffentlich sichtbar)
  • ID: 000
  • Größe: 18 x 18 cm

Wassertank

Wassertank Deckel

  • Ort: Wassertank (Deckel)
  • ID: 009
  • Größe: 6 x 6 cm

Wassertank Seite

  • Ort: Wassertank (Seite - verdeckt)
  • ID: 008
  • Größe: 6 x 6 cm

Wassertank Vorne

  • Ort: Wassertank (Vorne)
  • ID: 007
  • Größe: 4 x 4 cm

-- SebastianBoring - 06 Jul 2005

Aufgabenverteilung bis Mi 13.07.2005

Tobias Lang

  • 3D-Modell des Kaffeebohnen-Behälters
  • Korrekte Verdeckungen (Shader)
  • Animationen
  • Distanz-/Verdeckungsbasiertes Triggern der nächsten Animation oder Ende einer Animation

Toni Zeitler

  • Animationen
  • Distanz-/Verdeckungsbasiertes Triggern der nächsten Animation oder Ende einer Animation

Helge Groß

  • Animationen
  • Distanz-/Verdeckungsbasiertes Triggern der nächsten Animation oder Ende einer Animation

Sebastian Boring

  • 4x4 Marker am Wassertank und für Tassen-Verdeckung breiterer Rahmen?
  • Animationen
  • Distanz-/Verdeckungsbasiertes Triggern der nächsten Animation oder Ende einer Animation

TODO:

  • Rechner in der Kaffeeküche fit machen!
  • Ende des Kaffee/Espresso Workflows wird durch wieder sichtbaren Tasse-Verdeckungs-Marker getriggert!

-- HelgeGross - 07 Jul 2005

 
Topic attachments
I Attachment Action Size Date Who Comment
ARToolKitPlusPatch.zipzip ARToolKitPlusPatch.zip manage 28.1 K 07 Jul 2005 - 16:37 ToniZeitler ARToolKitPlus patch for ARToolKit-2.70.1
ARVrmlPatch.zipzip ARVrmlPatch.zip manage 7.2 K 03 Jul 2005 - 12:06 TobiasLang ARVrml Patch for OpenGL State Machine User Control
Auffangbecken_unten.gifgif Auffangbecken_unten.gif manage 1.4 K 05 Jul 2005 - 23:10 SebastianBoring  
DefaultKaffee.rfxrfx DefaultKaffee.rfx manage 51.3 K 02 Jul 2005 - 19:45 TobiasLang Render Monkey Effect File
Kaffeebohnenbehaelter_deckel.gifgif Kaffeebohnenbehaelter_deckel.gif manage 1.4 K 05 Jul 2005 - 23:10 SebastianBoring  
Kaffeesatzbehaelter_links.gifgif Kaffeesatzbehaelter_links.gif manage 1.1 K 05 Jul 2005 - 23:10 SebastianBoring  
Kaffeesatzbehaelter_rechts.gifgif Kaffeesatzbehaelter_rechts.gif manage 1.2 K 05 Jul 2005 - 23:10 SebastianBoring  
Kaffeesatzbehaelter_vorne.gifgif Kaffeesatzbehaelter_vorne.gif manage 1.4 K 05 Jul 2005 - 23:11 SebastianBoring  
Maschine_oben.gifgif Maschine_oben.gif manage 1.3 K 05 Jul 2005 - 23:11 SebastianBoring  
Maschine_vorne.gifgif Maschine_vorne.gif manage 1.1 K 05 Jul 2005 - 23:11 SebastianBoring  
Tasse_verdeckung.gifgif Tasse_verdeckung.gif manage 1.2 K 05 Jul 2005 - 23:11 SebastianBoring  
Wand.gifgif Wand.gif manage 2.8 K 05 Jul 2005 - 23:12 SebastianBoring  
Wassertank_deckel.gifgif Wassertank_deckel.gif manage 1.3 K 05 Jul 2005 - 23:12 SebastianBoring  
Wassertank_seite.gifgif Wassertank_seite.gif manage 1.3 K 05 Jul 2005 - 23:12 SebastianBoring  
Wassertank_vorne.gifgif Wassertank_vorne.gif manage 1.2 K 05 Jul 2005 - 23:12 SebastianBoring  
menu-oben.gifgif menu-oben.gif manage 1.1 K 03 Jul 2005 - 17:06 SebastianBoring Oberer Teil des Menüs
menu-unten.gifgif menu-unten.gif manage 1.1 K 03 Jul 2005 - 17:06 SebastianBoring Unterer Teil des Menüs
uml_complete.pngpng uml_complete.png manage 47.5 K 13 Jul 2005 - 14:00 ToniZeitler UML complete
uml_reduced.pngpng uml_reduced.png manage 18.4 K 13 Jul 2005 - 14:00 ToniZeitler UML reduced
uml_reduced.wmfwmf uml_reduced.wmf manage 9.7 K 13 Jul 2005 - 14:00 ToniZeitler UML reduced
Topic revision: r41 - 13 Jul 2005, ToniZeitler
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Medieninformatik-Wiki? Send feedback