AEP Gruppe B2 - SoSe17: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(25 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
== Einführung ==
== Einführung ==


Im Informatikpraktikum des Sommersemesters 2017 Studiengang MTR bekamen wir die Aufgabe ein Auto zu konstruieren und programmieren, sodass es autonom einparken kann. Als Programmieroberfläche wurde MatLab gewählt. Die Grundlage bildete die NXT-Toolbox der RWTH Aachen.
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 ==


'''David Reger'''
[[Benutzer:David Reger|David Reger]]:


• Programmierung mit Matlab
• Programmierung mit Matlab
Zeile 16: Zeile 17:
• Ablaufdiagramm(PAP)
• Ablaufdiagramm(PAP)


  '''[[Yannik Schaefer]]:''' <br>
  '''[[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
Zeile 36: Zeile 39:
== Hardware ==
== Hardware ==


Bei der Konstruktion unseres Chassis mussten wir bestimmte Vorgaben befolgen. Unter anderem musste das Fahrzeug die 1,5fache Länge des Achsenabstands und einen 40° Einschlagwinkel besitzen. Die Vorderachse wurde durch einen Motor lenkbar gemacht. Die Hinterachse war die Antriebsachse. Außerdem wurde Sie mit einem Differentialgetriebe erweitert um bessere Kurvenfahrt zu ermöglichen.  
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.
Ein NXT-Mikroprozessor stellte die Verbindung zwischen Ultraschall- und Gyrosensor, sowie den beiden Motoren mit dem PC da.
 
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==
==Fahrzeugparameter==
Zeile 44: Zeile 48:
! style="width:50%"| Parameter      !!  style="width:40%"|Wert
! style="width:50%"| Parameter      !!  style="width:40%"|Wert
|-
|-
| Länge                            ||style="text-align:right"| mm
| Länge                            ||style="text-align:right"| 220 mm
|-
| Breite                            ||style="text-align:right"|  mm
|-
|-
| Spurweite (vorn)                  ||style="text-align:right"| mm
| Spurweite (vorn)                  ||style="text-align:right"| 130 mm
|-  
|-  
| Spurweite (hinten)                ||style="text-align:right"| mm  
| Spurweite (hinten)                ||style="text-align:right"| 160 mm  
|-
|-
| Achsabstand                      ||style="text-align:right"| mm
| Achsabstand                      ||style="text-align:right"| 175 mm
|-
|-
| Max. Lenkeinschlag                ||style="text-align:right"| 40 °
| Max. Lenkeinschlag                ||style="text-align:right"| 40 °
Zeile 58: Zeile 60:
| Max. Geschwindigkeit              ||style="text-align:right"| 0,50 m/s                     
| Max. Geschwindigkeit              ||style="text-align:right"| 0,50 m/s                     
|}
|}


== Einparkkonzept und Programmstruktur ==
== Einparkkonzept und Programmstruktur ==
Zeile 64: 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 70: 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.
----
→ zurück zum Hauptartikel: [[Autonomes Fahren SoSe17|Informatikpraktikum 2 SoSe17]]




== Links ==
== Links ==


[https://www.youtube.com/watch?v=mGBYC5XRCv4 YouTube-Video]
[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]
[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]]

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

YouTube-Video

SVN-Ordner



→ zurück zum Hauptartikel: Informatikpraktikum 2 SoSe17