RoboSoccer Gruppe C1 - WS 17/18: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Datei:Roboboss2.jpg|rechts|300px|Roboboss]] | |||
[[Datei: | |||
== Einleitung == | == Einleitung == | ||
=== Teammitglieder === | === Teammitglieder === | ||
* [http://193.175.248.52/wiki/index.php/Benutzer:Sebastian_Hoffmann Sebastian Hoffmann]: | |||
** Programmierung | |||
** Videoschnitt | |||
* [http://193.175.248.52/wiki/index.php/Benutzer:Benjamin_Kran Benjamin Kran] | |||
** Bauplan Lego Designer | |||
** Programmablaufplan | |||
* [http://193.175.248.52/wiki/index.php/Benutzer:Matthias_Stork Matthias Stork] | |||
** Wiki-Artikel | |||
** Plakat | |||
== Das Spielfeld == | == Das Spielfeld == | ||
[[Datei:Spielfeld2.JPG|rechts|mini|Bild des Spielfelds <ref> https://campusapp01.hshl.de/pluginfile.php/325636/mod_resource/content/1/inf_I_prak_feld.pdf </ref>]] | [[Datei:Spielfeld2.JPG|rechts|mini|Bild des Spielfelds <ref> https://campusapp01.hshl.de/pluginfile.php/325636/mod_resource/content/1/inf_I_prak_feld.pdf </ref>]] | ||
* Länge: 183cm | |||
* Breite: 122cm | |||
* Torbreite: 45cm | |||
* Torhöhe: 14cm | |||
Die Maße des Spielfeldes waren auch beim Bau des Roboters von Bedeutung. Ist der Roboter zu groß, kann er recht schlecht auf dem kleinen Spielfeld manövrieren. | |||
== Hardware == | == Hardware == | ||
[[Datei:Plakatc1.JPG|rechts|mini|Roboboss Plakat]] | [[Datei:Plakatc1.JPG|rechts|mini|Roboboss Plakat]] | ||
Zeile 50: | Zeile 43: | ||
Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls. | Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls. | ||
== Spielstrategie == | |||
[[Datei:Papc1.jpg|links|mini|Programmablaufplan]] | |||
== Methoden == | |||
=== Werteausgabe === | === Werteausgabe === | ||
Zeile 61: | Zeile 56: | ||
Zur Überprüfung der aktuellen Werte zeigt die Funktion „Werteausgabe“ diese auf dem Display des NXT an. | Zur Überprüfung der aktuellen Werte zeigt die Funktion „Werteausgabe“ diese auf dem Display des NXT an. | ||
* Bereich (Infrarotsensor) | |||
* Entfernung zum nächsten Objekt (Ultraschallsensor) | |||
* Taster gedrückt (ja, nein) | |||
* Signalstärke des empfangenen Infrarotsignals | |||
* Himmelsrichtung in Grad (Kompassensor) | |||
Zeile 74: | Zeile 69: | ||
=== Ballschuss === | === Ballschuss === | ||
Anhand des Infrarotsignals überprüft der Roboter, ob der Ball in erreichbarer Nähe ist. Ist dies der Fall greift er den Ball, bleibt stehen sobald der Taster getastet wurde und richtet sich nach Westen aus. Ist er ausgerichtet schießt er den Ball. | Anhand des Infrarotsignals überprüft der Roboter, ob der Ball in erreichbarer Nähe ist. | ||
Ist dies der Fall greift er den Ball, bleibt stehen sobald der Taster getastet wurde und richtet sich nach Westen aus. Ist er ausgerichtet schießt er den Ball. | |||
== Software == | == Software == | ||
Zeile 83: | Zeile 80: | ||
Im folgenden werden exemplarisch einige, der von uns verwendeten Methoden zur Ansteuerung der Sensoren und Motoren vorgestellt. | Im folgenden werden exemplarisch einige, der von uns verwendeten Methoden zur Ansteuerung der Sensoren und Motoren vorgestellt. | ||
OnFwd(OUT_B,50); | |||
OnFwdSync(OUT_ ,75, 50); | * OnFwd(OUT_B,50); | ||
RotateMotor(OUT_A, 100, 50); | * OnFwdSync(OUT_ ,75, 50); | ||
SetSensorLowspeed(IN_3); | * RotateMotor(OUT_A, 100, 50); | ||
SetSensorTouch(S2); | * SetSensorLowspeed(IN_3); | ||
* SetSensorTouch(S2); | |||
Zeile 102: | Zeile 100: | ||
Dieses Programm würde bei jedem Programmstart ausgeführt und übergibt die entsprechenden Werte an die Methode „Ballschuss“. | Dieses Programm würde bei jedem Programmstart ausgeführt und übergibt die entsprechenden Werte an die Methode „Ballschuss“. | ||
== Video zu Roboboss == | |||
[https://www.youtube.com/watch?v=iwFnJQq6FF4 Link zum Video (YouTube)] | |||
== Einzelnachweise == | == Einzelnachweise == | ||
<references /> | <references /> | ||
'''Autor:''' Matthias Stork | |||
---- | |||
→ zurück zum Hauptartikel: [[Informatikpraktikum_MTR|Informatikpraktikum]] |
Aktuelle Version vom 25. Januar 2018, 12:18 Uhr
Einleitung
Teammitglieder
- Sebastian Hoffmann:
- Programmierung
- Videoschnitt
- Benjamin Kran
- Bauplan Lego Designer
- Programmablaufplan
- Matthias Stork
- Wiki-Artikel
- Plakat
Das Spielfeld
- Länge: 183cm
- Breite: 122cm
- Torbreite: 45cm
- Torhöhe: 14cm
Die Maße des Spielfeldes waren auch beim Bau des Roboters von Bedeutung. Ist der Roboter zu groß, kann er recht schlecht auf dem kleinen Spielfeld manövrieren.
Hardware
Aus der Vielfalt der zur Verfügung stehenden Sensoren verwendet unser Roboter:
- Tastsensor
- Ultraschallsensor
- Infrarotsensor
- Kompasssensor
Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls.
Spielstrategie
Methoden
Werteausgabe
Zur Überprüfung der aktuellen Werte zeigt die Funktion „Werteausgabe“ diese auf dem Display des NXT an.
- Bereich (Infrarotsensor)
- Entfernung zum nächsten Objekt (Ultraschallsensor)
- Taster gedrückt (ja, nein)
- Signalstärke des empfangenen Infrarotsignals
- Himmelsrichtung in Grad (Kompassensor)
Ballverfolgung
Um den Ball, welcher Infrarotsignale aussendet, möglichst schnell auf dem Spielfeld zu finden vergleicht der Roboter mithilfe des Infrarotsensors die Signalstärken aus den jeweiligen Bereichen und fährt schließlich in die Richtung des stärksten Signals.
Ballschuss
Anhand des Infrarotsignals überprüft der Roboter, ob der Ball in erreichbarer Nähe ist. Ist dies der Fall greift er den Ball, bleibt stehen sobald der Taster getastet wurde und richtet sich nach Westen aus. Ist er ausgerichtet schießt er den Ball.
Software
Zur Erstellung des Programmablaufplans wurde MS Visio benutzt. Zur Umsetzung des Konzepts und Implementierung des Programms wurde "BrixCCC" (BrixC Command Center) verwendet. Dieses verwendet die Programmiersprache NXC (Not eXactly C).
Im folgenden werden exemplarisch einige, der von uns verwendeten Methoden zur Ansteuerung der Sensoren und Motoren vorgestellt.
- OnFwd(OUT_B,50);
- OnFwdSync(OUT_ ,75, 50);
- RotateMotor(OUT_A, 100, 50);
- SetSensorLowspeed(IN_3);
- SetSensorTouch(S2);
Probleme und Schwierigkeiten
Häufig musste Roboboss fast vollständig neu aufgebaut werden, da die Sensoren keinen Platz fanden an dem sie fehlerfrei funktionieren konnten. Auch die Erstellung des Bauplans mithilfe des Lego Digital Designer verlief nicht ohne Probleme. Den Brick im Programm um einen bestimmten Winkel gedreht zu positionieren gelang uns zum Beispiel nicht.
Ausblick
Da das Zugreifen der Klaue auf der Stärke des empfangenen Infrarotsignals basiert, entstehen Probleme beim rechtzeitigen Zugreifen der Klaue durch variierender Ladung der Akkumulatoren des Balls bzw. unterschiedliche Reflektionswerte des Bodens. So muss dieser Wert jedes Mal im Programm den aktuellen Begebenheiten angepasst werden. Dies könnte man in einem Unterprogramm lösen, welches die Signalstärke des Balls bei jedem Programmstart ermittelt und so genau bestimmt bei welcher Stärke die Klaue zugreifen soll. Dieses Programm würde bei jedem Programmstart ausgeführt und übergibt die entsprechenden Werte an die Methode „Ballschuss“.
Video zu Roboboss
Einzelnachweise
Autor: Matthias Stork
→ zurück zum Hauptartikel: Informatikpraktikum