Darstellung der Simulation

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

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.

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

Funktionsblock Interpreted Matlab fcn

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

Darstellung der Softwarearchitektur

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

Der Rundkurs in der Simulation

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
Parameter zur Darstellung
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
Parameter zur Darstellung
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

Der Rundkurs mit Kreuzung ohne Hindernisse in der Simulation




Fahrt mit Hindernisse

Der Rundkurs mit Kreuzung mit Hindernisse in der Simulation

Fahrt auf der Achtbahn

Autoren: Zhaolin Dong, Sandra-Yvonne Hoppe

Simulation der Achterbahn

Parameter zur Darstellung

Parameter Funktion Datei zum bearbeiten
Parameter zur Darstellung
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;



Simulation mit Hindernissen

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

Simulation der Einparken

Parameter zur Darstellung

Parameter Einstellung Datei zum bearbeiten
Parameter zur Darstellung
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)

die Größe der parkenden Fahrzeuge


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;

Simulation mit Hindernissen



→ zurück zum übergeordneten Artikel: Systemarchitektur des Fahrzeugs

→ zurück zum Hauptartikel: Praktikum SDE