AEP Gruppe B1 - SoSe17
Im Modul Informatik 2 des Studiengangs Mechatronik ist ein Informatikpraktikum vorgesehen. Im Praktikum wurden Gruppen von bis zu 3 Personen eingeteilt, die sich gemeinsam mit dem Thema autonomes Fahren beschäftigen sollten. Der Gruppe B wurde die Aufgabe gestellt ein Fahrzeug mit Bauteilen von Lego Mindstorms zu konstruieren. Für dieses Fahrzeug sollte dann ein Algorithmus entwickelt werden, mithilfe dessen das Fahrzeug autonom einparken kann.
Team und Aufgabenverteilung
Luca Riering: Programmierung, Dokumentation
Dominic Mähling: Programmierung, Konstruktion des Fahrzeugs
Carolin Mohs: Programmierung, Konstruktion, Lego Digital Designer
Hardware
Als erstes musste ein Fahrzeug mit den Bauteilen von Lego Mindstorms konstruiert werden. Die Konstruktion sollte möglichst an realen PKWs orientiert 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.
Fahrzeugparameter
Parameter | Wert |
---|---|
Länge in mm | 320 |
Breite in mm | 160 |
Spurweite vorne in mm | 125 |
Spurweite hinten in mm | 125 |
Achsabstand in mm | 240 |
Software
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
Geradeausfahren und Lücke suchen
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
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.