Darstellung der Simulation
Autor: SDE-Team 2021/22, SDE-Team 2022/23
Betreuer: Ulrich Schneider
Simulink Block Darstellung
Autoren: Hendrik Steffen, Sven Posner, Florian Brinkmann, Weiran Wang
Parameter zur Darstellung
Über die Parameter-Schalter PAR_Darstellung_Schalter_EIN_bit
und PAR_Darstellung_Fahrspur_Schalter_EIN_bit
kann die Ansicht als Draufsicht und die Fahrspuransicht ein- und ausgeschaltet werden. Über die Variable Simulinkmodus
wird zwischen den verschiedenen Simulinkmodi von Bahnplanung und Spurführung und Autonomes einparken unterschieden.
-
Auswahl des Simulinkmodus
-
Simulations Darstellungen
-
Einstellung der Startpositionen
Die Parameter werden in der Datei start.m eingestellt. Die Darstellung lässt sich beschleunigen, in dem man den Zähler beschleunigt.
Interpreted Matlab Function
Eine Interpreted MATLAB-function wendet den Eingang auf eine bestimmte MATLAB-Funktion an. Dabei muss der der Ein- und Ausgang der Funktion mit den Ein- und Ausgangsdimensionen des Blocks übereinstimmen. So kann man Matlab Funktionen in Simulink nutzen. Alternativen zu diesem Block sind z.B. der Matlab Function Block, der erst zur Laufzeit compiliert wird und daher flexibler in der Handhabung ist. Bei einer reinen Desktop Anwendung spielt dies jedoch keine Rolle.
Nachfolgend werden die beiden im Simulink-Block Darstellung verwendeten Interpreted MATLAB Functions auf Basis des Revisionsstands 7064 (07. April 2022) erläutert.
funktion_simulink_simultan_draufsicht(u)
In dieser Funktion wird die Draufsicht auf das Fahrzeug erstellt, dass später in dem Plot zur Simulation dargestellt wird.Während die Draufsicht-Darstellung die Position und Ausrichtung des Fahrzeugs benötigt.Dazu werden die x und y Koordinaten, aus dem Einspurmodell(ESM_x_I_f64, ESM_y_I_f64 und ESM_psi_I_f64), sowie die Gierrate verwendet. Damit die Funktion die Draufsicht erzeugt, muss in der start.m-Datei im Abschnitt Simulations-Darstellungen ein Schalter mit Hilfe des Parameters PAR_Darstellung_Schalter_EIN_bit
aktiviert werden.
Beim erstmaligen Aufruf der MATLAB Funktion wird durch die Funktion plotFahrbahn
die Fahrbahn in eine Figure eingezeichnet. Zusätzlich werden in roter Farbe die Startposition des Fahrzeugs markiert, wobei die Koordinaten in einer Puffervariable gesichert werden. Mit jedem weiteren Aufruf der Funktion werden die Koordinaten in den Pufferspeichern für die spätere Verwendung abgelegt. Um das Fahrzeug selbst als Rechteck darzustellen, wird eine weitere Funktion fahrzeug
aufgerufen, wobei dafür die drei Signale aus dem Einspurmodell benötigt werden. Alle PAR_VIS_Anzahl_Schritte_n
-Schritte wird dann die Fahrspur, die im Prinzip nur eine Punktwolke ist, und die Darstellung des simulierten Fahrzeugs in dem Figure-Fenster aktualisiert. Der Parameter dient dazu, die Simulation zu beschleunigen, damit nicht in jedem Simulationsschritt die Grafik zeitaufwändig aktualisiert werden muss.
funktion_simulink_simultan_Fahrspur(u)
Wohingegen die zuvor genannte Funktion zur Visualisierung des Autos und dessen Spur da ist, wird in dieser Matlab Function die erkannte Fahrbahn gezeichnet, dabei wird die ganze Fahrbahn, mit den gestrichelten Linien, und in blau die Mitte der rechten Fahrspur dargestellt. Dazu werden die Variablen SenKam_SpurA_f64, SenKam_SpurB_f64 und SenKam_SpurC_f64 für das Plotten der Kurven. Dabei stellen A, B und C die Koeffizienten einer Parabel mit der Form:A*x^2+B*x+c dar. Die Funktion verwendet die übergebenen Koeffizienten des Spurpolynoms und berechnet daraus die Fahrspur sowie mit Hilfe von Offset-Werten die Fahrbahnränder. Wie in der obigen Funktion werden zur Beschleunigung der Simulation einmalig die Einstellungen für das Figure-Fenster getroffen und dann alle 200 Simulationsschritte die Darstellung aktualisiert. Um die Visualisierung einzuschalten, muss der Schalter PAR_Darstellung_Fahrspur_Schalter_EIN_bit
aus der start.m-Datei aktiviert werden.
Softwarearchitektur Darstellungsblock
Die Darstellung Draufsicht greift auf die Module Kinematikmodell und Einspurmodell über den Datenbus zu. Beide Darstellungsblöcke, Draufsicht und Fahrspur sind teil des Darstellungsblocks und greifen auf den Zähler zu. Für die Darstellung der Fahrspur wird auf die Sensordaten der Signalaufbereitung zugegriffen.
Fahrt auf der Rundstrecke
Autoren: Noah Greis, Alexander Schirrmeister, Changlai Bao
Parameter zur Darstellung
Die Darstellung wird durch einige vor einstellbare Parameter beeinflusst. Welche dies sind und wo diese eingestellt werden können, ist in folgender Tabelle dargestellt.
Parameter | Funktion | Datei zum bearbeiten |
---|---|---|
PAR_Darstellung_Schalter_EIN_bit | Schalter für die Darstellung der Draufsicht | start.m |
PAR_Darstellung_Fahrspur_Schalter_EIN_bit | Schalter für die Darstellung der Fahrspur | start.m |
Simulinkmodus | Simulinkmodus wählen (Fahren/Parken) | start.m |
PAR_Esm_x0_I_f64 | Startposition x Wert | start.m |
PAR_Esm_y0_I_f64 | Startposition y Wert | start.m |
PAR_Esm_psi0_I_f64 | Startausrichtung | start.m |
RundkursOhneKreuzung.mat | Streckenprofil | start.m |
Simulation der Strecke
Durch die Streckenauswahl wird in der Parameterdatei PAR_SEN_Offlin, die Datei mit den Werten geladen, in diesem Fall RundkursOhneKreuzung.mat. Diese Werte werden als PAR_SenKam_BahnZ_f64 gespeichert und stehen dann zur Weiterverarbeitung zur Verfügung. Die Darstellung läuft dann über den Darstellungsblock und die darin integrierten Funktionen, wie im Abschnitt Simulink Block Darstellung erklärt.
Simulation des Fahrzeugs
Das Fahrzeug wird mit einer eigenen Funktion Fahrzeug.m dargestellt. Um die Form und Farbe des Fahrzeugs ändern, kann man in der fahrzeug.m-Datei in Zeile 15 und Zeile 40 den Code ändern. Damit das Fahrzeug in der Darstellung besser zu sehen ist. Beispiel:
Z15. x_fahrzeug = [x_start,... x_start - sin(ESM_psi_f64) * breite / 2 ... - cos(ESM_psi_f64) * laenge,... x_start - sin(ESM_psi_f64) * breite / 2 ... - cos(ESM_psi_f64) * laenge ... + sin(ESM_psi_f64) * breite,... x_start]; y_fahrzeug = [y_start,... y_start + cos(ESM_psi_f64) * breite / 2 ... - sin(ESM_psi_f64) * laenge,... y_start + cos(ESM_psi_f64) * breite / 2 ... - sin(ESM_psi_f64) * laenge ... - cos(ESM_psi_f64) * breite,... y_start]; Z40. h_fahrzeug = plot(x_fahrzeug, y_fahrzeug,'Color', 'magenta', 'LineWidth', 5);
Dadurch wird der Ego-Fahrzeugs eine dicke rosa Linie mit einem Dreieck dargestellt.
Darstellung der Bahnkurve
Die Funktion funktion_simulink_simultan_draufsicht.m erstellt die Bahnkurve. Dabei werden die jeweiligen plots nichts überschrieben, sondern reihen sich aneinander zur Bahnkurve.
Sollwerteinstellung Regler
Der Sollwert der Regelung wird mithilfe der Kamera bzw. je nach Fahrmanöver auch durch den Lidar generiert.
Fahrt auf der Rundstrecke mit Kreuzung
Autoren: Junjie Lyu, Jonas Hokamp
Parameter zur Darstellung
Parameter | Einstellung | Datei zum bearbeiten |
---|---|---|
PAR_Darstellung_Schalter_EIN_bit | Schalter für die Darstellung der Draufsicht | start.m |
PAR_Darstellung_Fahrspur_Schalter_EIN_bit | Schalter für die Darstellung der Fahrspur | start.m |
Simulinkmodus | BSF/AEP | start.m |
PAR_Esm_x0_I_f64 | Startposition x Wert | start.m |
PAR_Esm_y0_I_f64 | Startposition y Wert | start.m |
PAR_Esm_psi0_I_f64 | Startausrichtung | start.m |
x- und y-Werte der Strecke und der Stopplinien | Streckenverlauf | RundkursMitKreuzung.mat Stopplinie.mat |
PAR_Modi_Schalter_Fahrbahn_int | Wahl der Strecke | start.m |
Basisschrittweite T | Schrittweite ändern | start.m |
PAR_CAR_Fahrzeuglaenge_f64 PAR_CAR_Fahrzeugbreite_f64 | Länge und Breite beeinflusst die Fahrzeuf-Darstellung | param_CAR.m |
Simulation der Strecke
Ist der Parameter PAR_Modi_Schalter_Fahrbahn_int = 1, wird aus dem Ordner Parameter die Datei RundkursMitKreuzung.mat geladen, welche die x- und y-Werte der Strecke enthält. Zusätzlich wird Stopplinien.mat geladen, um auch die Kreuzungslinien einzuzeichnen. Es wird zudem eine Startposition (x,y), sowie eine Startausrichtung übergeben. Dazu werden noch die Fahrbahnränder und die Mittellinie, sowie eine vorgegebene Bahn eingezeichnet.
Simulation des Fahrzeugs
Durch die Funktion Fahrzeug.m , welche als Parameter die Daten aus dem Einspurmodell, sowie den Zähler enthält. Aus den Fahrzeugparametern (Länge,Breite), sowie den Daten aus dem Einspurmodell werden dann die Fahrzeugkanten sowie der Richtungsvektor berechnet.Im ersten Schritt, also bei zähler=1 wird das Fahrzeug und Richtungsvektor erzeugt, in allen weiteren Schritten nur verschoben.
Simulation andere Verkehrsteilnehmer
Wählt man den Simulinkmodus 4 (BSF inklusive Objekte) werden andere Verkehrsteilnehmer als lilanes Rechteck dargestellt. Dabei können durch Ändern des Parameters PAR_Modi_Schalter_Luecke_int die Größe und Position der Hindernisse variieren.
Darstellung der Bahnkurve
In den Plot der gesamten Strecke wird die aktuelle Position des Fahrzeugs eingezeichnet. Die eingezeichneten Positionen bleiben über der gesamten Simulationszeit erhalten,sodass sich mit der Zeit die gefahrene Bahn abzeichnet.
Sollwerteinstellung Regler
Die Sollwerteinstellung des Reglers ist allgemein davon abhängig, ob die Fahrt auf einer Strecke mit Hindernissen, oder ohne erfolgt. Bei einer Einstellung von Simulinkmodus=1 würde man eine Strecke ohne Hindernisse simulieren, in allen anderen Auswahlmöglichkeiten mit Hindernissen.
Fahrt ohne Hindernisse
Fahrt mit Hindernisse
Fahrt auf der Achtbahn
Autoren: Zhaolin Dong, Sandra-Yvonne Hoppe
Parameter zur Darstellung
Parameter | Funktion | Datei zum bearbeiten |
---|---|---|
PAR_Darstellung_Schalter_EIN_bit | Schalter für die Darstellung der Draufsicht | start.m |
PAR_Darstellung_Fahrspur_Schalter_EIN_bit | Schalter für die Darstellung der Fahrspur | start.m |
Simulinkmodus | Simulinkmodus wählen (BSF/AEP) | start.m |
PAR_Esm_x0_I_f64 | Startposition x Wert | start.m |
PAR_Esm_y0_I_f64 | Startposition y Wert | start.m |
PAR_Esm_psi0_I_f64 | Startausrichtung | start.m |
Achterbahn.mat | Streckenprofil | start.m |
Simulation der Strecke
Die Sensordaten werden in Param_SEN_offline geladen und aus dem Ordner PAR_Modi_Schalter_Fahrbahn_int wird die gewünschte Datei(z.B. Achterbahn.mat) geladen. Zudem wird die Fahrstrecke und die Mittellinie eingezeichnet.
Simulation des Fahrzeugs
Durch die Datei Fahrzeug.m wird das Ego-Fahrzeug simuliert.
Simulation andere Verkehrsteilnehmer
Wenn man den Simulinkmodus=1 wählt, gibt es keine Verkehrsteilhmer. Bei der Simulation von Verkehrsteilnehmern im Simulinkmodus=4 werden die Hindernisse violett dargestellt.
3 zufällige statischen Ziele
Autoren: Jiaxiang Xia, Zhiyu Chen
Zuerste stellt man Anzahl der Hindernisse, statische und zufällige Objekte in param_OSE_offline.m ein.
% 0: Objekte sind statisch % 1: Objekte sind dynamisch PAR_OSE_Mode_DynObj_bit = 0; % 0: Objekte sind immer gleich verteilt % 1: Objekte sind zufällig verteilt zufall =1; % Anzahl der Hindernisse nMaxObjekte = 3;
Darstellung der Bahnkurve
Die Fahrspur wird durch Funktion funktion_simulink_simultan_Fahrspur geplottet. Die Funktion funktion_simulink_simultan_draufsicht.m erstellt die gefahrene Trajektorie. Die Trajektorie wird mit fortlaufender Simulationszeit aktualisiert.
Sollwerteinstellung Regler
Durch die Kamera und dem Lidar kann man den Sollwert generieren. Der Lidar wird nur zur Generierung des Sollwertes hinzugenommen, wenn sich Hindernisse in der Bahn befinden.
AEP - Autonomes Einparken
Autoren: Marc Ebmayer, Lukas Honerlage
Der Artikel beschreibt die Dokumentation der entwickelten Soft-und Hardware für den Automatischen Einparkvorgang.
Einparkszenario
Autoren: Ran Wei,Tim J.Schonlau
Parameter zur Darstellung
Parameter | Einstellung | Datei zum bearbeiten |
---|---|---|
PAR_Darstellung_Schalter_EIN_bit | Schalter für die Darstellung der Draufsicht | start.m |
PAR_Darstellung_Fahrspur_Schalter_EIN_bit | Schalter für die Darstellung der Fahrspur | start.m |
Simulinkmodus | BSF/AEP | start.m |
PAR_Esm_x0_I_f64 | Startposition x Wert | start.m |
PAR_Esm_y0_I_f64 | Startposition y Wert | start.m |
PAR_Esm_psi0_I_f64 | Startausrichtung | start.m |
x- und y-Werte der Strecke und der Stopplinien | Streckenverlauf | RundkursMitKreuzung.mat Stopplinie.mat |
PAR_Modi_Schalter_Fahrbahn_int | Wahl der Strecke | start.m |
Basisschrittweite T | Schrittweite ändern | start.m |
PAR_CAR_Fahrzeuglaenge_f64 PAR_CAR_Fahrzeugbreite_f64 | Länge und Breite beeinflusst die Fahrzeuf-Darstellung | param_CAR.m |
Simulation der Strecke
Zuerst wird in „start.m“ die Variable „Schalter_offline“ auf 1 gesetzt, um die offline Simulation zu starten.Ist der Parameter Die globale Variable „PAR_Modi_Schalter_Fahrbahn_int“ muss nicht verändert werden.
Simulation des Fahrzeugs
Das Fahrzeug wird mit einer eigenen Funktion Fahrzeug.m dargestellt.
Simulation autonome Einparken (AEP)
Die Variable „Simulinkmodus“ wird auf 3 gesetzt, um das autonome Einparken (AEP) zu simulieren.Um die Darstellung zu aktivieren, wird die Variable „PAR_Darstellung_Schalter_EIN_bit“ auf 1 gesetzt, zusätzlich wird die Fahrspur mit angezeigt.
AEP: Verändern Sie die Größe der parkenden Fahrzeuge (Objekte)
Die Parklücken und Objekte werden in der "param_SEN_offline.m" im Ordner "parameter" initialisiert. Diese werden anschließend in einem Vektor in "PAR_SenAbs_ObjektListe_f64" gespeichert und in der Darstellungsfunktion "funktion_simulink_simultan_draufsicht" aufgerufen. Die einzelnen Parklücken werden in einer "switch case"-Schleife erstellt, sodass (in diesem Fall) 9 unterschiedlich lange Parklücken erstellt werden können. Dabei kann eine Lücke mehrfach verwendet werden, es wird also ein Vektor mit den gleichen Werten gefüllt. Die Objekte werden analog dazu erstellt. Der daraus resultierende Seitenstreifen, in den das Fahrzeug einparken soll, wird mit einer Zählschleife im Vektor "x" in der Reihenfolge Objekt, dann Parklücke zusammengefasst. (Dieser Text wurde im Wiki-Artikel „AEP - Autonomes Einparken“ ergänzt)
Einparkszenario
Autoren: Chuan Pu, Suryaa Kalamani Ramamoorthy
Durch Veränderung von 4 Parameter(PAR_Modi_Schalter_Fahrbahn_int = 0;PAR_Modi_Schalter_Luecke_int = 0;PAR_Modi_Schalter_Lw_int =2;PAR_Modi_Schalter_Vx_int = 2;) wird Einparkszenario ergezeugt.
%% Auswahl des Simulinkmodus %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1: BSF % 2: AEP (Lücke suchen, vermessen und anschließend anhalten) % 3: AEP (Lücke suchen, vermessen und einparken) % 4: BSF incl. Objekt auf der Fahrbahn Simulinkmodus = 3; %% Im Fall AEP: Positionswahl der Hindernisse %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 12: schmales Hindernis hinten rechts % 11: schmales Hindernis hinten mittig % 10: schmales Hindernis hinten links % 9: größtmögliche Parklücke (1.5 m) zuerst % 8: mittlere Parklücke (1.1 m) zuerst % 7: optimale Parklücke (0.9 m) zuerst % 6: kleinstmögliche Parklücke (0.71 m) zuerst % 5: nur vorderes Hindernis und kleinstmögliche Parklücke (0.71 m) % 4: kein Hindernis % 3: keine passende Lücke % 2: Positionierung und Hindernisbreite zufällig % 1: Positionierung zufällig, feste Hindernisbreite % 0: Positionierung vorgegeben (größte Lücke vorne), feste Hindernisbreite global PAR_Modi_Schalter_Luecke_int PAR_Modi_Schalter_Luecke_int = 0; % Soll-Lenkwinkel: Quelle einstellen (1=BSF, 2=AEP, 3=manuell) PAR_Modi_Schalter_Lw_int =2; % Soll-Geschwindigkeit: Quelle einstellen (1=BSF, 2=AEP, 3=manuell) PAR_Modi_Schalter_Vx_int = 2;
→ zurück zum übergeordneten Artikel: Systemarchitektur des Fahrzeugs
→ zurück zum Hauptartikel: Praktikum SDE