RoboSoccer Gruppe A4 - WS 17/18

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Lukas Kriete


Einleitung

In diesem Artikel möchte wir (Moritz Oberg, Alessio Cebeci, Lukas Kriete, Gruppe A4) euch, unseren Roboter "Bobby" vorstellen. Dieser Roboter ist das Endergebnis unseres Informatikpraktikums Wintersemester 17/18. Die Aufgabe in unserem Praktikum war es, einen Roboter zu konstruieren und zu programmieren, der einen Inferotball erkennt, zu ihm hinfährt, in greift und danach ihn Richtung Tor schießt. Am Ende des Praktikums wir ein Robosoccertunier veranstaltet, in dem unser Robotor seine Fähigkeiten unter Beweis stellen muss. Dieses Projekt findet im Rahmen des Informatikpraktikums unter der Aufsicht von Prof. Schneider statt.

Teammitglieder

Im folgenden werden die Teammitglieder und ihre Aufgaben kurz vorgestellt.

  1. Moritz Oberg
    • Entwicklung und programmieren mithilfe von BricxCC
    • Film für Youtube
  2. Alessio Cebeci
    • Entwicklung und programmieren mithilfe von BricxCC
    • Konstruktion von Bobby in Lego Digital Designer
    • Bau des Roboters
  3. Lukas Kriete
    • Entwicklung einer Spielstrategie mithilfe von PAP-Designer
    • Artikel auf dem Wiki der HSHL
    • Erstellung des Werbeplaketes

Hardware

Fahrzeugmerkmale: Beschriftung[1]


1. Unterkonstruktion

Die Unterkonstruktion besteht aus 2 Motoren. Die Motoren können die Rotationen auf einen Grad genau bestimmen. Dabei ist die maximale Umdrehungen 160 Umdrehungen/ Minuten und das maximale Drehmoment ca. 0,2 Nm.
Die Unterkonstruktion besteht aus zwei Servormotoren. An diesen sind extra große Reifen, wodurch es Bobby möglich ist, schnell zum Ball zu fahren oder sich zu drehen.
Außerdem haben wir beim Bau darauf geachten, die Unterkonstruktion möglichst tief zu bauen, da dadurch der Schwerpunkt von Bobby deutlich tiefer liegt.
Das dritte Rad ist eine Kugel, wodurch sich Bobby sehr gut drehen kann.

2. Schussarm/ Greifarm:

Der vordere Teil des Arms dient dazu den Ball festzuhalten. Auf der entgegengesetzten Seite befindet sich der Teil zum schießen. Der Motor drei
ist für den Fang- / Schussarmzuständig. Durch genaue Winkeleinstellung, lässt sich die Schussvorrichtung auf ein Grad genau steuern.

3. NXT-Brick

Der NXT- Brick ist das "Gehirn" von den Bobby. Bei ihm werden alle Sensoren und Motoren angeschlossen.


4. Infarot Sensor:

Empfangsbereiche: Infarotsensor[2]
Der Infrarotsensor (IRSEEKERV2 )besitzt 5 Detektoren, die in einem Radius von 240 Grad, Infrarotsignale erfassen können. Diese 5 Detektoren lassen sich in 9 Sektoren unterteilen um eine genaue Richtung des Infrarotsignales zu bestimmen. Basierend auf dem pyroelektrischen Prinzip, lässt sich sogar die Intensität der Infrarotstrahlen in den Detektoren bestimmen. Dadurch kann ein Abstand des Infrarotball`s ermittelt werden.









5. Tastsensor:

Dieser Sensor hat die Funktion, zu erkennen ob sich ein Ball in der Schussvorrichtung befindet. Prallt der Ball gegen den Splint des Tastsensors, bekommt der NXT das Signal 1. Dieses Signal kann mit Hilfe des Programmes weiter verarbeitet werden.

6. Kompass:

Der Sensor führt 100 Messungen pro Sekunde durch und übermittelt eine Zahl zwischen 0 und 359, die den Winkel zum Nordpol ausdrückt. Der Sensor verfügt über zwei Modi:
  1. Im Lesemodus übermittelt der Sensor jedes Mal einen Wert, wenn er vom intelligenten Lego Mindstorms NXT-Stein einen Lesebefehl erhält.
  2. Im Kalibriermodus kann der Sensor so eingestellt werden, dass er störende Magnetfelderdes Roboter-Elektromotors, der Batterien usw. neutralisiert.
Die Werte können als relative oder absolute Werte angezeigt werden. Das erleichtert die Programmierung, wenn der Roboter einer bestimmten Richtung folgen soll.

Spielstrategie: PAP

Hauptproramm

Fahrzeugmerkmale: Hauptprogramm[3]

Das Hauptprogramm besteht im Wesendlichen aus einer Dauerschleife welche die beiden Fubnktionen „zuballfahren“ und „ball“ enthält. Diese werden so lange ausgeführt bis das Programm manuell abgebrochen wird.

Zuballfahren

Fahrzeugmerkmale: Zuballfahren[4]

In der Funktion wird zunächst die Intensität des Infrarotsignals überprüft. Überschreitet die Intensität einen bestimmten Wert reduziert der Roboter seine Geschwindigkeit. Ansonsten fährt der Roboter mit voller Geschwindigkeit zum Ball während er seine Richtung immer anhand des direction-Wert des Infrarotsensors anpasst. Ist der Tastsensor des Roboters ausgelöst und die Intensität des Signals groß genug, gibt die Funktion keine weiteren Fahrbefehle und der Roboter hält an.

Ball

Fahrzeugmerkmale: Ball[5]

Die Funktion „ball“ schließt den vorhandenen Fang/Schuss-arm des Roboters sobald der Tastsensor eine Berührung registriert und ein bestimmter Infrarotwert überschritten wird. Wenn nach schließen des Arms der Tastsensor nicht gedrückt und das Infrarotsignal abgefallen ist, öffnet er den Arm wieder und bringt ihr in die Ausgangssituation. Ist der Ball gefangen ruft die Funktion eine weitere Unterfunktion „torausrichten“ auf welche so lange läuft bis der Roboter richtig ausgerichtet ist. Ist dies geschehen schießt der Roboter den Ball und bringt den Arm nach einer kurzen Wartezeit wieder in die Ausgangslage.

Torausrichten

Fahrzeugmerkmale: Torausrichten[6]

Die Funktion richtet den Roboter zum Tor aus indem sie sich am Kompasssensor orientiert und den Roboter in die Richtung dreht, in die die wenigsten Grad zu drehen sind. Gibt der Kompass den geforderten Wert zurück, stoppt die Funktion.

Ansteuerung der Aktoren

Als Aktuatoren haben wir nur die Motoren von NXT. Die nachfolgenden Befehle, beziehen sich auf die Möglichkeiten der Ansteuerung der Motoren

    • OnFwd() oder OnRev()
    • RotateMotor()
    • OnFwdReg() oder OnRevReg()
    • OnFwdSync() oder OnRevSync()
    • Off() oder Float()



Motor fährt geradeaus mit einer angegeben Geschwindigkeit
OnFwd(Ausgang_Motor, Leistung);


Motor fährt rückwärts mit einer angegeben Geschwindigkeit
OnRev(Ausgang_Motor, Leistung);


Motor rotiert mit einer angegeben Geschwindigkeit bis zu dem angegebenen Winkel
RotateMotor(Ausgang_Motor, Leistung, Winkel);


Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Vorwärts
OnFwdReg(Ausgang_Motor, Leistung, REGMODE);


Regulierungsmodus, zum synchronen Motorenlauf in Fahrtrichtung Rückwärts
OnRevReg(Ausgang_Motor, Leistung, REGMODE);


Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Vorwärts
OnFwdSync(Ausgang_Motor, Leistung, Radius);


Automatisches fahren einer Kurve durch Angaben eines Radius in Fahrtrichtung Rückwärts
OnRevSync(Ausgang_Motor, Leistung, Radius);


Motor bremst sofort ab
Off(Ausgang_Motor);


Motor läuft aus
Float (Ausgang_Motor);


Begriffe:
On = An; Fwd = Vorwärts; Rev = Rückwärts; Rotate = rotieren; Reg = Regulation; Off = Aus; Flout = gleiten

Ansteuerung der Sensor

Tastsensor:
Der Eingang X wird der Funktion des Sensors zugewiesen.
SetSensorTouch(IN_X)
Mit dieser Funktion, wird der Zustand (1/0) des Tastsensors ausgelesen.
Sensor(IN_X)


Kompasssensor:
Mit diesem Befehl wird der Kompass mit dem Eingang X verbunden
#define COMPASS IN_X
Mit der Funktion wird der Kompass ausgelesen und gibt einen Wert zwischen 0 und 359 raus
SensorHTCompass(IN_2)


Infarotsensor:
Mit diesem Befehl wir der Inferotsensor mit dem Eingang X verbunden
#define IRSEEKER IN_X


Mit der Funktion wird der Inferotsensor ausgelesen
ReadSensorHTIRSeeker2AC(IRSEEKER, dir, s1, s2, s3, s4, s5);



Spielfeld

Fahrzeugmerkmale: Zuballfahren[7]
Breite Spielfeld : 183cm
Länge Spielfeld : 122cm
Länge 11-Meter-Raum :30cm
Breite 11-Meter-Raum : 74cm












Werbebanner

Werbebanner

Link zum Video

Um unseren Booby in Action zu sehen und um uns kurz vorzustellen klicke auf den Link

Was haben wir gelernt?

  1. Grafische Programmierung mithilfe von NXT 2.1
  2. Praktische Anwendung der Programmierkenntnisse in der Sprache C
  3. Umgang mit SVN
  4. Sensoren und ihre Funktionsweise
  5. Teamarbeit und Aufgabenverteilung
  6. Nachvollziehabre Dokumentation im Quellcode
  7. Erstellung eines Filmes und eines Werbeposters


Link zu unserem svn-Ordner

Hier befindet sich unser svn-Ordner

Literaturverzeichnis

  1. Eigenes Foto
  2. Eigenes Foto
  3. Eigenes Foto
  4. Eigenes Foto
  5. Eigenes Foto
  6. Eigenes Foto
  7. Eigenes Foto


→ zurück zum Hauptartikel: Informatikpraktikum WS 17/18