AEP Gruppe B2 - SoSe17: Unterschied zwischen den Versionen
(33 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
== Einführung == | == Einführung == | ||
Im | Im 2. Semester des Studiengangs Mechatronik wird im Modul Informatik ein Praktikum durchgeführt. In diesem Jahr, dem Sommersemester 2017, war das Thema autonomes Fahren. | ||
Dabei musste ein Fahrzeug mit Hilfe von LEGO Mindstorms (NXT) konstruiert werden und unter Verwendung von Matlab ein Algorithmus entwickelt werden. Durch diesen sollte das Auto eine Parklücke erkennen und in diese autonom einparken. | |||
== Team und Aufgabenverteilung | == Team und Aufgabenverteilung == | ||
[[Benutzer:David Reger|David Reger]]: | |||
• Programmierung mit Matlab | • Programmierung mit Matlab | ||
Zeile 16: | Zeile 17: | ||
• Ablaufdiagramm(PAP) | • Ablaufdiagramm(PAP) | ||
'''Yannik Schäfer:''' | '''[[Yannik Schäfer]]:''' | ||
• Konstruktion | • Konstruktion | ||
Zeile 24: | Zeile 25: | ||
• LEGO Digital Designer | • LEGO Digital Designer | ||
'''Matthias Giller:''' | '''[[Matthias Giller]]:''' | ||
• Programmierung mit SIMULINK | • Programmierung mit SIMULINK | ||
Zeile 30: | Zeile 31: | ||
• Konstruktion | • Konstruktion | ||
• Organisation | • Organisation | ||
• LEGO Digital Designer | |||
• Dokumentation | • Dokumentation | ||
== Hardware | == Hardware == | ||
Bei der Konstruktion unseres Chassis mussten wir bestimmte Vorgaben befolgen. Das Auto musste 2 Sensoren und 2 Aktoren besitzen. Hierzu gehören einmal ein Gyro-Sensor, welcher die Winkeländerung pro Zeit misst. Mit ihm kann der aktuelle Winkel zur Fahrstrecke errechnet werden, indem die Winkeländerung pro Zeit mit der vergangenen Zeit multipliziert wird. Ein weiterer Sensor ist der Ultraschallsensor, welcher zur Parklückenerkennung verwendet wird. Der Ultraschallsensor sendet einen Ultraschall aus, der dann von einer Wand z.B. reflektiert wird. Durch die Schallgeschwindigkeit und der Zeit kann der Abstand von dem Auto zu einem Gegenstand errechnet werden. Zu den Aktoren gehören zwei Motoren. Ein Motor befindet sich an der Hinterachse, dieser sorgt für den Antrieb des Autos. Außerdem wurde eine Differential an der Hinterachse verbaut, um eine bessere Kurvenfahrt zu ermöglichen. Der zweite Motor, der für die Lenkung dient, befindet sich an der Vorderachse. Die Sensoren und Aktoren werden über ein NXT Brick, einem Mikrocontroller, verbunden. Über diesen wird auch das komplette Programm programmiert und abgespielt. | |||
Bei | Die Konstruktion des Autos wurde mit Hilfe von LEGO Mindstorms erstellt. Bei dem konstruieren haben wir darauf geachtet, dass das Chassis stabil ist, um eine geregelte Geradeausfahrt zu ermöglichen. Insbesondere beim Lenken ist wenig Spiel vorhanden. Der maximale Lenkeinschlag beträgt 40°. Mit Hilfe von Zahnrädern kann die Kraft der Motoren auf die Achsen übertragen werden. | ||
==Fahrzeugparameter== | |||
{| class="wikitable" | |||
|- | |||
! style="width:50%"| Parameter !! style="width:40%"|Wert | |||
|- | |||
| Länge ||style="text-align:right"| 220 mm | |||
|- | |||
| Spurweite (vorn) ||style="text-align:right"| 130 mm | |||
|- | |||
| Spurweite (hinten) ||style="text-align:right"| 160 mm | |||
|- | |||
| Achsabstand ||style="text-align:right"| 175 mm | |||
|- | |||
| Max. Lenkeinschlag ||style="text-align:right"| 40 ° | |||
|- | |||
| Max. Geschwindigkeit ||style="text-align:right"| 0,50 m/s | |||
|} | |||
== Einparkkonzept und Programmstruktur == | == Einparkkonzept und Programmstruktur == | ||
Zeile 44: | Zeile 65: | ||
Bei der Programmierung wurde der Schwerpunkt auf eine veränderbare und strukturierte Programmstruktur gelegt. Dies beinhaltet z.B Variablen für den Reifendurchmesser, welche bei Reifenwechsel einfach angepasst werden können. Zusätzlich sollen möglichst einfach Veränderungen der Parklückensituation herbeigeführt werden können. Das Ganze sollte mit einem NXT als Mikroprozessor und einem Ultraschall-, sowie einem Gyrosensor realisiert werden. | Bei der Programmierung wurde der Schwerpunkt auf eine veränderbare und strukturierte Programmstruktur gelegt. Dies beinhaltet z.B Variablen für den Reifendurchmesser, welche bei Reifenwechsel einfach angepasst werden können. Zusätzlich sollen möglichst einfach Veränderungen der Parklückensituation herbeigeführt werden können. Das Ganze sollte mit einem NXT als Mikroprozessor und einem Ultraschall-, sowie einem Gyrosensor realisiert werden. | ||
Zunächst mussten im Programm alle Sensoren und Aktoren initialisiert werden. Anschließend fährt das Auto parallel zu einer Wand geradeaus. Währenddessen misst der Ultraschallsensor den Abstand zu der Wand und prüft, ob der Abstand groß genug ist. Falls der Abstand groß genug ist, wird die Länge der Parklücke ausgemessen. Durch einen Sensor im Motor wird die Gradzahl gemessen, die der Motor gelaufen ist. Mit der Gradzahl und dem Umfang der Räder kann die gefahrene Strecke errechnet werden. Ist die Strecke lang genug, sodass das Auto einparken kann, stoppt das Auto. | |||
Nun werden über ein Switch-case drei Fälle realisiert. Der erste Fall ist der Rechtseinschlag. Der Lenkmotor sorgt für einen Rechtseinschlag und das Auto fährt Rückwärts. Über den Gyro-Sensor wird der aktuelle Winkel gemessen. Beträgt der Winkel 40° zur Parklücke stoppt das Auto und geht in den zweiten Fall. Hier wurde der Linkseinschlag programmiert. Der Lenkmotor lenkt nach links und das Auto fährt weiterhin zurück in die Lücke. Sobald das Auto in der Lücke steht (0°) kommt der dritte Fall. Im dritten Fall lenkt das Auto zurück, sodass die Räder gerade stehen und fährt ein kleines Stück geradeaus, um mittig in der Parklücke zu stehen. | |||
== Programmablaufplan == | == Programmablaufplan == | ||
Zeile 50: | Zeile 73: | ||
[[Datei:EinparkenPAP.PNG]] | [[Datei:EinparkenPAP.PNG]] | ||
== Fazit | == Fazit == | ||
Durch dieses Projekt wurde uns bewusst, wie stark die verschiedenen Bereiche beim Entwickeln neuer Technologien miteinander verbunden sind und wie wichtig eine gute Absprache zwischen den Teams sein muss damit alles reibungslos funktioniert. Außerdem war es begeisternd den Lern- und Programmiererfolg immer direkt vor sich zu sehen. | Durch dieses Projekt wurde uns bewusst, wie stark die verschiedenen Bereiche beim Entwickeln neuer Technologien miteinander verbunden sind und wie wichtig eine gute Absprache zwischen den Teams sein muss damit alles reibungslos funktioniert. Außerdem war es begeisternd den Lern- und Programmiererfolg immer direkt vor sich zu sehen. | ||
== Links == | |||
[https://www.youtube.com/watch?v=RiyaYSOwm3E YouTube-Video] | |||
[https://svn.hshl.de/svn/Informatikpraktikum_2/trunk/Gruppen/SoSe2017/MTR_Inf2P_B2/Abgabe/ SVN-Ordner] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Autonomes Fahren SoSe17|Informatikpraktikum 2 SoSe17]] | → zurück zum Hauptartikel: [[Autonomes Fahren SoSe17|Informatikpraktikum 2 SoSe17]] |
Aktuelle Version vom 8. Januar 2019, 17:16 Uhr
Einführung
Im 2. Semester des Studiengangs Mechatronik wird im Modul Informatik ein Praktikum durchgeführt. In diesem Jahr, dem Sommersemester 2017, war das Thema autonomes Fahren. Dabei musste ein Fahrzeug mit Hilfe von LEGO Mindstorms (NXT) konstruiert werden und unter Verwendung von Matlab ein Algorithmus entwickelt werden. Durch diesen sollte das Auto eine Parklücke erkennen und in diese autonom einparken.
Team und Aufgabenverteilung
David Reger:
• Programmierung mit Matlab
• Präsentation
• Koordination
• Ablaufdiagramm(PAP)
Yannik Schäfer:
• Konstruktion
• Videoschnitt
• LEGO Digital Designer
Matthias Giller:
• Programmierung mit SIMULINK
• Konstruktion
• Organisation
• LEGO Digital Designer
• Dokumentation
Hardware
Bei der Konstruktion unseres Chassis mussten wir bestimmte Vorgaben befolgen. Das Auto musste 2 Sensoren und 2 Aktoren besitzen. Hierzu gehören einmal ein Gyro-Sensor, welcher die Winkeländerung pro Zeit misst. Mit ihm kann der aktuelle Winkel zur Fahrstrecke errechnet werden, indem die Winkeländerung pro Zeit mit der vergangenen Zeit multipliziert wird. Ein weiterer Sensor ist der Ultraschallsensor, welcher zur Parklückenerkennung verwendet wird. Der Ultraschallsensor sendet einen Ultraschall aus, der dann von einer Wand z.B. reflektiert wird. Durch die Schallgeschwindigkeit und der Zeit kann der Abstand von dem Auto zu einem Gegenstand errechnet werden. Zu den Aktoren gehören zwei Motoren. Ein Motor befindet sich an der Hinterachse, dieser sorgt für den Antrieb des Autos. Außerdem wurde eine Differential an der Hinterachse verbaut, um eine bessere Kurvenfahrt zu ermöglichen. Der zweite Motor, der für die Lenkung dient, befindet sich an der Vorderachse. Die Sensoren und Aktoren werden über ein NXT Brick, einem Mikrocontroller, verbunden. Über diesen wird auch das komplette Programm programmiert und abgespielt.
Die Konstruktion des Autos wurde mit Hilfe von LEGO Mindstorms erstellt. Bei dem konstruieren haben wir darauf geachtet, dass das Chassis stabil ist, um eine geregelte Geradeausfahrt zu ermöglichen. Insbesondere beim Lenken ist wenig Spiel vorhanden. Der maximale Lenkeinschlag beträgt 40°. Mit Hilfe von Zahnrädern kann die Kraft der Motoren auf die Achsen übertragen werden.
Fahrzeugparameter
Parameter | Wert |
---|---|
Länge | 220 mm |
Spurweite (vorn) | 130 mm |
Spurweite (hinten) | 160 mm |
Achsabstand | 175 mm |
Max. Lenkeinschlag | 40 ° |
Max. Geschwindigkeit | 0,50 m/s |
Einparkkonzept und Programmstruktur
Bei der Programmierung wurde der Schwerpunkt auf eine veränderbare und strukturierte Programmstruktur gelegt. Dies beinhaltet z.B Variablen für den Reifendurchmesser, welche bei Reifenwechsel einfach angepasst werden können. Zusätzlich sollen möglichst einfach Veränderungen der Parklückensituation herbeigeführt werden können. Das Ganze sollte mit einem NXT als Mikroprozessor und einem Ultraschall-, sowie einem Gyrosensor realisiert werden.
Zunächst mussten im Programm alle Sensoren und Aktoren initialisiert werden. Anschließend fährt das Auto parallel zu einer Wand geradeaus. Währenddessen misst der Ultraschallsensor den Abstand zu der Wand und prüft, ob der Abstand groß genug ist. Falls der Abstand groß genug ist, wird die Länge der Parklücke ausgemessen. Durch einen Sensor im Motor wird die Gradzahl gemessen, die der Motor gelaufen ist. Mit der Gradzahl und dem Umfang der Räder kann die gefahrene Strecke errechnet werden. Ist die Strecke lang genug, sodass das Auto einparken kann, stoppt das Auto.
Nun werden über ein Switch-case drei Fälle realisiert. Der erste Fall ist der Rechtseinschlag. Der Lenkmotor sorgt für einen Rechtseinschlag und das Auto fährt Rückwärts. Über den Gyro-Sensor wird der aktuelle Winkel gemessen. Beträgt der Winkel 40° zur Parklücke stoppt das Auto und geht in den zweiten Fall. Hier wurde der Linkseinschlag programmiert. Der Lenkmotor lenkt nach links und das Auto fährt weiterhin zurück in die Lücke. Sobald das Auto in der Lücke steht (0°) kommt der dritte Fall. Im dritten Fall lenkt das Auto zurück, sodass die Räder gerade stehen und fährt ein kleines Stück geradeaus, um mittig in der Parklücke zu stehen.
Programmablaufplan
Fazit
Durch dieses Projekt wurde uns bewusst, wie stark die verschiedenen Bereiche beim Entwickeln neuer Technologien miteinander verbunden sind und wie wichtig eine gute Absprache zwischen den Teams sein muss damit alles reibungslos funktioniert. Außerdem war es begeisternd den Lern- und Programmiererfolg immer direkt vor sich zu sehen.
Links
→ zurück zum Hauptartikel: Informatikpraktikum 2 SoSe17