Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte2014:menscheninteraktionsgeraet

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte2014:menscheninteraktionsgeraet [2014/08/16 17:44]
zeitlos
projekte2014:menscheninteraktionsgeraet [2016/01/21 12:45] (aktuell)
Zeile 1: Zeile 1:
-<note tip>Hier scheint nichts passiert zu sein - da müsst ihr echt nochmal ranklotzen! (Felix)</​note>​ 
- 
 ====== Trinkspiel-Bot ====== ====== Trinkspiel-Bot ======
  
Zeile 24: Zeile 22:
  
 **Umsetzung** **Umsetzung**
 +
 +
    1.) Einführung    1.) Einführung
  
Zeile 45: Zeile 45:
 Das Objekt kann dann vom Arduino mit der read Methode gelesen werden. ​ Das Objekt kann dann vom Arduino mit der read Methode gelesen werden. ​
  
 +   3.) Personenerkennung/​Kommunikation
 +   
 +   3.1) Motorsteuerung
 +   
 +Für die Fortbewegung wird ein 9 V Akku benutzt. Um das Gestell mit den Motoren anzu- steuern, wurde dafür wieder eine Bibliothek von der Wiki-Seite benutzt. Die Steuerung der Motoren erfolgt über den TReX. Dieser reguliert die Stromzufuhr des Akkus an die Motoren, um die Drehzahl zu beeeinflussen. Der TReX kommuniziert mit dem Arduino Uno über UART. In der unteren Abbildung ist die benötigte Verbindung zwischen Arduino und TReX dargestellt. ​
 +
 +{{ :​projekte2014:​trex.png?​200 |}}
 +
 +Die verwendeten Pins vom Arduino sind D12 und D13, da neben der 13 sich GND befindet
 +und mit einem 3 Pin-Kabel beides sich leicht verbinden lässt, wie in der weiteren Abbildung verdeutlicht:​
 +
 +{{ :​projekte2014:​trex_und_arduino.jpg?​200 |}}
 +
 +Da bereits eine Bibliothek vorhanden ist, können wir die vorgegebenen Methoden, die einen Parameter für die Intensität erhalten, verwenden, um vorwärts, rückwärts,​ rechts oder links zu fahren.
 +Es gibt 2 Möglichkeiten,​ damit sich das Gerät nach rechts oder links hinbewegt. Zu Beginn haben wir die rechte und linke Seite entgegengesetzt drehen lassen. So rotiert das Gestell auf einem Punkt entweder nach rechts oder links. Danach bewegt sich das Gerät vorwärts. Aufgrund aber der schlechten Handhabung, der Instabilität des Kamera-Trackings und von Vibrationen,​ wurden Funktionen geschrieben,​ die das Gerät Kurven fahren lässt, um diese Probleme zu umgehen.
 +
 +   3.2) Bewegung in Abhängigkeit des Winkels
 +
 +{{ :​projekte2014:​winkel.png?​200 |}}
 +
 +Dieses Bild soll verdeutlichen wie der Roboter zu seinem Ziel kommt. Es ist eine Draufsicht auf die Kinect Kamera bzw. dem ganzen Roboter. Durch die Mitte der Kamera legt Processing ein kartesisches Koordinatensystem. Wenn Kinect eine Person erkennt kann Processing den Anteil auf der z- bzw. x-Achse ausgeben. Diese beiden Informationen und der rechte Winkel reichen aus, um den Winkel Gamma zu berechnen. Umso größer dieser Winkel ist ums so mehr Geschwindigkeit wird auf die linken bzw. rechten Motoren aufaddiert. Diese Rechnung wird immer wieder ausgeführt,​ sodass der Winkel immer kleiner und die Geschwindigkeit immer niedriger wird, bis der Roboter im besten Fall sein Ziel mit einem Winkel von 0° erreicht.
 +
 +   4.) Gehäuse
 +
 +Damit sich der Roboter im Raum frei bewegen kann, schrauben wir auf der gelochten Metall- platte des fahrbahren Untersatz 3 Holzstäbe von ungefähr 80 cm Höhe, um eine angenehme Höhe für den Benutzer zu erreichen. Auf diesen 3 Stäbe wurde eine dünne Holzplatte von 30 cm x 30 cm Fläche angebracht, auf dem sich der Laptop befinden wird. Für die Kamera wird ebenfalls ein Holzstab von 35 cm Höhe angeschraubt,​ worauf dann die Kamera befestigt wird. Da bei dieser Konstruktion der Roboter leicht nach rechts oder links kippen kann, wurden Stützräder,​ rechts, links und hinten angebracht. Die Konstruktion ist in den unteren beiden Abbildungen zu sehen.
 +
 +{{ :​projekte2014:​trinkbot.jpg?​200 |}}
 +
 +{{ :​projekte2014:​stuetzraeder.jpg?​200 |}}
 +
 +Der Holzstab für die Kamera wurde nochmals an die Platte befestigt, indem rechts und links Holzblöcke angebracht und miteinaner mit Schrauben verbunden wurden, um das Schwanken zu reduzieren.
 +Die Kamera wurde fest an den Holzstab getapet, damit die Konstruktion stabiler wird.
 +
 +{{ :​projekte2014:​kinect_tape.jpg?​200 |}}
 +
 +Mit dieser Konstruktion entstand ein robustes Gehäuse. Um aber das Schwanken der Kamera zu reduzieren, damit das Tracking besser funktioniert,​ wurden funktionen geschrieben,​ die ein langsames Anfahren und leichtes bremsen ermöglichen.
 +
 +   5.) Elektronik
 +   
 +   5.1) Schalter
 +   
 +Wir haben einen Schalter eingebaut, damit die Stromzufuhr vom Akku zu dem TReX, der die Stromstärke regelt, getrennt werden kann. Einen Vorteil hat dies, dass falls das Gerät in die falsche Richtung fährt, es einfach ausgeschaltet werden kann.
 +Der Schaltplan dazu:
 +
 +{{ :​projekte2014:​schalter.png?​200 |}}
 +
 +Man muss das Kabel zwischen dem Akku und dem TRex durchtrennen und dort einen Schalter an den durchtrennten Kabelenden anlöten, der beim Betätigen den Stromkreis wieder schließt. Der Schalter wurde oben auf der Platte angebracht:
 +
 +{{ :​projekte2014:​fancy_schalter.jpg?​200 |}}
 +
 +   5.2) Akkuversorgung für die Kinect Kamera
 +   
 +Die Kinect Kamera benötigt eine 12 V Versorgung, die sonst über eine Steckdose erfolgt. Da aber unser Gerät mobil unterwegs ist, ist es nötig dafür einen Akku zu benutzen. Im Labor sind nur 9 V Akkus vorhanden, weshalb eine Schaltung benötigt wird, die die Spannung auf 12 V erhöhen kann. Dafür wird ein Hochsetzsteller verwendet. Der Schaltplan dazu verdeutlicht die benötigte Schaltung:
 +
 +{{ :​projekte2014:​hochsetzsteller.png?​200 |}}
 +
 +Der Hochsetzer erhöht die 9 V, indem die Spule, die ein Stromspeicher ist, den Kondensator auflädt, bis die 12 V erreicht sind. Die Diode sperrt den Strom in Richtung Spule, sodass die Entladung nur am Widerstand erfolgt. Der Schalter, der einen Transistor darstellt, schließt sich, sobald der Spannungswert am Kondensator sinkt, damit dieser wieder seine 12 V Span- nung hat. Wenn der Transistor geschlossen ist, kann sich der Kondensator entladen, da der Strom von der Spule zur Masse fließt. So entsteht ein Spannungs-Rippel am Kondensator,​ der so gering ist, dass man von einer Gleichspannung ausgehen kann.
  
 +Das Kabel wird durchgeschnitten und anschließend an einem männlichen Stecker angelötet.
  
-Projektstrukturplan  +{{ :​projekte2014:​kabel.png?​200 |}}
-          +
-  * 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**+Das weiße Ende wird an den Schirm vom Stecker angelötet, das rote wird mit der Mitte des Steckers verbunden.
  
-    *keine Erkennung von Menschen von Kinect +{{ :​projekte2014:​hochsetzsteller.jpg?​200 |}}
-    *keine Wegfindung +
-    *Konsequenz -> Scheiterung des Projekts+
  
-  * Belohung +Unser Hochsetzsteller in der oberen Abbildung hat 3 Anschlüsse. Die schwarze Verbindung ist für Masse, rot für die Eingangsspannung und gelb für die Ausgangsspannung. Bevor die Verbindungen gemacht werden, muss der Hochsetzsteller mit einem Potentiometer auf 12 V Ausgangsspannung eingestellt werden. Hierbei wird die Eingangsspannung mithilfe einer Spannungsquelle auf 3V gesetzt und anschließend mit einem Multimeter die Ausgangsspannung gemessen. Am Potentiometer wird so lange gedrehtbis man die 12 V erreicht hat.
-  * Keine Ausgabe von Shots +
-  * Konsequenz ​-> eingeschränkte Belohnung +
-  * Plan B: Erzeugung von Melodienach Interaktion+
  
-  * Gehäuse +Das schwarze Ende vom weiblichen Steckerkabel wird mit der Masse vom Hochsetzsteller verbunden, ebenfalls der Minus Anschluss vom Akku. Der Pluspol von der Batterie kommt an den Eingang des Hochsetzstellers. Die Ausgangsspannung wird wieder mit der Mitte des weiblichen Steckers verbunden. Somit können beide Stecker miteinander verbunden werden und es liegen 12 V an der Kinect Kamera an.
-  * Zeitfaktor fürs Gehäuse +
-  * Gewichtverteilung/​Gleichgewicht +
-  * Konsequenz -> kein schönes Gehäuse +
-  * Plan B: einfaches Gehäuse+
  
-  * fortgeschrittene Wegfindung +{{ :projekte2014:​akku_stecker.jpg?​200 |}}
-  * Konsequenz -> keine optimale Wegfindung +
-  * Plan BPräsentation vom Projekt im leeren Raum+
  
 +So kann dann das andere Ende des weiblichen Stecker mit dem Akku verbunden werden.
  
-**Zeitplan**+{{ :​projekte2014:​akku.jpg?​200 |}}
  
-  * 1. Woche: Installation von Software(für Kinect)/​Einarbeitung in Kinect +Mit diesem ​Aufbau ​kann sich unser Roboter mobil im Raum fortbewegen.
-  * 2. Woche: "​Erkennung von Menschen"​ programmieren/​Ansteuerung von Motoren +
-  * 3. Woche: Verknüpfung von Kinect und Motorsteuerung +
-  * 4. Woche: Optimierung vom Code (Unterscheidung von mehreren Menschen) +
-  * 5. Woche: Programmierung von Pong und Quiz/​Kommunikation zwischen PC und µC +
-  * 6./7. Woche: Planung und Aufbau ​von Belohnungseinheit ​  +
-  * 8Woche: Planung und Aufbau vom Gehäuse+
  
 +   6) Pong
 +   
 +Um einen Indikator dafür zu haben wer die Belohnung bekommt oder ob überhaupt eine Belohnung ausgegeben werden darf, entschieden wir uns das Spiel Pong in Processing zu implementieren. Bevor das eigentliche Spiel startet, ist es möglich aus zwei verschiedenen Darstellungsarten zu wählen. Im nächsten Bild wird kurz die Steuerung erklärt dann wird ge- spielt. Im Game Over Bildschirm wird letztendlich der Gewinner festgelegt. Um ein Spiel bzw. um Animation darstellen zu können ist es nötig aufeinanderfolgende Frames zu berechnen. Einen Rahmen dafür gibt die Draw-Funktion von Processing. Für jedes neue Bild müssen die Parameter des Balls bzw. der Pongschläger neu berechnet und dargestellt werden. Damit die Kollision zwischen Ball und Schläger stimmt müssen Außerdem Hitboxen festgelegt werden. Um das Spiel noch etwas interessanter zu gestalten wird die Geschwindigkeit des Balls von Zeit zu Zeit erhöht und je nach Spieldarstellung auch die Größe des Balls.
  
-**Das Zustandsautomatendiagramm unseres Roboters:**+**Ergebnis**
  
 +Wir haben es geschafft einen Roboter zu bauen, der ein stabiles Gehäuse hat und in der Lage ist, Menschen zu erkennen und zu diesen hinzufahren. Nachdem dies ausgeführt wurde, startet ein Menü, wo man Pong auswählen kann. Nachdem man gespielt hat, wird angezeigt, ob man gewonnen oder verloren hat.
 +Uns ist es jedoch nicht gelungen danach ein Belohnungssystem zu bauen, dass z. B. ein Ge- tränk bereitstellt. Zudem müsste noch ein System entwickelt werden, dass Objekte erkennt und diese umfährt. Beides ist machbar, leider haben wir es in der vorgegebenen Zeit nicht geschafft, aufgrund von Problemen mit dem fahrbahren Untersatz, da die erste Vorgehens- weise der Bewegungssteuerung zwar funktionierte,​ jedoch mit erheblichen Komplikationen. Außerdem nahm es viel Zeit in Ansprch einen neu geschriebenen Code zu testen, da jedesmal compiliert und hochgeladen werden musste.
  
-{{:​projekte2014:​zustaende.png?500 |}}+Der Abschlussbericht ist ebenfalls als PDF Datei vorhanden, worin sich das Quellenverzeichnis und kommentierter Code befindet.
  
 +{{:​projekte2014:​menscheninteraktionsgeraet:​abschlussbericht.pdf|}}
  
-unser Code bis jetzt: +{{:​projekte2014:​menscheninteraktionsgeraet:code.zip|}}
-{{:​projekte2014:​menscheninteraktinsroboter_code.zip|{{:​projekte2014:menscheninteraktinsroboter_code.zip|}}}}+
projekte2014/menscheninteraktionsgeraet.1408203868.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)