AEP - Einparkalgorithmus

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Martin Theine und Patrick Schumann

Einleitung

Das Team „AEP - Einparkalgorithmus“ beschäftigt sich mit dem Programmablauf und der Implementierung des autonomen Einparkvorganges unter Verwendung der vorhandenen Einparksensorik. Dazu zählt zum einen das Detektieren einer Parklücke, welche eine außreichende Länge für das vorhandene Carolo-Cup Fahrzeug aufweist und das Einparkmanöver selbst. Dazu wurde auf Basis vorliegender Fachliteratur ein Konzept erarbeitet, welches nachfolgend erläutert wird.

Anforderungen

Durch das Lastenheft des Projekts "Autonomes Fahrzeug" werden nachfolgende Anforderungen an das Autonome Einparken und somit an den umgesetzten Einparkalgorithmus gestellt:

Abb. 1: REQ - Paralleles Einparken
Abb. 2: REQ - Start des Einparkmanövers
Abb. 3: REQ - Durchführen des Einparkmanövers
Abb. 4: REQ - Erfolgreiches Einparkmanöver

Pflichten / Ziele

Aus den genannten Anforderungen (Abb. 1 - Abb. 4) lassen sich nachfolgende Pflichten ableiten.

Abb. 5: Pflichten Team AEP - Einparkalgorithmus SoSe2020

Berechnungen

Abmaße Carolo-Cup Fahrzeug

Beschreibung: Matlab / Simulink: Variablen: Wert:
Fahrzeugbreite PAR_CAR_Fahrzeugbreite_f64 0,200m
Fahrzeuglänge PAR_CAR_Fahrzeuglaenge_f64 0,430m
Radstand PAR_CAR_Radstand_f64 0,265m
Max. Lenkwinkel PAR_CAR_max_Lenkeinschlag_alpha_deg_f64 23°
Abstand Hinterachse - Front - 0,330m
Abstand Hinterachse - Heck PAR_CAR_Mitte_Hinterachse_Ende_f64 0,100m
Wendekreisradius PAR_CAR_Wendekreisradius_f64 siehe Berechnung
Benötigte Parklückenlänge PAR_AEP_Parkluecke_Soll_f64 siehe Berechnung
Gemessene Parklückenlänge AEP_parkluecke_ist_f64 siehe Berechnung
Umlenkwinkel PAR_AEP_Umschlagwinkel_f64 siehe Berechnung
Endabstand Heck - Hindernis AEP_Abstand_Hinten siehe Berechnung

Wendekreisradius

Benötigte Parklücke

Umlenkwinkel

Endabstand Heck - Hindernis

Konzept

Abb. 6: Konzept AEP - Einparkalgorithmus

Dieses Kapitel befasst sich mit dem Konzept des AEP - Eonparkalgorithmus. Das Konzept beruht auf zwei verschiedenen Ansätzen zum autonomen Einparken aus der Literatur und stellt eine kombination dieser dar.

Das Carlolo-Cup-Fahrzeug fährt zunächst parallel zu den Parkbuchten. Wurde eine passende Parklücke identifiziert, fährt das CCF so lange weiter, bis sich das Fahrzeugheck auf Höhe Heck des parkenden Autos befindet, hinter welchem eingeparkt werden soll (siehe Abb. 6 - 1). Dadurch wird beim Zurücksetzen so eng wie möglich um dieses vordere Hindernis herumgefahren, ohne es zu berühren. Daraufhin soll das Fahrzeug rückwärts eine Rechtskurve fahren, bis dieses im zuvor berechneten Umschlagwinkel zur Fahrbahn steht (siehe Abb. 6 - 2). Anschließend behält das Fahrzeug diesen Winkel zur Fahrbahn bei und fährt eine definierte Strecke gerade rückwärts, um so “tief” wie möglich in die Parklücke hineinzufahren (siehe Abb. 6 - 3). Nun soll das Fahrzeug rückwärts eine Linkskurve fahren, bis es mit der hinteren linken Ecke auf einen definierten Abstand zum dahinterliegenden Auto herangefahren ist (siehe Abb. 6 - 4). Abschließend werden zwei Korrekturzüge gefahren. Zunächst absolviert das Fahrzeug eine Rechtskurve vorwärts, bis es parallel zur Fahrbahn steht (siehe Abb. 6 - 5). Zuletzt fährt es gerade rückwärts, bis es mittig zwischen beiden parkenden Autos steht (siehe Abb. 6 - 6).

Struktur Matlab / Simulink

Abb. 7: Programmablaufplan - Einparkalgorithmus

Der Programmablauf des Einparkvorgangs (siehe Abb. 7) teilt sich, analog zum oben beschriebenen Konzept, in sechs Sequenzen auf:

Sequenz 1

Wurde eine passende Parklücke gefunden, so wird der Blinker rechts gesetzt und das Fahrzeug fährt mit „Vermessgeschwindigkeit“ weiter vorwärts. Erfasst der seitliche hintere Infrarotsensor das Heck des vorderen Hindernisses, so befindet sich die Hinterachse des Fahrzeugs genau auf dieser Höhe.

Das Fahrzeug fährt mit gleichbleibender Geschwindigkeit vorwärts und erfasst ab diesem Zeitpunkt die gefahrene Strecke. Wurde die festgelegte „Korrekturstrecke_Vorn“ zurückgelegt, so beginnt die nächste Sequenz.

Sequenz 2

Die Lenkung des Fahrzeugs wird maximal nach rechts eingeschlagen und die Geschwindigkeit auf die „Einparkgeschwindigkeit“ gesetzt. Das Fahrzeug fährt nun so lange rückwärts eine Rechtskurve, bis der gemessene Gierwinkel dem zuvor berechneten Umschlagwinkel entspricht.

Sequenz 3

Die Lenkung des Fahrzeugs wird in Mittelstellung gebracht und ab diesem Zeitpunkt wird erneut die zurückgelegte Strecke erfasst. Das Fahrzeug fährt im zuvor erreichten Winkel zur Fahrbahn gerade rückwärts, bis die festgelegte „Korrekturstrecke_Rueck“ zurückgelegt wurde.

Sequenz 4

Die Lenkung wird maximal nach links eingeschlagen und das Fahrzeug fährt mit gleichbleibender Geschwindigkeit rückwärts eine Linkskurve, bis der linke hintere Infrarotsensor einen festgelegten Mindestabstand zum hinteren Hindernis misst.

Sequenz 5

Die Geschwindigkeit wird auf die zuvor gefahrene „Vermessgeschwindigkeit“ gesetzt und die Lenkung maximal nach rechts eingeschlagen. Das Fahrzeug fährt so lange einen Korrekturzug vorwärts, bis der gemessene Gierwinkel dem festgelegten „Schlussparkwinkel“ entspricht. Das Fahrzeug ist somit parallel zur Fahrbahn ausgerichtet.

Sequenz 6

Die Lenkung wird in Mittelstellung gebracht und die Geschwindigkeit wieder auf die „Einparkgeschwindigkeit“ gesetzt. Das Fahrzeug fährt so lange einen Korrekturzug gerade Rückwärts, bis die hinteren Infrarotsensoren den vorgegebnen Abstand zum hinteren Hindernis messen. Ist dieser Zustand erreicht, so steht das Fahrzeug in gleichem Abstand zum hinteren und vorderen Hindernis, also mittig in der Parklücke.

Unit- und Integrationstest

Abb. 8: Simulinkbibliothek - Autonomes EInparken

Mithilf der Unit- und Integrationstest sollen die Funktion des AEP - Einparkalgorithmus getestet und überpfrüft werden. Nach Erfolgreiche bestehen der Tests kann so gewährleistet werden, dass die Anforderungen aus dem Lastenheft erfüllt sind. Nachfolgend wird das Vorgehen beim Unit- und Intergartionstest Stichpunktartig erklärt. Eine Vorlage und die genau Beschreibung zur Durchführung der Test ist im SVN hinterlegt.

Vorlage im SVN: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Teams/AEP/Dokumentation

Abb. 8 zeigt die Simulink-Bibliothek "AEP-Autonomes Einparken" mit den aus dieser hervorgehenden Variablen. Die rot eingerahmten Variablen werden vorwiegend zur Auswertung der Unittests herangezogen. Zusätzlich müssen während der Simulation weitere Merkmale beobachtet und dokumentiert werden.

Vorgehen Unittest

  1. Öffnen der Datei "AEP_Unittest_und_Integrationstest.docx" in Word
  2. Vorlage zu den Unittests (siehe „AEP_Vorlage_Unittest_und_Integrationstest.docx“ Kapitel 2) ausfüllen. Wichtig: Anmerkungen zur Simulation beachten!
  3. Öffnen der Datei "start.m" in Matlab R2019b
  4. Folgende Parameter setzten
    • Auswahl des Simulationstyps: 1 (Simulation offline)
    • Laden verschiedener Fahrbahnformen: 0 (Rundkurs ohne Kreuzung)
    • Auswahl des Simulationsmodus: 2 oder 3 (je nach durchzuführenden Unittest)
    • Im Fall AEP: Positionswahl der Objekte: 0…12 (je nach durchzuführenden Unittest)
  5. Unter Registerkarte "Editor" in Matlab auf "RUN" klicken, um Matlab-Skript auszuführen --> Simulink-Modell öffnet sich
  6. Erforderliche Variablen (siehe "AEP_Vorlage_Unittest_und_Integrationstest.docx" Kapitel 2) im Watch-Window anzeigen und zur Auswertung der Test nutzen
  7. Im Subsystem "AEP-Autonomes Einparken" mit klicken von „Run“ unter der Registerkarte "Simulation" die Simulation starten
  8. Testergebnisse in "AEP_Vorlage_Unittest_und_Integrationstest.docx" Kapitel 2 dokumentieren und mit nachfolgender Dateibezeichnung in SVN hinterlegen . Gegebenenfalls zusätzlich Screenshots der Simulation in SVN hinterlegen

Testfälle Unittest

Unittest-ID: Beschreibung: Testergebnis: Stand:
001 Test der Funktionen Streckenerfassung und Parklückenvermessung i.O 19.06.2020
002 Einzelnes Hindernis am Anfang der Parkbucht i.O 19.06.2020
003 Kein Hindernis in der Parkbucht i.O 19.06.2020
004 Keine ausreichend große Parklücke i.O 19.06.2020
005 Ein einzelnes Hindernis im Abstand von < 0,95m vom Anfang der Parkbucht i.O 19.06.2020
006 Größte Parklücke an beliebiger Position und prozentuale Erhöhung der Parklückenlänge ... ...
007 Größte Parklücke an beliebiger Position, Parklückenlänge minimal und prozentuale Erhöhung der Hindernisbreite ... ...

Vorgehen Integrationstest

Der Integrationstets wird im Anschluss an die Unittest durchgeführtt und bildet die abschließende Funktionskontrolle des AEP - Einparkalgorithmus. Hierzu wird der während der Entwicklungs- und Optimierungsphase im SVN angelegte "Branch" mit dem "Trunk" gemerget und anschließend die Unittests "Test der Funktionen Streckenerfassung und Parklückenvermessung" und "Größte Parklücke an beliebiger Position und prozentuale Erhöhung der Parklückenlänge" wiederholt. Die Ergebnisse der Unittets vor und nach dem mergen werden miteinander verglichen. Sind die Ergebnisse der Test identisch, so gilt der Integrationstest als bestanden.

Testfälle Integrationstest

Unittest-ID: Beschreibung: Testergebnis: Stand:
001 Test der Funktionen Streckenerfassung und Parklückenvermessung ... ...
006 Größte Parklücke an beliebiger Position und prozentuale Erhöhung der Parklückenlänge ... ...

Zusammenfassung

Ausblick

Offene Punkte

Literaturverzeichnis



→ zurück zum Hauptartikel: SDE Praktikum Autonomes Fahren
→ zum Artikel Autonomes Einparken: AEP - Autonomes Einparken
→ zum Artikel Einparksensorik: AEP - Einparksensorik