RoboSoccer Gruppe C1 - WS 17/18: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ '''Autor:''' Matthias Stork == Einleitung == === Teammitglieder === In diesem Abschnitt werden kurz die Teammitglieder, die an diesem Projekt beteiligt war…“)
 
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


'''Autor:''' Matthias Stork  
'''Autor:''' Matthias Stork  
[[Datei:Roboboss.jpg|rechts|300px|Roboboss]]
== Einleitung ==


== Einleitung ==
=== Teammitglieder ===
=== Teammitglieder ===
In diesem Abschnitt werden kurz die Teammitglieder, die an diesem Projekt beteiligt waren und ihre Tätigkeiten vorgestellt.
 
# Sebastian Hoffmann:
# Sebastian Hoffmann:
#* Programmierung
#* Programmierung
#* Videoschnitt
#* Videoschnitt
#*
 
#*
#*
# Benjamin Kran
# Benjamin Kran
#* Bauplan Lego Designer
#* Bauplan Lego Designer
#* Programmablaufplan
#* Programmablaufplan
#
 
# Matthias Stork
# Matthias Stork
#* Wiki-Artikel
#* Wiki-Artikel
Zeile 39: Zeile 37:


== Hardware ==
== Hardware ==
[[Datei:Plakatc1.JPG|rechts|mini|Roboboss Plakat]]


Aus der Vielfalt der zur Verfügung stehenden Sensoren verwendet unser Roboter den Tast-, Ultraschall-, Infrarot und Kompasssensor.




Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls.
Aus der Vielfalt der zur Verfügung stehenden Sensoren verwendet unser Roboter:
 
# Tastsensor
[[Datei:Plakatc1.JPG|rechts|mini|Roboboss Plakat]]
# Ultraschallsensor
[[Datei:Roboboss.jpg|rechts|mini|Roboboss]]
# Infrarotsensor
 
# Kompasssensor




Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls.




Zeile 57: Zeile 56:


=== Werteausgabe ===
=== Werteausgabe ===
(Screenshot)
[[Datei: Werteausgabe.JPG|rechts|mini|Ausschnitt des Codes zur Ausgabe von dem aktuellen Bereich und der aktuellen Entfernung  Plakat]]
 


Zur Überprüfung der aktuellen Werte zeigt diese Funktion sie 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)
# Bereich (Infrarotsensor)
Zeile 69: Zeile 69:


=== Ballverfolgung ===
=== Ballverfolgung ===
(Screenshot)


Vergleicht die Signalstärken aus den jeweiligen Bereichen und fährt schließlich in die Richtung, des stärksten Signals.
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 ===
=== Ballschuss ===
(Screenshot vom Ballschuss)


Überprüft anhand des Infrarotsignals, 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. Dann 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 ==
Zur Realisierung des Konzepts und Implementierung der Unterprogramme und des Hauptprogramms  wurde das BrixC Command Center (kurz: BrixCCC) verwendet. Dieses benutzt die Programmiersprache NXC (Not eXactly C).
Da an dieser Stelle eine vollständige Präsentation des Spielprogramms nicht vorgesehen ist, werden „nur“ die Befehle zur Ansteuerung der Motoren sowie Sensoren vorgestellt.
…OnFwd(OUT_  ,75);
OnRev(OUT_ ,75);
OnFwdSync(OUT_ ,75, 50);
OnFwdReg(OUT_ ,75,Regmode)
Break(OUT_ )
Float(OUT_ )


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).


=== Unterabschnitt ===
Im folgenden werden exemplarisch einige, der von uns verwendeten Methoden zur Ansteuerung der Sensoren und Motoren vorgestellt.
# Nutzen Sie Aufzählungen
#* mit verschiedenen Schachtelungen
#* und so weiter
# zweite Ebene
#* mit erneuter Unterebene


=== Bilder ===
OnFwd(OUT_B,50);
Bauen Sie Bilder ein, am besten mit darin gekennzeichneten Stellen, die Sie dann im Text erklären.
OnFwdSync(OUT_ ,75, 50);
 
RotateMotor(OUT_A, 100, 50);
 
SetSensorLowspeed(IN_3);
=== Tabellen ===
SetSensorTouch(S2);
Eine tolle Tabelle ist hier dargestellt.
{| class="mw-datatable"
! style="font-weight: bold;" | Spalte 1
! style="font-weight: bold;" | Spalte 2
! style="font-weight: bold;" | Spalte 3
|-
| blabla
| sowieso
| sowieso
|-
| test
| sowieso
| test1
|}


=== Formatierung ===
Nutzen Sie zur Formatierung Beispiele, z. B. aus dem weltbekannten Wikipedia selbst (das ist die gleiche Syntax!) oder anderer Hilfeseiten wie z. B. <ref> [http://meta.wikimedia.org/wiki/Help:Editing/de Hilfeseite des Wikimedia-Projekts] </ref>.


== Zusammenfassung ==


== 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 ==
== Ausblick ==
Was kann/muss noch verbessert werden?
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“.

Version vom 24. Januar 2018, 19:41 Uhr


Autor: Matthias Stork

Roboboss
Roboboss

Einleitung

Teammitglieder

  1. Sebastian Hoffmann:
    • Programmierung
    • Videoschnitt
  1. Benjamin Kran
    • Bauplan Lego Designer
    • Programmablaufplan
  1. Matthias Stork
    • Wiki-Artikel
    • Plakat

Ziel des Praktikums

Aufgabe und Ziel des Praktikums war es einen LEGO NXT Roboter so zu konstruieren und zu programmieren, dass er nach den Regeln Regeln ein Fussballmatch gegen einen anderen NXT Roboter spielen kann


Das Spielfeld

Bild des Spielfelds aus [1]


  1. Länge: 183cm
  2. Breite: 122cm
  1. Torbreite: 45cm
  2. Torhöhe: 14cm


Hardware

Roboboss Plakat


Aus der Vielfalt der zur Verfügung stehenden Sensoren verwendet unser Roboter:

  1. Tastsensor
  2. Ultraschallsensor
  3. Infrarotsensor
  4. Kompasssensor


Insgesamt sind am Roboter drei Servomotoren verbaut. Hierzu dienen zwei der Fortbewegung und einer zum Schießen des Balls.


Spielstrategie

Werteausgabe

Ausschnitt des Codes zur Ausgabe von dem aktuellen Bereich und der aktuellen Entfernung Plakat


Zur Überprüfung der aktuellen Werte zeigt die Funktion „Werteausgabe“ diese auf dem Display des NXT an.

  1. Bereich (Infrarotsensor)
  2. Entfernung zum nächsten Objekt (Ultraschallsensor)
  3. Taster gedrückt (ja, nein)
  4. Signalstärke des empfangenen Infrarotsignals
  5. 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“.