Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise19:challengerpublic:start

Themenbeschreibung

Hauptaufgabe des Challengers ist die absolute Zerstörung seines Gegners in einem spannenden, alles-entscheidenem Schere-Stein-Papier Duell. Sein Gegenüber zieht sich einen speziell angefertigten Handschuh mit Dehnungsmesstreifen an, wodurch der Roboter die Aktionen seines Gegners erkennen kann. Durch ein festgelegtes, vom menschlichen Spieler gespieltes Zeichen beginnt der Wettkampf. Sollte er wie zu erwarten gewinnen, verspottet er seinen Herausforderer mit einer glorreichen Melodie, sollte er verlieren signalisiert er demütig seine Niederlage.
Grundsätzlich kam uns die Idee für einen spielenden Roboter, da wir es interessant fanden etwas zu bauen, welcher mit einer Person interagieren kann und Leuten Spaß bereitet. Bei der Überlegung welche Spiele mit unseren Mitteln möglich sind umzusetzen, haben wir uns für das beliebte Spiel Schere-Stein-Papier entschieden. Ursprünglicher Plan war der Bau eines ganzen Armes mit allen fünf Fingern, welche die verschiedenen Formen darstellen sollen. Jedoch haben wir uns während des Prozesses aus Kompaktibilitäts- und Effiziensgründen dafür entschieden, den Roboter auf einen Unterarm und drei Finger zu beschränken.

Methoden / Umsetzung

Arm

Bewegung des Armes des Roboters mit Hilfe eines Getriebemotors in der üblichen Schere-Stein-Papier Bewegung.

Finger

3 einzeln angesteuerte Finger mit Hilfe von Servomotoren (Zeige-, Mittel- und Ringfinger), welche die Formen des Spieles akkurat darstellen.

Handschuh

Mittel zum Spielstart und Spielausführung, erkannt durch Aktionen des Gegenspielers mit Hilfe von Dehnungsmessstreifen an Zeige- und Ringfinger.

Grundplatte

Grundgerüst für die Arduino-Boards und Getriebemotor.

Phasen der Konstruktion und Programmierung

Einlesen der Werte des Spielers

Begonnen haben die Probleme schon mit der Findung eines passenden Handschuhs, welcher sowohl dünn genug für die Befestigung der Dehnungsmessstreifen und Erkennung der Werte, als auch elastisch und breit genug ist, damit jede Hand auch komfortabel hinein passt. Um die Messstreifen auch an dem Handschuh befestigen zu können, haben wir jeweils an den Zeige- und Ringfinger eine „Höhle“ angenäht, in welche die Streifen ohne Problem reingeschoben und rausgezogen werden können.

Weiter ging es mit der eigentlichen Messung der Streifen und inwiefern die Knickung die Werte beeinflusst und für unser Programm nutzbar sind. Grundsätzlich funktionieren diese, dass im Ruhezustand eine durchgängige Spannung hindurch läuft und durch Knickung der Streifen der Widerstand in ihnen geringer wird, wodurch sich die Spannung erhöht. Dafür haben wir mehrere Probemessungen durchgeführt, welche uns einen Durchschnittswert für den Ruhezustand(12×5/1024(bei DMS1, da durch den Arduino nur 5V geleitet werden können und auf dem Serial Monitor diese umgerechnet werden müssen) und 27(DMS2) Volt) und geknickten Zustand(60 und 28 Volt) lieferte.

Die Messung des Ruhezustandes werden bei Beginn des Spieles immer durchgeführt. Auf Basis dieser Messwerte haben wir die Funktionen zum Spielstart und zur Erkennung unseres Symbols im Spiel geschrieben. Diese nehmen sich die Werte des Ruhezustandes und warten für den Spielstart auf die Erhöhung der Spannung um 15 Volt auf beiden Streifen. Wird dies erkannt, gibt der Roboter zusätzlich mit einem Piezo-Lautsprecher einen Sound aus, um dem Spieler zu signalisieren, dass es losgeht. Für die Erkennung des Symbols vergleicht er die einzelnen Werte der Streifen wieder mit dem Ruhezustand und weiß somit, was der Gegner gespielt hat.

Bewegung des Armes

Die Konstruktion des Armes war ehrlich gesagt der einfachste Teil des Projektes. Dieser besteht lediglich aus einer länglichen Holzplanke, welche mit Schrauben an einem Getriebemotor befestigt ist, welcher wiederum auf einer Grundplatte festgeschraubt ist. Dieser Motor wird mit Hilfe eines externen „Motor Drivers“ gesteuert.


Durch die Drehung des Motors wird der Arm nach oben und unten geschwenkt, welches die Spielbewegung simuliert. Am anderen Ende des Armes befinden sich die…

Finger

Diese haben uns die größten Probleme bereitet und sich auch im Endprodukt noch nicht perfekt. Unsere erste Idee bestand daraus die Finger aus kleinen Holzstücken zu machen, welche aber nicht dynamisch bewegbar und knickbar waren, weshalb diese schnell wieder verworfen wurden. Da das Material sowohl standfest als auch knickbar sein sollte, haben wir uns schlussendlich für Pappe entschieden, welche wir in 3 Finger geschnitten haben. Diese sind am Ende des Arms festgeklebt und an 3 Stellen geknickt, um die Fingergelenke darzustellen. Die nächste Schwierigkeit bestand in der Bewegung der Fingern, welche wir mit Hilfe von Seilen und klein-geschnittenen Isolierschlauch gelöst haben. Diese Seile sind mit den (ebenfalls am Arm befestigten) 3 Servomotoren an 2 Seiten befestigt, welche die Finger entweder einziehen oder gerade drücken. Die Servos selbst haben sich auch als eine schwierige zu überwindende Hürde herausgestellt. Diese mussten den wilden Bewegungen des Armes und ihrer eigenen Drehbewegung widerstehen und in bestimmten Abständen zueinander stehen, um sich nicht gegenseitig zu behindern. Letztendlich haben wir sie mit doppelseitigem Klebeband und kleinen Holzblöcken, welche an dem Arm festgeklebt und durch Schrauben mit den Servomotoren verbunden sind.
Grundsätzlich sind die Servos immer auf 80° gestellt, welches die Stein-Form darstellt. Nachdem der Spielstart initialisiert wurde und der Arm seine Bewegung durchgeführt hat, wird dem Roboter ein zufälliger Wert zwischen 1 und 3 übergeben, wobei
1 = Papier, alle Servos werden auf 0° gestellt, alle Finger sind gestreckt
2 = Schere, Zeige- und Mittelfinger 0°
3 = Stein, Finger bleiben in Ruheform


Ist dies geschehen kommen wir zu der letzten Phase unseres Roboters, der…

Auswertung und Ausgabe des Ergebnisses

Genauso wie der zufällig übergebene Wert des Roboter für die einzelnen Formen des Spieles steht, wird nach der Erkennung der Form des Spielers ein Wert gleichgesetzt. Diese beiden werden verglichen, woraufhin der Roboter nun weiß, ob er gewonnen oder verloren hat und dementsprechend eine Melodie ausgibt. Sollte es zu einem Unentschieden kommen wird ein einzelner Ton gespielt.

Zusätzlich haben wir eine Cheat-Methode geschrieben, welche aktiviert wird sobald es länger als 5 Sekunden zum signalisierten Spielstart durch den Spieler dauert. Diese funktioniert, indem sie nach der Armbewegung erst das Symbol des Spielers erkennt und daraufhin mit möglichst wenig Verzögerung das gewinnende Symbol selbst spielt.

Phasenablauf


Pinbelegunstabelle

Bauteil Pin
Servo Zeigefinger 2
Servo Mittelfinger 3
Servo Ringfinger 4
Getriebemotor Vorwärts 5
Getriebemotor Rückwärts 6
Getriebemotor Geschwindigkeit 7
Piezo Lautsprecher 8
Dehnungsmessstreifen Zeigefinger A3
Dehnungsmessstreifen Ringfinger A5

Ergebnis und Fazit

Alles in Allem sind wir sehr zufrieden mit unserem Projekt, die Aufgaben, die der Roboter können müsste und sollte funktionieren fast ohne Probleme und wir haben es sogar geschafft, einen Teil der zusätzlichen Funktionen zu implementieren. An einigen Punkten könnte man jedoch noch arbeiten, hauptsächlich an dem Aufbau der Konstruktion wie den Fingern und der Verbindung mit den Servos, da diese nicht sehr schön und fest angebracht sind und regelmäßig neu befestigt werden müssen. Des weiteren könnte man mit mehr Ressourcen und Kreativität die Finger mit anderen Materialen bauen und dem Arm ein ästhetischeres Aussehen geben. Schön wäre außerdem eine Implementierung weiterer Spielmodi, wie z.B. eines „Best of 3 / Best of 5“ Modi und die dazu passende Ausgabe der Zwischenergebnisse mit einer erweiterten Tonausgabe mit eigen aufgenommenen Sprachausgaben und Lautsprecher.
Insgesamt haben wir aber viel gelernt über die Programmierung verschiedenster Elemente und hatten vor Allem Spaß an unserer Arbeit und dem Testen und wirklichen Spielen gegen unseren Challenger, was letztendlich unser eigentliches Ziel war.


Code

projektewise19/challengerpublic/start.txt · Zuletzt geändert: 2020/04/07 14:02 von d.golovko