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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(27 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Im Modul Informatik 1 des Studiengangs Mechatronik ist ein Informatikpraktikum vorgesehen. Im Praktikum wurden Gruppen von bis zu 3 Personen eingeteilt, die sich gemeinsam mit dem Thema RoboSoccer beschäftigen sollten. Die Aufgabe bestand darin, ein Roboter mithilfe von Lego Mindstorms zu konstruieren, welcher in der Lage ist, Fussball spielen zu können
In dem Modul Informatik 1 des Studiengangs Mechatronik ist ein Informatikpraktikum vorgesehen. Im Praktikum wurden Gruppen von bis zu 3 Personen eingeteilt, die sich gemeinsam mit dem Thema RoboSoccer beschäftigt haben. Die Aufgabe bestand darin, einen Roboter mithilfe von Lego Mindstorms zu konstruieren, welcher in der Lage ist, Fussball spielen zu können.


[[Datei:RobbyTobby.jpeg|200px|thumb|right|RobbyTobby]]
[[Datei:RobbyTobby.jpeg|200px|thumb|right|RobbyTobby]]
Zeile 10: Zeile 10:
==Hardware==
==Hardware==


[[Datei:Differential_SoSe17_B1.png|200px|thumb|right|Differential]]
Als erstes musste ein Fahrzeug mit den Bauteilen von Lego Mindstorms konstruiert werden, um auf dem kleinen Spielfeld optimal spielen zu können. Die Konstruktion sollte möglichst klein und wendig werden. Zum Steuern des Roboters und finden des Balls werden verschiedene Sensoren benutzt:


Als erstes musste ein Fahrzeug mit den Bauteilen von Lego Mindstorms konstruiert werden. Die Konstruktion sollte möglichst klein und wendig werden. Vorgaben hierfür waren ein Achsabstand, der doppelt so groß wie die Spurweite sein sollte und ein maximaler Radeinschlag von 40°. Das Fahrzeug hat einen Hinterachsantrieb und eine lenkbare Vorderachse. Die Lenkung wurde über eine direkte Übersetzung mit einem Motor an der Lenkachse realisiert. Diese Variante wurde gewählt, um ein möglichst geringes Lenkspiel zu ermöglichen. An der Hinterachse wurde ein Differential verbaut. Dadurch können die Hinterräder in verschiedenen Geschwindigkeiten drehen, um dadurch wird einen geringeren Wendekreis zu ermöglichen. Dies vereinfacht das einparken in eine kleine Parklücke. Zudem sollten ein Ultraschallsensor und ein Gyrosensor verbaut werden. Der Ultraschallsensor wurde an der rechten Seite verbaut, um an dieser Seite den Abstand zur Wand zur messen und mögliche Parklücken zu finden. Der Gyrosensor wurde an der linken Seite mittig oben verbaut. Der Sensor misst die Querabweichung bei der Geradeaus fahrt und wird für das geregelte Geradeausfahren verwendet.
 
'''Infrarotsensor'''
 
Der Infrarotsensor registriert die Infrarotquellen in einem Winkel von 135°. Dabei sind die 135° in 9 Teilbereiche eingeteilt, die jeweils die Stärke des Infrarotsignals angeben. Befindet sich in einem Bereich kein Infrarotsignal wird der Wert 0 zurückgegeben. Bei dem Roboter wird der Infrarotsensor für das auffinden des Balls genutzt. Er ist in der Fangvorrichtung und auf Höhe des Balls montiert.
 
 
'''Touchsensor'''
 
Der Tastsensor sitzt bei diesem Roboter in der Fangvorrichtung für den Ball. Dieser soll registrieren ob der Ball gefangen wurde und steuert damit den Programmablauf.
 
 
'''Kompasssensor'''
 
Der Kompasssensor liefert Richtungsinformationen in elektronischer Form. Dabei Orientiert sich dieser am Erdmagnetfeld. Der von uns genutzte Kompasssensor von der Firma HiTechnic-Sensors hat eine Winkelauslösung von 0° bis 359°. Im Programm wird diese Information genutzt, um den Ball ins Richtige Tor zu schießen, also sich auf dem Spielfeld zu orientieren. Der Kompass ist möglichst weit entfernt von den Motoren montiert, damit das Magnetfeld nicht gestört und verfälscht wird.
 
 
'''Aktuatoren'''
 
Bei diesem Roboter werden drei Elektromotoren genutzt. Zwei für den Antrieb der Räder sowie einen weiteren für die Fangvorrichtung.
Bei den Motoren handelt es sich um LEGO-Servomotoren, die einen Elektromotor sowie einen Rotationssensor integriert haben.
Die Servomotoren können  mit verschiedenen Geschwindigkeiten betrieben werden sowie mithilfe des Sensors genau ausgerichtet werden.
 
 
Das Herzstück des Roboters ist der NXT-Baustein mit Display. Hier sind alle Sensoren und Motoren angeschlossen. Auf dem NXT werden die Programme geladen und ausgeführt.


==Fahrzeugparameter==
==Fahrzeugparameter==
Zeile 34: Zeile 57:


=Software=
=Software=
Zu Beginn des Praktikums haben wir den Roboter mit NXT-G programmiert, um uns mit den Möglichkeiten des Systems vertraut zu machen. NXT-G ist eine grafische Programmierumgebung mit der man, mithilfe von vorgefertigten Elementen, Programme einfach entwerfen kann.
Im weiteren Verlauf des Praktikums sind wir auf NXC umgestiegen. NXC ist eine an C angelegte Programmiersprache. Als Programmierumgebung haben wir das Programm BricxCC genutzt. Das Bricx Command Center sieht aus wie ein gewöhnlicher Texteditor, beinhaltet aber Funktionen zum Kompilieren und Debuggen.
=Funktion=
[[Datei:Main.png|200px|thumb|right|Programmablaufplan]]
Der Roboter muss, um Fussball spielen zu können, einige Funktionen abarbeiten, um ein Tor zu erzielen.
'''Ballsuche''': In dieser Funktion sucht der Roboter den Ball, fährt auf den Ball zu und fängt ihn mithilfe der Fangvorrichtung.
'''Zielen''': In dieser Funktion richtet sich der Roboter mit dem gefangenen Ball auf das Tor aus, indem er sich so lange dreht, bis die Richtung des Roboters mit der Richtung des Tores überein stimmt.
'''Schießen''': In dieser Funktion wird der Motor der Fangvorrichtung invertiert und mit maximaler Kraft rotiert, um den Ball in die Richtung des Tores zu befördern.
=Quellcode=
[[Datei:RobbyTobbyMainCode.PNG|200px|thumb|left|MainCode]]


Die ersten Praktikumstermine wurde mit Matlab und der zusätzichen Mindstorms NXT Toolbox der RWTH Aachen programmiert. Matlab ist Skript basierte Programmiersprache, die vorrangig genutzt wird um Probleme nummerisch zu lösen. Hier wurde schrittweise ein Programm zum geregelten Fahren und autonomen Einparken mit Computeranbindung entwickelt.


In den letzten Praktikumsterminen wurde Simulink genutzt um den evaluierten Programmablaufplan auch ohne Computeranbindung nutzen zu können. Simulink ist eine Umgebung in Matlab, wo anhand von verschiedenen Schaltblöcken, welche logisch miteinander verbunden werden, Programme erstellt werden können.


=Einparkkonzept=


[[Datei:PAP_InfoB1_SoSe17.png|200px|thumb|right|Programmablaufplan]]




'''Geradeausfahren und Lücke suchen'''<br />
Der Ultraschallsensor und der Gyrosensor werden vor Beginn der Fahrt kalibriert. Die Kalibrierungswerte wurden experimentell ermittelt und in die Kalibrierungswerte im Simulink-Baustein der Sensoren eingetragen. Beim Start der Fahrt steht das Fahrzeug parallel auf der Fahrbahn. Um eine ungewollte Querabweichung zu vermeiden wird anhand der Werte des Gyrosensors eine Regelung gewährleistet um bei einer Abweichung entsprechend gegenlenken zu können. Während der geregelten Geradeausfahrt misst der Ultraschallsensor den Abstand zu Hindernissen an der rechten Seite. Wenn der Abstand ausreichend ist wird zusätzlich die Länge der Lücke mithilfe des Motordrehgebers gemessen. Ist die Lücke zu klein fährt das Fahrzeug weiter geradeaus und wiederholt die Vorgänge bis eine passende Lücke gefunden wird. Wird eine passende Lücke gefunden muss das Fahrzeug noch ein Stück weiter geradeausfahren, da der Ultraschallsensor nicht ganz hinten am Fahrzeugverbaut ist, und anschließend werden die Motoren gestoppt und der Einparkvorgang beginnt.




'''Einparken'''<br />
Bei Beginn des Einparkvorgangs werden die Räder um 40° nach rechts eingeschlagen und das Fahrzeug fährt rückwärts, bis das Fahrzeug in einem Winkel von 40° steht. Sobald das Fahrzeug in dem Winkel von 40° steht werden die Räder um 40° nach links eingeschlagen und das Fahrzeug fährt weiterhin rückwärts, bis das Fahrzeug geradesteht. Wenn das Fahrzeug geradesteht, fährt es ein Stück geradeaus um sich mittig in der Parklücke zu positionieren. Danach werden alle Motoren gestoppt und das Fahrzeug hat den Einparkvorgang beenedet.




=Links=
=Links=


[https://www.youtube.com/watch?v=MS_OXE92Ns8 YouTube-Video]<br />
[https://youtu.be/gUMvhhS3iXE YouTube-Video]<br />
[https://svn.hshl.de/svn/Informatikpraktikum_2/trunk/Gruppen/SoSe2017/MTR_Inf2P_B1/SoSe17B1%20Abgabe SVN-Ordner]<br />
 
[http://www.mindstorms.rwth-aachen.de/ RWTH - Mindstorms NXT Toolbox]
 
 
 
 
 
 
 
 
 
----
→ zurück zum Hauptartikel: [[RoboSoccer_WS_17/18|Informatikpraktikum WS 17/18]]

Aktuelle Version vom 24. Januar 2018, 18:56 Uhr

In dem Modul Informatik 1 des Studiengangs Mechatronik ist ein Informatikpraktikum vorgesehen. Im Praktikum wurden Gruppen von bis zu 3 Personen eingeteilt, die sich gemeinsam mit dem Thema RoboSoccer beschäftigt haben. Die Aufgabe bestand darin, einen Roboter mithilfe von Lego Mindstorms zu konstruieren, welcher in der Lage ist, Fussball spielen zu können.

RobbyTobby

Team und Aufgabenverteilung

Jonas Wrede: Programmierung, Dokumentation, Lego Digital Designer
Dominic Mähling: Programmierung, Konstruktion des Fahrzeugs, Lego Digital Designer
Kevin Hustedt: Programmierung, Dokumentation, Konstruktion des Fahrzeugs

Hardware

Als erstes musste ein Fahrzeug mit den Bauteilen von Lego Mindstorms konstruiert werden, um auf dem kleinen Spielfeld optimal spielen zu können. Die Konstruktion sollte möglichst klein und wendig werden. Zum Steuern des Roboters und finden des Balls werden verschiedene Sensoren benutzt:


Infrarotsensor

Der Infrarotsensor registriert die Infrarotquellen in einem Winkel von 135°. Dabei sind die 135° in 9 Teilbereiche eingeteilt, die jeweils die Stärke des Infrarotsignals angeben. Befindet sich in einem Bereich kein Infrarotsignal wird der Wert 0 zurückgegeben. Bei dem Roboter wird der Infrarotsensor für das auffinden des Balls genutzt. Er ist in der Fangvorrichtung und auf Höhe des Balls montiert.


Touchsensor

Der Tastsensor sitzt bei diesem Roboter in der Fangvorrichtung für den Ball. Dieser soll registrieren ob der Ball gefangen wurde und steuert damit den Programmablauf.


Kompasssensor

Der Kompasssensor liefert Richtungsinformationen in elektronischer Form. Dabei Orientiert sich dieser am Erdmagnetfeld. Der von uns genutzte Kompasssensor von der Firma HiTechnic-Sensors hat eine Winkelauslösung von 0° bis 359°. Im Programm wird diese Information genutzt, um den Ball ins Richtige Tor zu schießen, also sich auf dem Spielfeld zu orientieren. Der Kompass ist möglichst weit entfernt von den Motoren montiert, damit das Magnetfeld nicht gestört und verfälscht wird.


Aktuatoren

Bei diesem Roboter werden drei Elektromotoren genutzt. Zwei für den Antrieb der Räder sowie einen weiteren für die Fangvorrichtung. Bei den Motoren handelt es sich um LEGO-Servomotoren, die einen Elektromotor sowie einen Rotationssensor integriert haben. Die Servomotoren können mit verschiedenen Geschwindigkeiten betrieben werden sowie mithilfe des Sensors genau ausgerichtet werden.


Das Herzstück des Roboters ist der NXT-Baustein mit Display. Hier sind alle Sensoren und Motoren angeschlossen. Auf dem NXT werden die Programme geladen und ausgeführt.

Fahrzeugparameter

Parameter Wert
Länge in mm 310
Breite in mm 148
Höhe in mm 247
Spurweite in mm 125
Breite Fangvorichtung in mm 70
Breite Fangarm in mm 56

Software

Zu Beginn des Praktikums haben wir den Roboter mit NXT-G programmiert, um uns mit den Möglichkeiten des Systems vertraut zu machen. NXT-G ist eine grafische Programmierumgebung mit der man, mithilfe von vorgefertigten Elementen, Programme einfach entwerfen kann.

Im weiteren Verlauf des Praktikums sind wir auf NXC umgestiegen. NXC ist eine an C angelegte Programmiersprache. Als Programmierumgebung haben wir das Programm BricxCC genutzt. Das Bricx Command Center sieht aus wie ein gewöhnlicher Texteditor, beinhaltet aber Funktionen zum Kompilieren und Debuggen.

Funktion

Programmablaufplan

Der Roboter muss, um Fussball spielen zu können, einige Funktionen abarbeiten, um ein Tor zu erzielen.

Ballsuche: In dieser Funktion sucht der Roboter den Ball, fährt auf den Ball zu und fängt ihn mithilfe der Fangvorrichtung.

Zielen: In dieser Funktion richtet sich der Roboter mit dem gefangenen Ball auf das Tor aus, indem er sich so lange dreht, bis die Richtung des Roboters mit der Richtung des Tores überein stimmt.

Schießen: In dieser Funktion wird der Motor der Fangvorrichtung invertiert und mit maximaler Kraft rotiert, um den Ball in die Richtung des Tores zu befördern.

Quellcode

MainCode











Links

YouTube-Video







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