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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(99 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Plakat
'''Autor:''' [[Benutzer:Lars Unverzagt|Lars Unverzagt]]  und [[Benutzer:Daniel Schiewe|Daniel Schiewe]]
Bauanleitung
Programm ablaufplan
Einleitung allgemeines zum Praktikum
Bilder vom Roboter
Spielstrategie
Funktionsweise der Bauteile
Ende




[[Kategorie:HowTo]]
== Einleitung ==
In dem Informatik-Praktikum des Wintersemesters 17/18, war es unsere Aufgabe einen vollständigen Fußballroboter aus Lego zu kreieren und zu programmieren. Er soll in der Lage sein einen Infrarotball selbstständig zu finden und zu fangen. Nach der Ausrichtung zum Tor soll er auf das Tor schießen.
 
Das ganze Spielprinzip unterliegt genauen Regeln, die beinhalten was der Roboter darf und was nicht erlaubt ist. Genauere Informationen zu den Regeln finden sie [http://193.175.248.52/wiki/index.php/Regelwerk_RoboSoccer hier <ref> Regelwerk - http://193.175.248.52/wiki/index.php/Regelwerk_RoboSoccer </ref>]. 
 
=== Teammitglieder ===
* '''Lars Unverzagt'''
** Konstruktion des Roboters
** Entwicklung einer Spielstrategie
** Programmierung in BricxCC (NXC)
** Erstellung des HSHL - Wiki - Artikel
** Erstellung des Youtube-Videos
* '''Daniel Schiewe'''
** Nachbau des Roboters im Lego-Designer inkl. Bauanleitung
** Entwicklung einer Spielstrategie
** Programmierung in BricxCC (NXC)
** Erstellung des HSHL - Wiki - Artikel
** Erstellung des Youtube-Videos
 
== Das Spielfeld ==
Das Spielfeld ist 183cm lang und 122cm breiten. Dies sind die genauen Maße eines RoboSoccer - Spielfeld. Die beiden Tore sind 45cm breit und 14cm hoch.
Für weitere Informationen zu dem RoboSooccer - Spielfeld können sie  [https://campusapp01.hshl.de/pluginfile.php/325636/mod_resource/content/1/inf_I_prak_feld.pdf hier <ref> Spielfeld - https://campusapp01.hshl.de/pluginfile.php/325636/mod_resource/content/1/inf_I_prak_feld.pdf </ref>]klicken.
 
== Hardware ==
Unser Roboter wurde auf Basis eines Lego-Mindstorms-Bausatz gebaut. In diesem Set sind mehrere Motoren und verschiedene Sensoren vorhanden.
Folgende Sensoren sind im Bausatz enthalten: Ultraschallsensor, Tastsensoren, Lichtsensor und Geräuschsensor
 
Von unserem Professor haben wir zusätzlich einen [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 Infrarotsensor <ref> Infrarotsensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 </ref>] sowie einen [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 Kompasssensor  <ref>Kompasssensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 </ref>]enthalten.
 


'''Autor:''' [Lars Unverzagt, Daniel Schiewe]


== Einleitung ==
Dieser Artikel ist eine Vorlage für einen Wiki-Artikel. Tipp: Kopieren Sie den gesamten Quelltext und ändern Sie ihn so, dass er Ihr Projekt beschreibt.


Dieser Artikel ist aus der Kategorie [[:Kategorie:HowTo|"How-To"]].
=== Beispiele für Befehle der Sensoren und Aktoren: ===
 
 
 
'''Motoransteuerung:''' <br>
OnFwdSync (Motoreingänge, Geschwindigkeit , Drehwinkel);<br>
OnFwd (Motoreingänge , Geschindigkeit);<br>
OnRevSync (Motoreingänge, Geschwindigkeit , Drehwinkel);<br>
OnRev (Motoreingänge , Geschindigkeit);<br>
Off (Motoreingänge);
 
 
'''Infrarotsensor:'''<br>
''#define IRSEEKER IN_1'' (''Sensoreingang am Microcontroller'')  &nbsp; &nbsp; &nbsp;    (Dieser Befehl legt fest das der [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 Infrarotsensor <ref> Infrarotsensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 </ref>] unter dem Namen IRSEEKER im nachfolgenden Prgramm bekannt ist und am Port eins angeschlossen ist.  <br>
 
ReadSensorHTIRSEEKER (IRSEEKER) (''Sensoreingang am Microcontroller'') &nbsp; &nbsp; &nbsp;      (Dieser Befehl liest die Werte des Sensors aus.) <br>
 
SetSenosorLowspeed (IRSEEKER) &nbsp;&nbsp;&nbsp; ( Die einlese Geschwindigkeit wird verringert. ) <br>
 
 
'''Kompasssensor:''' <br>
''#define COMPASS IN_2'' (''Sensoreingang am Microcontroller'') &nbsp;&nbsp;&nbsp; (Dieser Befehl legt fest das der [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 Kompasssensor  <ref>Kompasssensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 </ref>] unter dem Namen COMPASS im nachfolgenden Prgramm bekannt ist und am Port zwei angeschlossen ist. <br>
 
aktuellerKurs &nbsp; = &nbsp; SensorHTCompass (IN_2) &nbsp;&nbsp;&nbsp; (Dieser Befehl schreibt in eine Variable (''aktuellerKurs'') den eingelesenen Wert.)<br>
 
SetSenosorLowspeed (COMPASS) &nbsp;&nbsp;&nbsp; ( Die einlese Geschwindigkeit wird verringert. )<br>
<br>
 
'''Tastsensor:'''<br>
SetSensorTouch (IN_4) &nbsp;&nbsp;&nbsp; ( Der Tastsensor ist aktiv im Port vier.)
 
== Spielstrategie ==
Zur Entwicklung der nachstehenden Spielstrategie haben wir das folgende Programm zur Hilfe benutzt.
[http://friedrich-folkmann.de/papdesigner/Hauptseite.html „PaP-Designer“ <ref> Pap-Designer http://friedrich-folkmann.de/papdesigner/Hauptseite.html </ref>]
 
[[Datei:Spielstrategie2.png|none|mini|Spielstrategie]]
 
== Umsetzung der Spielstrategie ==
Um die Spielstrategie erfolgreich umsetzen zu können, haben wir folgendes Programm verwendet.[http://bricxcc.sourceforge.net/ Bricx Command Center <ref> Bricx Command Center - http://bricxcc.sourceforge.net/ </ref>] (kurz: BricxCC)  Dieses benutzt die Programmiersprache [https://de.wikipedia.org/wiki/Not_eXactly_C NXC <ref> NXC - https://de.wikipedia.org/wiki/Not_eXactly_C </ref>].
<br><br>
 
'''Nun zur Spielstrategie:'''
 
Bevor das Spiel beginnt wird manuell die Richtung festgelegt in die er während des Spiels schießt.
Sobald der Startschuss fälllt wird das Programm durch den "On-Button" gestartet. Die Sensoren sind aktiv.
Der [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 Infrarotsensor <ref> Infrarotsensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 </ref>] empfängt die Signale des Balls und kann Bewegungen des Balls wahrnehmen. Durch seine 5 Bereiche weiß er genau, wo sich der Ball befindet und kann präzise auf ihn zusteuern.
 
Während er auf den Ball zufährt rotiert sein Fangarm dauerhaft, um den Ball nicht zu verpassen.
 


== Inhalt ==
Wenn der Roboter den Ball erwischt hat, und der Ball vor den Tastsensor gedrückt wird, hält der Roboter an, um nicht gegen die offiziellen Regeln zu verstoßen.
Die Gliederung des Inhalts hängt stark von Ihrem individuellen Projekt ab. Benutzen Sie einen leicht nachvollziehbaren roten Faden und gliedern Sie nach gesundem Menschenverstand!
Der Microcontroller errechnet, um wieviel Grad sich der Roboter derehen muss, um auf das richtige Tor zu schießen. Dies macht er Mithilfe des am Start festgelegten Wertes und der aktuellen Richtung, die vom [http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 Kompasssensor  <ref>Kompasssensor - http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034 </ref>] eingelesen wird.


Sobald er die richtige Richtung gefunden hat dreht der Fangarm in die entgegengesetzte Richtung. Der Ball wird dann im Optimalfall in das gegnerische Tor geschossen. <br>
<br>


=== Unterabschnitt ===
 
# Nutzen Sie Aufzählungen
#* mit verschiedenen Schachtelungen
#* und so weiter
# zweite Ebene
#* mit erneuter Unterebene


=== Bilder ===
Bauen Sie Bilder ein, am besten mit darin gekennzeichneten Stellen, die Sie dann im Text erklären.
[[Datei:RetroGameStation_HSHL_Messe.jpg|rechts|mini|Beispielbild mit Quelle <ref> Eigenes Foto </ref>]]


=== Tabellen ===
Da wir vor uns vor Plagiaten schützen wollen, stellen wir unseren Quellcode nicht online, sondern nur allgemeine Befehle, die wir verwendet haben.
Eine tolle Tabelle ist hier dargestellt.
Diese können nachstehend gelesen werden oder in folgender PDF nachgelesen werden. [[Datei:NXC-Befehle.pdf|none|mini|NXC Befehle]]
{| 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 ===
== Werbeplakat ==
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>.
Um unseren Roboter zu präsentieren, haben wir ein Plakat erstellt, was sie hier sehen können.
[[Datei: PlakatRoboSoccer.png|none|mini|Plakat]]


== Zusammenfassung ==
== YouTube - Video ==
Was ist das Ergbnis?
Um zu demonstrieren, wie unser Roboter auf dem Spielfeld aggiert, haben wir ein Kurzes Youtube-Video erstellt.
Das Ergebnis dieses Artikels ist eine Vorlage, mit der Nutzer des Wikis schnell und leicht eigene Artikel verwirklichen können. Diese Vorlage ist Bestandteil der Anleitungen aus [http://193.175.248.171/wiki/index.php/Kategorie:HowTo den How-To's].
In dem Video ist zu sehen, wie der Roboter den Ball sucht, auf den Ball zufährt, sich ausrichtet und auf das Torschießt.


[https://youtu.be/0y1E8U6_aA8 Hier  <ref>Eigenes Youtube-Video - https://youtu.be/0y1E8U6_aA8 </ref>] finden sie den Link zum Video.


== Ausblick ==
== Bilder ==
Was kann/muss noch verbessert werden?
Hier sehen Sie Bilder von unserem Roboter Carlos.
[[Datei:vorderansicht.jpeg|links|mini|Vorderansicht  <ref> Eigenes Foto </ref>]]
[[Datei:Seitenansichtrechts.jpeg|links|mini|Seitenansicht links  <ref> Eigenes Foto </ref>]]
[[Datei:seitenansichhtlinks.jpeg|links|mini|Seitenansicht rechts  <ref> Eigenes Foto </ref>]]
<br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br>


==Bauanleitung==
Wenn Sie den Roboter nachbauen wollen, finden sie hier eine Bauanleitung und im nachstehenden Bild eine Grafik von unseren benutzten Sensoren und Aktoren.
[[Datei:bauanleitung_Roboter_Carlos.pdf|links|mini|Vorderansicht  <ref> Eigene Bauanleitung </ref>]] <br><br>
[[Datei:SensorenAktoren.jpeg|links|mini|Bild zur Verdeutlichung der Sensoren und Aktoren  <ref> Eigenes Foto </ref>]]
<br><br><br><br><br><br><br><br><br><br>


== Literaturverzeichnis ==
== Literaturverzeichnis ==
<references />
<references />
→ zurück zum Hauptartikel: [[RoboSoccer_WS_17/18|Informatikpraktikum WS 17/18]]

Aktuelle Version vom 3. Januar 2020, 15:08 Uhr

Autor: Lars Unverzagt und Daniel Schiewe


Einleitung

In dem Informatik-Praktikum des Wintersemesters 17/18, war es unsere Aufgabe einen vollständigen Fußballroboter aus Lego zu kreieren und zu programmieren. Er soll in der Lage sein einen Infrarotball selbstständig zu finden und zu fangen. Nach der Ausrichtung zum Tor soll er auf das Tor schießen.

Das ganze Spielprinzip unterliegt genauen Regeln, die beinhalten was der Roboter darf und was nicht erlaubt ist. Genauere Informationen zu den Regeln finden sie hier [1].

Teammitglieder

  • Lars Unverzagt
    • Konstruktion des Roboters
    • Entwicklung einer Spielstrategie
    • Programmierung in BricxCC (NXC)
    • Erstellung des HSHL - Wiki - Artikel
    • Erstellung des Youtube-Videos
  • Daniel Schiewe
    • Nachbau des Roboters im Lego-Designer inkl. Bauanleitung
    • Entwicklung einer Spielstrategie
    • Programmierung in BricxCC (NXC)
    • Erstellung des HSHL - Wiki - Artikel
    • Erstellung des Youtube-Videos

Das Spielfeld

Das Spielfeld ist 183cm lang und 122cm breiten. Dies sind die genauen Maße eines RoboSoccer - Spielfeld. Die beiden Tore sind 45cm breit und 14cm hoch. Für weitere Informationen zu dem RoboSooccer - Spielfeld können sie hier [2]klicken.

Hardware

Unser Roboter wurde auf Basis eines Lego-Mindstorms-Bausatz gebaut. In diesem Set sind mehrere Motoren und verschiedene Sensoren vorhanden. Folgende Sensoren sind im Bausatz enthalten: Ultraschallsensor, Tastsensoren, Lichtsensor und Geräuschsensor

Von unserem Professor haben wir zusätzlich einen Infrarotsensor [3] sowie einen Kompasssensor [4]enthalten.



Beispiele für Befehle der Sensoren und Aktoren:

Motoransteuerung:
OnFwdSync (Motoreingänge, Geschwindigkeit , Drehwinkel);
OnFwd (Motoreingänge , Geschindigkeit);
OnRevSync (Motoreingänge, Geschwindigkeit , Drehwinkel);
OnRev (Motoreingänge , Geschindigkeit);
Off (Motoreingänge);


Infrarotsensor:
#define IRSEEKER IN_1 (Sensoreingang am Microcontroller)       (Dieser Befehl legt fest das der Infrarotsensor [5] unter dem Namen IRSEEKER im nachfolgenden Prgramm bekannt ist und am Port eins angeschlossen ist.

ReadSensorHTIRSEEKER (IRSEEKER) (Sensoreingang am Microcontroller)       (Dieser Befehl liest die Werte des Sensors aus.)

SetSenosorLowspeed (IRSEEKER)     ( Die einlese Geschwindigkeit wird verringert. )


Kompasssensor:
#define COMPASS IN_2 (Sensoreingang am Microcontroller)     (Dieser Befehl legt fest das der Kompasssensor [6] unter dem Namen COMPASS im nachfolgenden Prgramm bekannt ist und am Port zwei angeschlossen ist.

aktuellerKurs   =   SensorHTCompass (IN_2)     (Dieser Befehl schreibt in eine Variable (aktuellerKurs) den eingelesenen Wert.)

SetSenosorLowspeed (COMPASS)     ( Die einlese Geschwindigkeit wird verringert. )

Tastsensor:
SetSensorTouch (IN_4)     ( Der Tastsensor ist aktiv im Port vier.)

Spielstrategie

Zur Entwicklung der nachstehenden Spielstrategie haben wir das folgende Programm zur Hilfe benutzt. „PaP-Designer“ [7]

Spielstrategie

Umsetzung der Spielstrategie

Um die Spielstrategie erfolgreich umsetzen zu können, haben wir folgendes Programm verwendet.Bricx Command Center [8] (kurz: BricxCC) Dieses benutzt die Programmiersprache NXC [9].

Nun zur Spielstrategie:

Bevor das Spiel beginnt wird manuell die Richtung festgelegt in die er während des Spiels schießt. Sobald der Startschuss fälllt wird das Programm durch den "On-Button" gestartet. Die Sensoren sind aktiv. Der Infrarotsensor [10] empfängt die Signale des Balls und kann Bewegungen des Balls wahrnehmen. Durch seine 5 Bereiche weiß er genau, wo sich der Ball befindet und kann präzise auf ihn zusteuern.

Während er auf den Ball zufährt rotiert sein Fangarm dauerhaft, um den Ball nicht zu verpassen.


Wenn der Roboter den Ball erwischt hat, und der Ball vor den Tastsensor gedrückt wird, hält der Roboter an, um nicht gegen die offiziellen Regeln zu verstoßen. Der Microcontroller errechnet, um wieviel Grad sich der Roboter derehen muss, um auf das richtige Tor zu schießen. Dies macht er Mithilfe des am Start festgelegten Wertes und der aktuellen Richtung, die vom Kompasssensor [11] eingelesen wird.

Sobald er die richtige Richtung gefunden hat dreht der Fangarm in die entgegengesetzte Richtung. Der Ball wird dann im Optimalfall in das gegnerische Tor geschossen.



Da wir vor uns vor Plagiaten schützen wollen, stellen wir unseren Quellcode nicht online, sondern nur allgemeine Befehle, die wir verwendet haben. Diese können nachstehend gelesen werden oder in folgender PDF nachgelesen werden. Datei:NXC-Befehle.pdf

Werbeplakat

Um unseren Roboter zu präsentieren, haben wir ein Plakat erstellt, was sie hier sehen können.

Plakat

YouTube - Video

Um zu demonstrieren, wie unser Roboter auf dem Spielfeld aggiert, haben wir ein Kurzes Youtube-Video erstellt. In dem Video ist zu sehen, wie der Roboter den Ball sucht, auf den Ball zufährt, sich ausrichtet und auf das Torschießt.

Hier [12] finden sie den Link zum Video.

Bilder

Hier sehen Sie Bilder von unserem Roboter Carlos.

Vorderansicht [13]
Seitenansicht links [14]
Seitenansicht rechts [15]































Bauanleitung

Wenn Sie den Roboter nachbauen wollen, finden sie hier eine Bauanleitung und im nachstehenden Bild eine Grafik von unseren benutzten Sensoren und Aktoren. Datei:Bauanleitung Roboter Carlos.pdf

Bild zur Verdeutlichung der Sensoren und Aktoren [17]











Literaturverzeichnis


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