RoboSoccer Gruppe A3 - WS 18/19: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(70 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Autoren:''' [[Benutzer: Florian Leben | Florian Leben]] und [[Benutzer: Robin Grimm | Robin Grimm]]
'''Autoren:''' [[Benutzer: Florian Leben | Florian Leben]] ,[[Benutzer: Robin Grimm | Robin Grimm]] und  [[Benutzer:Thomas Datche|Thomas Datche]]
 
==Einleitung==
 
 
 


Dozent: [[Benutzer:Ulrich Schneider|Prof. Dr. U. Schneider]]
[[Datei:plakat maximus.PNG|400px|thumb|Werbeposter <ref> Eigenes Foto </ref>]]


==Einleitung==
==Einleitung==


Ein wesentlicher Bestandteil des Informatik Moduls bestand aus dem Informatikpraktikum 1, in welchem wir ausgehend von einer konkreten Problemfeldbeschreibung, aus einem Lego NXT Bausatz einen Roboter konstruieren und programmieren mussten. Um die gestellte Aufgabenstellung selbständig zu erfüllen, mussten die Auswahl der Sensoren, Aktoren und deren Programmierung durch sinvolles Zeit-/ und Projektmanagement geprägt sein.


Die Aufgabe in dem Informatikpraktikum I, welches Teil des Informatik Moduls ist, war es, aus Lego NXT Bausätzen einen Fußballroboter zu bauen und zu programmieren. Jeder Roboter wurde in einer Gruppe 2-3 Studenten entwickelt. Am Ende des Semester traten alle Roboter in einem Turnier, immer 1 gegen 1 an, gegeneinander an. Zu gewinnnen gab es Ehre und Bonuspunkte.
Jeder Roboter wurde in 2-3er Gruppen von Studenten entwickelt, mit dem Ziel ein RoboSoccer Turnier zu gewinnen, welches am letzten Praktikumstermin stattgefunden hat.


* [[Regelwerk_RoboSoccer_2018|Regelwerk]]
* [[RoboSoccer WS 18/19|RoboSoccer]]-Turnier


== Gruppenmitglieder und ihre Aufgaben ==
== Gruppenmitglieder und ihre Aufgaben ==


=== [[Benutzer:Florian Leben|Florian Leben]] ===
=== [[Benutzer:Florian Leben|Florian Leben]] ===              
* Konstruktion des Roboters
* Konstruktion des Roboters
* Entwicklung der Spielstrategie
* Entwicklung der Spielstrategie mithilfe des PAP-Designers
* Umsetzung der Spielstrategie in Quellcode  
* Umsetzung der Spielstrategie in Quellcode  
* Entwurf des Werbeplakats
* Entwurf des Werbeplakats
* Verfassen des HSHL-Wiki-Artikels
* Nachbildung des Roboters im Lego Digital Designer
* Optimierung
* Erstellung des Videos


=== [[Benutzer:Robin Grimm|Robin Grimm]] ===
=== [[Benutzer:Robin Grimm|Robin Grimm]] ===
* Entwicklung der Spielstrategie
* Konstruktion des Roboters
* Entwicklung der Spielstrategie mithilfe des PAP-Designers
* Umsetzung der Spielstrategie in Quellcode   
* Umsetzung der Spielstrategie in Quellcode   
* Erstellung des Videos
* Verfassen des HSHL-Wiki-Artikels
* Verfassen des HSHL-Wiki-Artikels
* Optimierung
* Optimierung
=== [[Benutzer:Thomas Datche|Thomas Datche]] ===
*Konstruktion des Roboters
*Optimierung
==Robos Maximus==
===Image Film===


[https://youtu.be/9yC4Drxx9G0  Video zu Robos Maximus]


'''Autoren:''' [[Benutzer:Florian Lben|Florian Leben]] und [[Benutzer:Robin Grimm|Robin Grimm]]
===Design===
 
<gallery widths="500" heights="400" perrow="3">
[[Datei:plakat maximus.PNG|thumb|Plakat des Roboters <ref> Eigenes Foto </ref>]]
bild maximus.PNG|Übersetzung der Fangvorrichtung
 
sandy.jpg|Lego Designer
Dozent: [[Benutzer:Ulrich Schneider|Prof. Dr. U. Schneider]]
bild maximus2.PNG|Der Brick
 
</gallery>
==Maximus==
[[Youtube link / Video zu Roboter Kitt]
 
[[Datei:Lego Designer|200px|thumb|right| Konstruktion in Lego Digital Designer <ref> Eigenes Foto </ref>]]
 
[[Datei:bild maximus.PNG|200px|thumb|right|Bild vong roboter <ref> Eigenes Foto </ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


=== Software ===
* [http://bricxcc.sourceforge.net/ Bricxcc] (Programmierung ab dem dritten Praktikumstermin)


* [https://education.lego.com/de-de/downloads/mindstorms-ev3/software LEGO MINDSTORMS EV3] (Programmierung bis zum dritten Praktikumstermin)


* [https://www.lego.com/de-de/mindstorms/downloads/nxt-software-download LEGO MINDSTORMS NXT 2.0-Software] (Programmierung bis zum dritten Praktikumstermin)


* [https://www.hitechnic.com/downloadnew.php?category=13 HiTechnic Add-Ons] (Erweiterungen für HiTechnic Produkte in NXT 2.0)


* [https://www.lego.com/en-us/ldd LEGO Digital Designer](Erstellung der Bauanleitung)


* [https://www.heise.de/download/product/papdesigner-51889 PAP Designer] (Erstellung des Programmablaufplans nach DIN 66001)




===Hardware===


==== Bauanleitung ====


* [https://svn.hshl.de/usvn/project/Informatikpraktikum_1/show/trunk/Gruppen/Gruppen_WS1819/A3/Projektunterlagen/Bauanleitung%20Lego%20Digital%20Designer.pdf Bauanleitung Lego Digital Designer] (Anleitung als PDF im SVN)


 
====Sensoren====
 
 
===Spielstrategie===
 
'''PAP-Diagramme'''
*'''Spielstrategie'''
[[Datei:pap.PNG|200px|thumb|left|Hauptprogramm<ref> Eigenes Foto </ref>]] [[Datei:ball.PNG|200px|thumb|right|Ballsuche <ref> Eigenes Foto </ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
===Hardware===


*'''Infrarotsensor'''
*'''Infrarotsensor'''
[[Datei:IR Seeker.JPG|200px|thumb|right|Infrarot Sensor <ref> Eigenes Foto </ref>]]
[[Datei:IR Sucher.jpg|200px|thumb|right|Infrarot Sensor <ref> Eigenes Foto </ref>]]


Für die Erkennung des Balles, der ein Infrarotsignal aussendet, wurde auf Höhe des Balles der Infrarot- Detektor von [https://modernroboticsinc.com/hitechnic-nxt-irseeker-v2/ HiTechnic] verbaut. Dieser Sensor ist in der Lage Infrarotsignale über fünf Detektoren in einem Winkel von 135° aufzunehmen und zeigt den Wert der Richtung im Wert von 0 bis 9 an.
Für die Erkennung des Balles, der ein Infrarotsignal aussendet, wurde der Infrarot- Detektor von [https://modernroboticsinc.com/hitechnic-nxt-irseeker-v2/ HiTechnic] verbaut. Dieser Sensor ist in der Lage Infrarotsignale über fünf Detektoren in einem Winkel von 135° aufzunehmen und zeigt im welchen Bereich seines FOV (field of view) von 0 bis 9 sich der Ball befindet.
Mit dem Modulierten Modus (AC Mode) kann moduliertes Infrarotlicht erkannt werden, dies sind künstlich erzeugte Infrarotsignale, z.B. auch Fernbedienungen und unter anderem auch der IR Ball aussendet.  
Mit dem Modulierten Modus (AC Mode) kann moduliertes Infrarotlicht erkannt werden, dies sind künstlich erzeugte Infrarotsignale, z.B. auch Fernbedienungen und unter anderem auch der IR Ball aussendet.  


Zeile 154: Zeile 97:


Der Tastsensor ist der einfachste NXT Baustein, denn dieser reagiert nur auf Druck und kann somit nur zwei Werte zurückliefern, 0 (nicht gedrückt) oder 1 (gedrückt). Der Taster wird mit einer Feder geöffnet.  
Der Tastsensor ist der einfachste NXT Baustein, denn dieser reagiert nur auf Druck und kann somit nur zwei Werte zurückliefern, 0 (nicht gedrückt) oder 1 (gedrückt). Der Taster wird mit einer Feder geöffnet.  
Bei unserem Roboter verwenden wir zwei dieser Tastsensoren, einen für die Erkennung des Balles und einen für die Hindernisausweichung bzw. Erkennung.
Maximus verwendet zwei dieser Tastsensoren, um zu überprüfen ob der Ball gefangen wurde und um bei Kolision mit einem Hindernis eine Rückwärtsfahrt zu initiieren
 




Zeile 174: Zeile 116:


*'''Kompasssensor'''
*'''Kompasssensor'''
[[Datei:Kompasssensor.JPG|220px|thumb|right| Kompasssensor <ref> Eigenes Foto </ref>]]
[[Datei:KompassMax.PNG|220px|thumb|right| Kompasssensor <ref> Eigenes Foto </ref>]]


Der digitale Kompasssensor von [https://modernroboticsinc.com/hitechnic-nxt-compass-sensor/ HiTechnic] ist in der Lage das Erdmagnetfeld zu vermessen und somit kann eine genaue Positionsbestimmung und Navigation durchgeführt werden. Demnach entsprechen 0° Nord, 90° Ost, 180° Süd und 270° West. Auf dem Roboter kann man sich dabei die Werte von 0°- 359° ausgegeben lassen, für eine genaue Messung muss der Roboter sich langsam drehen. Dabei ist aber auch zu beachten, dass der Sensor nicht durch andere externe Magnetfelder beeinflusst wird, da dies zu Fehlermessungen führen kann. Aufgrund dessen sollte der Kompasssensor zur Navigierung eine Entfernung von ungefähr 15cm zu den Motoren haben.
Der digitale Kompasssensor von [https://modernroboticsinc.com/hitechnic-nxt-compass-sensor/ HiTechnic] ist in der Lage das Erdmagnetfeld zu vermessen und somit kann eine genaue Positionsbestimmung und Navigation durchgeführt werden. Demnach entsprechen 0° Nord, 90° Ost, 180° Süd und 270° West. Auf dem Roboter kann man sich dabei die Werte von 0°- 359° ausgegeben lassen, für eine genaue Messung muss der Roboter sich langsam drehen. Dabei ist aber auch zu beachten, dass der Sensor nicht durch andere externe Magnetfelder beeinflusst wird, da dies zu Fehlermessungen führen kann. Aufgrund dessen sollte der Kompasssensor zur Navigierung eine Entfernung von ungefähr 15cm zu den Motoren haben.
Zeile 186: Zeile 128:








Zeile 192: Zeile 133:




====Aktoren====


*'''Motoren'''
*'''Motoren'''
[[Datei:Motoren.JPG|200px|thumb|right| Antriebsmotor <ref> Eigenes Foto </ref>]]
[[Datei:MotorMax.PNG|200px|thumb|right| Antriebsmotor <ref> Eigenes Foto </ref>]]


Die Motoren, die bei Lego Mindstorms verbaut werden, sind Servomotoren. Außerdem sind sie mit einem Drehsensor ausgestattet, der eine Genauigkeit von 1° hat und somit sich die Motoren sehr präzise anfahren lassen. Es werden drei Motoren bei dem NXT- Roboter verbaut, zwei Fahrmotoren und ein Motor für den Schuss- bzw. Fangarm.
Die Motoren, die bei Lego Mindstorms verbaut werden, sind Servomotoren. Außerdem sind sie mit einem Drehsensor ausgestattet, der eine Genauigkeit von 1° hat und somit sich die Motoren sehr präzise anfahren lassen. Es werden drei Motoren bei dem NXT- Roboter verbaut, zwei Fahrmotoren und ein Motor für den Schuss- bzw. Fangarm.


== Spielstrategie ==




===Programmablaufplan===


<gallery widths="500" heights="400" perrow="3">
pap.PNG|PAP Hauptprogramm
ball.PNG|Unterprogramm Ballsuche
torschuss.PNG|Unterprogramm Ausrichtung
</gallery>


=== Quellcode ===


<gallery widths="500" heights="400" perrow="3" caption="Tasks">
BallsucheQC.JPG|Ballsuche
Ausrichtung TorschussQC.JPG|Ausrichtung Torschuss
Task Main.JPG|Task Main
</gallery>






==Zusammenfassung==
===Lernziele===


Das Praktikum ermöglicht dem studierenden spielerisch und praxisorientiert einen ersten Einblick in die Programmiersprache C, am Bespiel des Lego Mindstorms NXT. Zunächst wurde jedoch in unterschiedlichen Softwareanwedungen das grafische programmieren trainiert.
Ziel jedes Praktikumstermins war es, durch das Zusammenspiel von Planung, Konstruktion und Umsetzung der Mechanischen, sowie programmiertechnischen Aufgaben am Ende ein funktionales Programm auf dem Roboter präsentieren zu können.


Zusammenfassend hat man die Grundlagen grafischer Programmierung erlernt und das Wissen anschließend in der Programmiersprache NXC (not quite C) vertieft.
Zusätzlich wurde der Umgang mit der Versionsverwaltungssoftware SVN erlernt, welche das arbeiten im Team unterstützt hat.
Die abschließende Ergebnispräsentation und -demonstration dient der sach- und inhaltsgerechten Darstellung der entwickelten Lösung. Zusätzlich stärkt eine solche Aufgabenstellung die Kommunikation im Team und die Selbstkompetenz, Aufgaben zu lösen, die vorher auf das Team aufgeteilt wurden.


 
===Ausblick===
 
'''Verbesserungsmöglichkeiten:'''
 
* Odometrietracking, um zu verhindern das der Roboter parallel zur Spielfeldausrichtung am Tor vorbei schießt.
 
* Verbesserte Kollisionsabfrage, um Kolissionen von nicht ebenen Oberflächen genauer zu erkennen.
 
* Tracking der Umdrehungszahl der Ballfangautomatik, um ein festhaken am Spielfeldrand zu verhindern.
 
 
 
==Quellcode==
 
*'''Ballsuche'''
[[Datei:Quelltext .PNG|300px|thumb|left| Quelltext Ballsuche <ref> Eigenes Foto </ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
==Zusammenfassung==
Das Praktikum zeigt einem spielerisch einen ersten Einblick in die Programmiersprache C. Man kann Erfahrungen in der Roboterprogrammierung bekommen und hat sofort auch ein Ergebnis zu den Programmierelementen, denn meistens funktioniert es nicht bei dem ersten Anlauf. Aus diesem Grund und dadurch, dass man viele unterschiedliche Softwareversionen zur Programmierung des NXT- Bricks verwendet, ist es ein sehr zeitaufwändiges Praktikum.  


==Literaturverzeichnis==
==Literaturverzeichnis==
Zeile 258: Zeile 182:




----
→ zurück zum Hauptartikel: [[RoboSoccer_WS_18/19|Informatikpraktikum WS 18/19]]
→ zurück zum Hauptartikel: [[RoboSoccer_WS_18/19|Informatikpraktikum WS 18/19]]

Aktuelle Version vom 21. Januar 2022, 19:52 Uhr

Autoren: Florian Leben , Robin Grimm und Thomas Datche

Dozent: Prof. Dr. U. Schneider

Werbeposter [1]

Einleitung

Ein wesentlicher Bestandteil des Informatik Moduls bestand aus dem Informatikpraktikum 1, in welchem wir ausgehend von einer konkreten Problemfeldbeschreibung, aus einem Lego NXT Bausatz einen Roboter konstruieren und programmieren mussten. Um die gestellte Aufgabenstellung selbständig zu erfüllen, mussten die Auswahl der Sensoren, Aktoren und deren Programmierung durch sinvolles Zeit-/ und Projektmanagement geprägt sein.

Jeder Roboter wurde in 2-3er Gruppen von Studenten entwickelt, mit dem Ziel ein RoboSoccer Turnier zu gewinnen, welches am letzten Praktikumstermin stattgefunden hat.

Gruppenmitglieder und ihre Aufgaben

Florian Leben

  • Konstruktion des Roboters
  • Entwicklung der Spielstrategie mithilfe des PAP-Designers
  • Umsetzung der Spielstrategie in Quellcode
  • Entwurf des Werbeplakats
  • Nachbildung des Roboters im Lego Digital Designer
  • Erstellung des Videos

Robin Grimm

  • Konstruktion des Roboters
  • Entwicklung der Spielstrategie mithilfe des PAP-Designers
  • Umsetzung der Spielstrategie in Quellcode
  • Verfassen des HSHL-Wiki-Artikels
  • Optimierung

Thomas Datche

  • Konstruktion des Roboters
  • Optimierung

Robos Maximus

Image Film

Video zu Robos Maximus

Design

Software

  • Bricxcc (Programmierung ab dem dritten Praktikumstermin)
  • PAP Designer (Erstellung des Programmablaufplans nach DIN 66001)


Hardware

Bauanleitung

Sensoren

  • Infrarotsensor
Infrarot Sensor [2]

Für die Erkennung des Balles, der ein Infrarotsignal aussendet, wurde der Infrarot- Detektor von HiTechnic verbaut. Dieser Sensor ist in der Lage Infrarotsignale über fünf Detektoren in einem Winkel von 135° aufzunehmen und zeigt im welchen Bereich seines FOV (field of view) von 0 bis 9 sich der Ball befindet. Mit dem Modulierten Modus (AC Mode) kann moduliertes Infrarotlicht erkannt werden, dies sind künstlich erzeugte Infrarotsignale, z.B. auch Fernbedienungen und unter anderem auch der IR Ball aussendet.

Empfangsbereiche des IR Seekers [3]











  • Tastsensor
Tastsensor [4]

Der Tastsensor ist der einfachste NXT Baustein, denn dieser reagiert nur auf Druck und kann somit nur zwei Werte zurückliefern, 0 (nicht gedrückt) oder 1 (gedrückt). Der Taster wird mit einer Feder geöffnet. Maximus verwendet zwei dieser Tastsensoren, um zu überprüfen ob der Ball gefangen wurde und um bei Kolision mit einem Hindernis eine Rückwärtsfahrt zu initiieren









  • Kompasssensor
Kompasssensor [5]

Der digitale Kompasssensor von HiTechnic ist in der Lage das Erdmagnetfeld zu vermessen und somit kann eine genaue Positionsbestimmung und Navigation durchgeführt werden. Demnach entsprechen 0° Nord, 90° Ost, 180° Süd und 270° West. Auf dem Roboter kann man sich dabei die Werte von 0°- 359° ausgegeben lassen, für eine genaue Messung muss der Roboter sich langsam drehen. Dabei ist aber auch zu beachten, dass der Sensor nicht durch andere externe Magnetfelder beeinflusst wird, da dies zu Fehlermessungen führen kann. Aufgrund dessen sollte der Kompasssensor zur Navigierung eine Entfernung von ungefähr 15cm zu den Motoren haben.








Aktoren

  • Motoren
Antriebsmotor [6]

Die Motoren, die bei Lego Mindstorms verbaut werden, sind Servomotoren. Außerdem sind sie mit einem Drehsensor ausgestattet, der eine Genauigkeit von 1° hat und somit sich die Motoren sehr präzise anfahren lassen. Es werden drei Motoren bei dem NXT- Roboter verbaut, zwei Fahrmotoren und ein Motor für den Schuss- bzw. Fangarm.

Spielstrategie

Programmablaufplan

Quellcode


Zusammenfassung

Lernziele

Das Praktikum ermöglicht dem studierenden spielerisch und praxisorientiert einen ersten Einblick in die Programmiersprache C, am Bespiel des Lego Mindstorms NXT. Zunächst wurde jedoch in unterschiedlichen Softwareanwedungen das grafische programmieren trainiert. Ziel jedes Praktikumstermins war es, durch das Zusammenspiel von Planung, Konstruktion und Umsetzung der Mechanischen, sowie programmiertechnischen Aufgaben am Ende ein funktionales Programm auf dem Roboter präsentieren zu können.

Zusammenfassend hat man die Grundlagen grafischer Programmierung erlernt und das Wissen anschließend in der Programmiersprache NXC (not quite C) vertieft. Zusätzlich wurde der Umgang mit der Versionsverwaltungssoftware SVN erlernt, welche das arbeiten im Team unterstützt hat. Die abschließende Ergebnispräsentation und -demonstration dient der sach- und inhaltsgerechten Darstellung der entwickelten Lösung. Zusätzlich stärkt eine solche Aufgabenstellung die Kommunikation im Team und die Selbstkompetenz, Aufgaben zu lösen, die vorher auf das Team aufgeteilt wurden.

Ausblick

Verbesserungsmöglichkeiten:

  • Odometrietracking, um zu verhindern das der Roboter parallel zur Spielfeldausrichtung am Tor vorbei schießt.
  • Verbesserte Kollisionsabfrage, um Kolissionen von nicht ebenen Oberflächen genauer zu erkennen.
  • Tracking der Umdrehungszahl der Ballfangautomatik, um ein festhaken am Spielfeldrand zu verhindern.

Literaturverzeichnis



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