AEP - Einparkalgorithmus: Unterschied zwischen den Versionen
Zeile 159: | Zeile 159: | ||
! style="font-weight: bold; text-align:left;" | Beschreibung: | ! style="font-weight: bold; text-align:left;" | Beschreibung: | ||
! style="font-weight: bold; text-align:left;" | Testergebnis: | ! style="font-weight: bold; text-align:left;" | Testergebnis: | ||
! style="font-weight: bold; text-align:left;" | | ! style="font-weight: bold; text-align:left;" | Stand: | ||
|- | |- |
Version vom 19. Juni 2020, 00:42 Uhr
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:
Pflichten / Ziele
Aus den genannten Anforderungen (Abb. 1 - Abb. 4) lassen sich nachfolgende Pflichten ableiten.
Berechnungen
Abmaße Carolo-Cup Fahrzeug
Beschreibung | Matlab / Simulink | Variablen | Wert |
---|---|---|---|
Fahrzeugbreite | ... | 0,200m | |
Fahrzeuglänge | ... | 0,430m | |
Radstand | ... | 0,265m | |
Max. Lenkwinkel | ... | 23° | |
Abstand Hinterachse - Front | ... | 0,330m | |
Abstand Hinterachse - Heck | ... | 0,100m | |
Wendekreisradius | ... | siehe Berechnung | |
Benötigte Parklückenlänge | ... | siehe Berechnung | |
Gemessene Parklückenlänge | ... | siehe Berechnung | |
Umlenkwinkel | ... | siehe Berechnung | |
Endabstand Heck - Hindernis | ... | siehe Berechnung |
Wendekreisradius
Benötigte Parklücke
Umlenkwinkel
Endabstand Heck - Hindernis
Konzept
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
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
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
- Öffnen der Datei "AEP_Unittest_und_Integrationstest.docx" in Word
- Vorlage zu den Unittests (siehe „AEP_Vorlage_Unittest_und_Integrationstest.docx“ Kapitel 2) ausfüllen. Wichtig: Anmerkungen zur Simulation beachten!
- Öffnen der Datei "start.m" in Matlab R2019b
- 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)
- Unter Registerkarte "Editor" in Matlab auf "RUN" klicken, um Matlab-Skript auszuführen --> Simulink-Modell öffnet sich
- Erforderliche Variablen (siehe "AEP_Vorlage_Unittest_und_Integrationstest.docx" Kapitel 2) im Watch-Window anzeigen und zur Auswertung der Test nutzen
- Im Subsystem "AEP-Autonomes Einparken" mit klicken von „Run“ unter der Registerkarte "Simulation" die Simulation starten
- 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
- Ablage in SVN: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Teams/AEP/Dokumentation/Unittest
- Dateibezeichnung Testergebnisse (PDF-Datei): „CCF_AEP_Testergebnis_Datum_NameTestperson.pdf“
- Dateibezeichnung Screenshots (PNG-Datei): „CCF_AEP_Testergebnis_IDxxx_Datum_NameTestperson.png“
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 Unittest "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