Interaktives Kugellabyrinth

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Übersicht

Ein Kugellabyrinth soll durch zwei Personen gesteuert werden. Ihre Bewegung wird auf die X und Y Achse des Labyrinths übertragen.

KL Übersicht.JPG

Idee

Die Grundidee des Projektes war es, dass aus unserer Kindheit bekannte Kugellabyrinth aus Holz, digital nachzubilden und dieses via Handgesten (Erkennung durch eine Kamera) steuern zu können.

Konfiguration

Verwendete Harware

- Kugellabyrinth

- Arduino Uno mit Motorshield

- Zwei Schrittmotoren 1.8° 200 Schritte

- Selbst gedruckte Zahnräder Übersetzung 1:4

- USB-Kamera

Verwendete Software

- OpenFrameWorks

- OpenCV

- QT-Creator

Umsetzung

Da eine Digitalisierung zu langwierig geworden wäre, entschieden wir uns ein echtes Kugellabyrinth zu verwenden. Bei dem die Achsen x und y durch Motoren angesteuert werden. Die Ansteuerung der Motoren haben wir wiederum nach weiteren Überlegungen nicht durch Handgesten durchgeführt, sondern von zwei Personen die sich auf einem Spielfeld befinden.

Spielfeld

Spielfeld

Das Spielfeld teilt sich in zwei Bereiche ein in dem sich die zwei Personen aufhalten. Person 1 ist für die x-Achse und Person 2 für die y-Achse zuständig. Die jeweiligen Bereiche sind wie auf dem Bild zu sehen abgegrenzt. Wenn die jeweilige Person auf dem Mittelpunkt in ihrem Feld steht, wird kein Signal an den Motor für diese Achse geschickt.

Motoren und Zahnrad

Die zwei Motoren für die einzelnen Achsen sind Schrittmotoren mit 200 Schritten. Da dies von der Übersetzung noch nicht gereicht hat, haben wir am 3D-Drucker noch Zahnräder erstellt um diese zu erhöhen.

Bildaufnahme und Verarbeitung

Aufnahme

Für die Bildaufnahme haben wir eine USB WebCam verwendet. Deren aufgenommenes Farbbild haben wir Umgewandelt in ein Grauwertbild. Davon ausgehend wurde eine Hintergrundsubtraktion und eine Binarisierung durchgeführt. Als Basis für die Programmierarbeit haben wir einen von OpenFramework verfügbares Beispielcode verwendet und die Bibliothek von OpenCV. Als Software zum schreiben des Codes haben wir den QT-Creator genutzt.

Spielfeld mit erkannten Personen

Es wird zu beginn des Spieles, den Spielern auf dem Spielfeld jeweils zwei "regionen of interest (ROI)" eingezeichnet (grüne Felder). Zudem gibt es eine Schwerpunkt Erkennung (kleiner lila punkt). Wenn nun der Spieler mit seinem Schwerpunkt in einen ROI kommt werden dem Motor die Befehle für diese Richtung geschickt.



Motorensteuerung

Arduino mit Motorshield

Über eine Serielle Schnittstelle bekommt der Arduino die Befehle übertragen. Dieser Decodiert sie und führt sie aus. Dazu benötigt der Arduino ein Motorshield mit dem die zwei Motoren direkt angesteuert werden können. Die Leistungsversorgung der Motoren geschieht über eine externe Stromquelle um den Arduino nicht zu belasten. Mit Hilfe der Zahnräder wird die Drehung der Motorachsen an die Labyrinthachsen umgesetzt.



Fazit

Wir haben es leider nicht ganz geschafft das Projekt zum laufen zu bringen, es gab leider ein Problem mit unserer Schnittstelle. Dennoch hat es uns als Gruppe sehr viel Freude bereitet ein Projekt, das wir uns selbst erdacht hatten aufzubauen.

Link

Projektdaten