Dies ist eine alte Version des Dokuments!
Einleitung
Wir haben uns die Aufgabe gesetzt einen Roboter zu bauen, der in der Lage ist Menschen zu erkennen, zu diesen sich fortzubewegen und anschließend eine Interaktion auszuführen. Die Idee ist dabei, dass nach erfolgreicher Teilnahme an einem Gewinnspiel, ein Getränk ausge- schenkt wird. Zu Beginn erstellten wir ein Zustandsdiagramm, um die einzelnen Abläufe unseres Roboters gut darzustellen. Um diese Idee zu verwirklichen, haben wir uns überlegt, welche einzelne Schritte nötig sind, damit die Abläufe nahezu immer ausgeführt werden, um ein geschlossenes System zu erhalten.
Unser Zustandsdiagramm sieht dabei wie folgt aus:
a = 1 Skeletterkennung c für Entscheidung der Person b = 1 Gesichtserkennung d = 1 Gewonnen
Sobald unser Roboter eingeschaltet wird, fängt er an Leute zu suchen, indem er sich im Kreis schrittweise dreht. Falls jemand getrackt wurde, fährt er zur Person hin. Danach würde der Roboter durch einen Ton auf sich aufmerksam machen und eine Gesichtserkennung starten, um festzustellen, ob die Person zum Roboter gewandt ist. Falls die Person nicht mehr anwesend ist, wird wieder nach Menschen gesucht. Sonst wird die Person gefragt, ob ein Quiz oder Pong gestartet werden soll. Ebenfalls kann man auch ablehnen, woraufhin die Suche nach Menschen wieder beginnt. Wenn man verloren hat, wird wieder nach neuen Menschen gesucht, andernfalls erhält die Person eine Belohnung in Form eines Getränks und danach beginnt es von vorn.
Das Diagramm verdeutlicht, wie ungefähr unsere Umsetzung erfolgen soll. Jedoch ist zu erwähnen, dass das Quiz und die Gesichtserkennung nicht realisiert wurden, aufgrund von Zeitmangel.
Umsetzung
Für unsere Idee verwenden wir die Kinect Kamera und ein im Labor vorhandenes fahrbares Gestell. Das Gestell besitzt 6 Räder, jeweils 3 auf der rechten und auf der linken Seite. Die Steuerung efolgt über die Motoren, dessen Drehzahl mit einem Arduino gesteuert werden kann. Aufgrund der besseren Eigenschaften, haben wir uns für den Arduino Uno entschieden, da dieser mehr Ausgänge/Eingänge besitzt. Für die Kinect Kamera gibt es bereits Bibliotheken, die eine Personerkennung beinhaltet und das Bild auf dem Bildschirm ausgibt. Für die Datenverabeitung benutzen wir ein Notebook. Der Arduino und die Kamera sind per USB an den Laptop angeschlossen. Um den Code zu verstehen, war es zuerst nötig diesen zu analysieren.
Für die Personenerkennung verwenden wir die Bibliothek SimpleOnenNI. Der Code trackt bereits eine Person und gibt diese anschließend auf dem Bildschirm des Notebooks aus. Der Code kann das Skelett einer Person erkennen und anschließend einen Mittelpunkt des menschlichen Körpers erzeugen. Nachdem unser System ein Skelett erkannt hat, wird sozusagen ein „center of mass“generiert. Die Koordinaten dieses Punktes werden dann weiter an den Arduino versendet. Es ist somit nötig, dass eine Kommunikation zwischen dem Arduino und dem Processing Programm konfiguriert wird. Damit sich unser Konstrukt zu einer Person hinbewegen kann, senden wir vom Processing Programm die Koordinaten des Mittelpunktes an den Arduino,welcher wiederum die erhaltenen Daten so verarbeitet, dass das Fahrgestell sich zu der Per- son fortbewegen kann. Aufgrund des kartesischen Koordinatensystems der Kinect, können wir den Winkel berechnen und diesen zusammen mit der Distanz an den Arduino senden.
Projektstrukturplan
* Roboter * Aufbau * Befestigung/Installation * Laptop, Kinect, Taster, Arduino * Hardware * Verbindung Arduino mit Motoren, Kinect, Laptop * Erkennung von Menschen * Kinect * Ansteuerung von Kinect * Hinfahren * Wegberechung * Programmierung mit Processing * Datenverarbeitung von Kinect * Wegfindung * Programmierung mit Processing * Ansteuerung der Motoren * Reaktion auf Taster * Interaktion mit Menschen * Ansprechen von Menschen * Tonausgabe/Textausgabe * Startbildschirm/Quiz/Pong* Programmierung des Startbildschirm * Programmierung des Quiz * Single-/Multiplayer * Programmierung von Pong * Single-/Multiplayer * Belohnung * Ausgabe des Shots * Mechanisch ansteuerbare Halterung einer Flasche * Programmierung der Halterung
Risikoanalyse
Zeitplan
Das Zustandsautomatendiagramm unseres Roboters:
unser Code bis jetzt: {{:projekte2014:menscheninteraktinsroboter_code.zip|}}