BSF - Bahn- und Spurführung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(Längsregelung auf aktuellen Stand dokumentiert)
 
(242 dazwischenliegende Versionen von 15 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
[[Kategorie:Querregelung]]
[[Kategorie:Querregelung]]
[[Kategorie:Autonom]]
[[Kategorie:Autonom]]
 
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]
==Einleitung und Ziel==
==Einleitung und Ziel==
Im Rahmen des SDE-Praktikums beinhaltet ein Arbeitsbereich die Bahnplanung und die Spurführung. Die Tätigkeit unterteilt sich in die Bereiche Bahnplanung und Autonome Längs- und Querregelung. Im Sommersemester 2014 wurde der Themenbereich von [[Benutzer:Daniel_Block|Daniel Block]] und [[Benutzer:Torben_Petersen|Torben Petersen]] bearbeitet. Die Dokumentation beruht auf der Vorarbeit von Tobias Teicher, siehe ''Anleitung und Dokumentation Carolo-Cup 2013 Studiengang "Mechatronik" Schwerpunkt "System Design Engineering"''.
Die Bahnplanung und Spurführung des [[Praktikum SDE|SDE-Praktikums]] umfasst die Arbeitsbereiche Bahnplanung, Längs- und Querregelung. Das Ziel ist es mit den Ergebnissen der [[OSE - Objekt - und Spurerkennung | Objekt und Spurkerkennung]] und der [[Kom - Kommunikation | Kommunikation]] die Bahnplanung umzusetzen und das CCF durch die Strecke zu führen. Dafür wird aus dem Spurpolynom die zu fahrende Geschwindigkeit und Richtung abgeleitet und an die Aktoren weitergegeben. Um möglichst genaue Ergebnisse zu erzielen, muss die Geschwindigkeit und die Richtung geregelt werden. Für den Hauptantrieb des CCF ist die Längsregelung verantwortlich, für die Lenkung die Querregelung.


Das Thema Autonome Längs- und Querregelung beinhaltet folgende Aufgaben:
Das Thema Längsregelung beinhaltet folgende Aufgaben:
*Messen der Istgeschwindigkeit
*Analyse Istgeschwindigkeitssignal
*Analyse Istgeschwindigkeitssignal
*Bestimmung Sollgeschwindigkeit
*Regelung längs
Das Thema Querregelung beinhaltet folgende Aufgaben:
*Analyse Gierrate
*Analyse Gierrate
*Regelung längs
*Regelung quer
*Regelung quer
Zur Querregelung ist neben der eigentlichen Reglerauslegung das Querführungskonzept und die Parametrisierung des Einspurmodells (ESM) erforderlich.<br>
*Querführungskonzept anhand des Spurpolynoms
Das Ziel der Aufgabe ist die Auslegung der Längs- und Querregelung des Fahrzeugs.
*Parametrisierung des Einspurmodells (ESM)


==Analyse Istgeschwindigkeit==
Die Aufzeichnung der Istgeschwindigkeit war zunächst nicht möglich, weil die in ControlDesk eingestellte Sollgeschwindigkeit nicht umgesetzt wurde. Unabhängig davon welcher Wert mit dem Slider vorgegeben wurde, fuhr das Fahrzeug immer rückwärts.<br\>
Zur Lösung des Problems wurde die manuelle Gas-Vorgabe analysiert. Der Wert des Sliders wird mit der Look-Up-Table (LUT) ''Look Up Gaspedal'' im Block ''AktRtiPwm-PWM4fach-Modul'' in die entsprechende PWM-Breite zur Ansteuerung der Motoren umgewandelt.<br\>
Das PWM-Eingangssignal ''AktFernb_PwmBreiteGasfernb_f64'' im Block ''SenFernb - Fernbedienung'' wurde ermittelt, um die Breite der PWM bei neutraler Stellung, bei der maximalen Geschwindigkeit in Vorwärts- und Rückwärts-Fahrt zu identifizieren. <br\>
Diese Werte wurden in die LUT ''Look Up Gaspedal'' im Block ''AktRtiPwm-PWM4fach-Modul'' eingetragen (siehe Abbildung Function Block Parameters: Look Up Gaspedal).[[Datei:Look Up Gaspedal Parameter.JPG|thumb|Function Block Parameters: Look Up Gaspedal]] Hierzu wurde der Parameter ''PAR_LookUpPWMSignalGas_f64'' gleich [0.0741 0.09144 0.1292] gesetzt. Der Parameter wird in der Datei ''param_SEN_offline.m'' definiert.<br\>
Nach dieser Einstellung kann über ControlDesk die Fahrtrichtung und die Geschwindigkeit vorgegeben werden.<br\>


Darüber hinaus gehört das Verhalten an Stopplinien zu den Aufgaben der Bahnplanung.<br>
Hierzu gehören folgende Aufgaben:
*Reduktion der Geschwindigkeit bei erkannter Stopplinie
*Halten in einem Abstand von maximal 15cm vor der Stopplinie
*Warten von mindestens zwei Sekunden an der Haltelinie
*Wiederanfahrt nach erkennen einer freien Kreuzung und Ablauf der Wartezeit


Ehemalige Mitwirkende:
<div class="mw-collapsible mw-collapsed ">
Im Sommersemester 2016 und im Wintersemester 2016/2017 wurde der Themenbereich von [[Benutzer:Marcus_Irmer|Marcus Irmer]] und [[Benutzer:Robin_Kirsch|Robin Kirsch]] bearbeitet. Die Dokumentation beruht auf der Vorarbeit von Daniel Block und Torben Petersen.
Im Sommersemester 2018 wurde darauf aufbauend die Thematik von [[Benutzer:Benedikt_Wulowitsch|Benedikt Wulowitsch]] und [[Benutzer:Leonard_Herbstmann|Leonard Herbstmann]] bearbeitet.
In den Anforderungen und auch dem Pflichtenheft für das SoSe 2018 wurde als Aufgabe die Optimierung der Regler vorgesehen. Diese werden im Sommersemester 2019 von [[Benutzer:Marcel_Broeckelmann|Marcel Bröckelmann]] validiert und die Pflichten fortgeführt. Im Wintersemester 2019/20 befassen sich | |||||
[[Benutzer:Marcel_Broeckelmann|Marcel Bröckelmann]],[[Benutzer:Thomas_Miska|Thomas Miska]], Christian und Isaac mit der Bahn- und Spurführung.
</div>


==Längsregelung==
[[Bild:Hall-Sensor Motor-Anschluss.PNG|200px|mini|Anschluss des Motors an den Motortreiber, mit dem Anschluss der Hall-Sensorik. Die Hall-Sensoren sind direkt mit der dSpace Karte DS1104 verbunden.]]
Die Längsregelung des Fahrzeugs erfordert eine exakte Bestimmung der Ist- & Sollgeschwindigkeit. Aus diesem Grund wird im Folgenden das Konzept zur ''Bestimmung der Istgeschwindigkeit'' und der ''Bestimmung der Sollgeschwindigkeit'' betrachtet.


===Konzept zur Bestimmung der Istgeschwindigkeit===
Die Geschwindigkeit des CCF wird mithilfe von [[Hall-Sensor | Hall-Sensoren]] erfasst. Drei Hall-Sensoren sind [[LRP Motorsteuerung| Sensoren des Längsantriebs]] und lösen jeweils einen Interrupt der dSpace Entwicklungskarte DS1104 aus.
Aus der Zeitdifferenz der Interrupts wird die Geschwindigkeit berechnet. Dies wird konkret mit Simulink-Blöcken aus der ''dSpace RTILib'' Bibliothek im dem Simulinkmodell ''CCF_online → SEN - Geschwindigkeit → SEN - Geschwindigkeit - Interrupt_Hall-Sensoren'' implementiert. <br>
[[Bild:Online Sensor aktor test Sen Geschwindigkeit3.jpg|200px|thumb|right|Simulinkmodell SEN - Geschwindigkeit - Interrupt_Hall-Sensoren]]
In der S-Function ''bestimmeGeschwindigkeit'' wird die Zeit der dSpace Karte DS1104 mit dem Befehl ''ts_time_read()'' ausgelesen und die Zeit des letzten Interrupts abgezogen. <br>
Die ''zurückgelegte Strecke pro Interrupt'' wird durch die ermittelte Zeit geteilt. <br>
Bei der Istgeschwindigkeit wurde auf den Ergebnissen der vorangegangenen Semester zurückgegriffen.
Siehe Dazu:
[[Analyse Istgeschwindigkeit]] <br>


====Aktueller Stand der Ist-Geschwindigkeit====
Die Ist-Geschwindigkeit wird korrekt ermittelt, schwankt allerdings stark. Wie im Plot "Testfahrt mit langsamer Geschwindigkeit" zu sehen, beschleunigt das Fahrzeug bis die Soll-Geschwindigkeit erreicht wird. Dann schwankt die Geschwindigkeit ±0.1m/s um die Soll-Geschwindigkeit. <br>
Das Signal der Geschwindigkeit "SenVx_vx_K_f64" wird durch eine Stopperkennung bei geringen Geschwindigkeiten auf 0 m/s gesetzt, da hier der gleiche Hall-Status 14 Sample-Schritte lang gleich war. Diese "Stopperkennung" lässt sich mit dem Parameter "PAR_SenGeschw_ZeitbisStop" einstellen.


[[Datei:Plot_20240111_BSFLaengsreglerTest_01.png|thumb|Testfahrt mit langsamer Geschwindigkeit]]


==== Geschwindigkeitsberechnung ====
Folgende Werte wurden empirisch festgestellt:
Die Geschwindigkeit wird mit der Formel <math> v = \frac{s}{t} </math> bestimmt. [[https://de.wikipedia.org/wiki/Geschwindigkeit#Einfache_Sonderf%C3%A4lle Wikipedia)]]
Die Strecke <math> s </math> ist bei einer theoretischen Berechnung der Radumfang des CCF. Da sich das Profil des Rades unter Belastung ändert, nehmen wir für den Raddurchmesser <math> 0,0621m </math> an. Der Radumfang ist damit <math> 0,0621m \cdot π ≈ 0,208m </math>. Der [[https://wiki.hshl.de/wiki/index.php/AF:_Laengsgeschwindigkeit_(SenVx)|Antriebsmotor LRP Vector X12 StockSpec 17.5T]] dreht sich 7 mal pro Radumdrehung, dabei werden 43 Hall-Flanken ausgelöst. Die Strecke pro Flanke ist damit <math> \frac{0,208m}{43} = 0,0048m </math>.


===Parameter der Längsregelung===
Die Signalkette der Längsregelung besteht aus folgenden Parametern und Signalen:


{| class="wikitable"
! Parametername
! Bedeutung
! Ort
|-
| PAR_SenGeschw_PT1Frequenz
| Filterfrequenz, mit der SenVx_vxRoh_f64 geglättet wird
| Parameter in param_SEN_online.m
|-
| PAR_SenGeschw_ZeitbisStop
| Anzahl der Sampleschritte, in denen verglichen wird ob der Hall-Status sich geändert hat
| Parameter in param_SEN_online.m
|-
| PAR_BsfLaengs_... -P, -I, -DAnteil_f64
| PID-Regler Parameter
| Parameter in param_BSF.m
|-
| PAR_BsfQuer_Filter_DAnteil_f64
| Filter für D-Anteil
| Parameter in param_BSF.m
|}


{| class="wikitable"
! Signalname
! Bedeutung
! Simulinkmodell
|-
| SPEED / SenVx_vxRoh_f64
| Rohwert aus der S-Funktion "bestimmeGeschwindigkeit"
| CCF_online → SEN - Geschwindigkeit → SEN - Geschwindigkeit - Interrupt_Hall-Sensoren
|-
| SenVx_vx_K_f64
| gefilterte Geschwindigkeit
| CCF_online → SEN - Sensoren - online → SenVx - Laengsgeschwindigkeit
|-
| Famo_VxSoll_f64
| Soll-Geschwindigkeit, festgelegt in param_BSF
| CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
|-
| BsfLaengs_RegelDiff_f64
| Differenz zwischen Ist-Geschwindigkeit und Soll-Geschwindigkeit
| CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
|-
| BsfLaengsRegler... -P, -I, -D_f64
| PID-Reglerwerte
| CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
|-
| BsfLaengs_FahrpedalSoll_f64
| Geschwindigkeitswert analog zur Fernbedienung
| CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
|-
| BsfLaengs_FahrpedalSoll_begr_f64
| Begrenzung um unkontrolliertes Fahren zu vermeiden
| CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
|-
| AktRti_PWMGas_Antreiben_f64
| Geschwindigkeitswert umgewandelt in PWM für Motoransteuerung
| CCF_online → AKT - Aktoren - online → AktRtiPwm - PWM4fach-Modul der RTI-Bloecke
|-
| AktRtiPwm_AusgangGas_f64
| begrenzter Geschwindigkeitswert umgewandelt in PWM für Motoransteuerung
| CCF_online → AKT - Aktoren - online → AktRtiPwm - PWM4fach-Modul der RTI-Bloecke
|}


===Konzept zur Bestimmung der Sollgeschwindigkeit===
[[Datei:SenKam-Kamera_offline.JPG|thumb|Abbildung 1: SenKam - Kamera (offline)]]Die Sollgeschwindigkeit des Fahrzeugs wird aus dem Krümmungsradius der Fahrbahn bestimmt, um die Geschwindigkeit in Abhängigkeit der Kurve anzupassen. Die im Online-Modus von der Kamera erfasste Fahrbahn wird mit einer Parabel im Fahrzeug-Koordinatensystem modelliert. Diese ist bestimmt über die drei Koeffizienten a, b und c. Nach der allgemeinen Parabelgleichung ''ax²+bx+c'' beschreibt ''a'' die Krümmung der Kurve und wird im Block ''SenKam - Kamera'' in den Kameraparameter ''a'' geschrieben und als Signal ''SenKam_SpurA_f64'' ausgegeben.


Im Offline-Modus wird der Kameraparameter ''a'' aus der Position und der Richtung des im Einspurmodell simulierten Fahrzeugs berechnet. Die Parameter ''ESM_x_I_f64'' und ''ESM_y_I_f64'' beschreiben die Position des Fahrzeugs. Die Richtung des Fahrzeugs steht im Parameter ''ESM_psi_f64''. Der ''SenKam - Kamera''-Block des Offline-Modells wird in der Abbildung ''SenKam - Kamera (offline)'' dargestellt.
<br>


===Darstellung der Messung Istgeschwindigkeit (Rohwert)===
<br>Die Sollgeschwindigkeit wird im Online-Modell und im Offline-Modell im Baustein "Berechnung V-Soll" ermittelt. Die nachfolgende Abbildung 2 zeigt diesen Baustein, sowieso seine Beschaltung mit Parametern. Die Eingänge des Blocks sind die Kameraparameter ''SenKam_SpurA_f64'' und ''SenKam_SpurB_f64'', die Vorausschauweite ''BsfQuer_Vorausschauweite_f64'' und eine maximal zulässige Querbeschleunigung ''PAR_BsfQuer_a_max''. Innerhalb des Subsystems ''Berechnung V_Soll'' wird zum einen der Kurvenradius der Bahnkurve in Abhängigkeit der Vorausschauweite berechnet. In Kombinatino mit der Querbeschleunigung und dem aktuellen Kurvenradius wird eine Sollgeschwindigkeit ermittelt, welche am Ausgang des Bausteins abgerufen werden kann.
Zur Aufzeichnung der Rohwerte der Istgeschwindigkeit wurden in einer Testfahrt verschiedene Fahrmanöver aufgezeichnet. Die Geschwindigkeit wurde mit dem Layout ''Geschwindigkeit'' in ControlDesk vorgegeben und das Fahrzeug wurde mit der Fernbedienung gelenkt. Die Abbildung ''Gasgeben'' zeigt die Kontrollinstrumente zur Vorgabe der Geschwindigkeit.[[Datei:Gasgeben.JPG|thumb|Gasgeben]] Das manuelle Gasgeben per Slider muss über die gleichnamige Checkbox aktiviert werden. Ist das manuelle Gasgeben aktiviert leuchtet die LED rechts neben der Checkbox grün. Die Geschwindigkeit kann jetzt über den Slider ''PAR_BsfLaengs_GasSollManuell_f64'' eingestellt werden. Das Geschwindigkeitssignal ''SenVx_vx_unfilt_K_f64'' wurde mit der Rekorder-Funktion von ControlDesk aufgezeichnet und unter ''Testfahrt_Istgeschw.mat'' gespeichert. Im Artikel [[Fahrzeugsoftware#Messungen_aufnehmen|Messungen aufnehmen]] ist die Vorgehensweise zum Aufnehmen von Messwerten erläutert.<br\>  
<br>


[[Datei:Implementierung_V_Soll.PNG|thumb|right|400px|Abbildung 2: Implementierung V_Soll]]<br>


Die nebenstehende Abbildung zeigt die Programmierung zur Berechnung des Kurvenradius innerhalb des Subsystems. Die Berechnung liegt folgender Formel zur Berechnung eines Krümmungskreises zur Grunde:
<math>f(x) = \frac{(1+f'x^2)^{3/2}}{f''(x)}</math>




Die nebenstehende Abbildung zeigt die aufgezeichneten Rohdaten der Istgeschwindigkeit.[[Datei:Istgeschw.jpg|thumb|Rohsignal der Istgeschwindigkeit [[:Datei:Plot Rohsignal Istgeschwindigkeit.fig |(Originaldatei)]]]]
Das Kurvenpolynom hat den Grad 2 und lässt sich somit schreiben als:
Nach Stillstand zu Beginn der Messfahrt wurde in 2s auf 4m/s beschleunigt und 4s mit konstanter Geschwindigkeit gefahren. Anschließend wurde noch einmal beschleunigt und nach einer 8s dauernden Fahrt mit einer konstanten Geschwindigkeit von 8m/s wurde das Fahrzeug angehalten. Im Anschluss wurde das Fahrzeug wieder beschleunigt und 9s mit der konstanten Geschwindigkeit 8m/s gefahren bis das Fahrzeug wieder gestoppt wurde. Der letzte Zyklus besteht aus einer Beschleunigung, einer 1s langen Fahrt mit 4m/s und anschließender Verringerung der Geschwindigkeit auf 2,5m/s. Nach 5s folgte eine weitere Beschleunigung auf 8m/s und nach einer 12s dauernden Fahrt mit dieser Geschwindigkeit wurde das Fahrzeug gestoppt und die Testfahrt nach 65s beendet.
<math>f(x) = ax^2+bx+c</math>


===Erstellung eines PT1-Filters===
Die Erstellung eines PT1-Filters war nicht erforderlich, weil der vorhandene PT1-Filter ''PT_1_Eing_f'' des Moduls ''SenVx - Laengsgeschwindigkeit'' genutzt werden kann. Die Eingänge des Filters sind die ungefilterten Rohdaten der Istgeschwindigkeit (SenVx_vx_unfilt_K_f64) und die Filterfrequenz (PAR_SenGeschw_AnteilFrequenz). Der Ausgang ist die gefilterte Istgeschwindigkeit SenVx_vx_K_f64.


===Auswahl einer Filterfrequenz===
Durch das zweimalige differenzieren dieses Polynoms ergeben sich folgende Polynome:
Zur Bestimmung der Filterfrequenz ''PAR_SenGeschw_AnteilFrequenz'' wurde die in Abbildung Testumgebung PT1-Filter Istgeschwindigkeit dargestellte Testumgebung ''Test_PT1_Laengsgeschw.mdl'' im Verzeichnis ''\trunk\Teams\BSF\Analyse Laengsgeschw\Test_PT1_Laengsgeschw'' erstellt.
<math>f'(x) = 2ax+b</math> und <math>f''(x) = 2a </math><br>
[[Datei:Test_PT1_Laengsgeschw.JPG|thumb|Testumgebung PT1-Filter Istgeschwindigkeit  [[:Datei:Test PT1 Laengsgeschw org.mdl|(Originaldatei)]]]]
Die Eingänge der Testumgebung sind die während der Testfahrt aufgezeichneten Geschwindigkeitsdaten und die Filterfrequenz. Der Ausgang, die gefilterten Geschwindigkeitsdaten, werden in einem Scope angezeigt und im Workspace gespeichert.
Das Einlesen der Geschwindigkeitsdaten wurde mit dem ''Signal Builder''-Block realisiert. Hierzu wurden die aufgezeichneten Daten in einer xls-Datei gespeichert und als Signal dem ''Signal Builder''-Block hinzugefügt. Die Spalte der Zeitdaten muss in der ersten Zeile ''Time'' enthalten und in der ersten Zeile der Spalte mit den Geschwindigkeitswerten muss der Name für die Werte in diesem Fall ''Vx'' stehen.<br\>  


Wenn die beiden Ableitungen nun in die vorangegangene Formel zur Berechnung des Krümmungskreises eingesetzt werden, ergibt sich folgende Formel:
<math>f(x) = \frac{(1+(2ax+b)^2)^{3/2}}{2a}</math>
<br>


Die nachfolgende Abbildung 3 zeigt die Programmierung der hergeleiteten Formel in MATLAB/Simulink. Für Es wurde von der Berechnung der Absolutwert gebildet und an den Ausgangsparameter ''r'' weitergeleitet.
[[Datei:Berechnung_Kurvenradius.PNG|thumb|right|200px|Abbildung 3: Berechnung Kurvenradius ]]
<br>
Damit aus dem bestimmten Kurvenradius der Fahrbahn eine Sollgeschwindigkeit ermittelt werden kann, wird sich folgender Formel bedient: <math>V_{Soll} = \sqrt{a_{max} \cdot r}</math> diese Formel bezieht die maximale Querbeschleunigung mit ein ist in der Abbildung "Berechnung Sollgeschwindigkeit" in Simulink programmiert.
<br>
In der nachfolgenden Abbildung 4 ist ein Lookup-Table dargestellt, an welchen eine Konstante angeschlossen ist. Dieser dient dazu, den Sollwert für die Geschwindigkeit zwischen V_Kurve und V_Gerade umzuschalten. Die Konstante kann Werte zwischen Null und Eins annehmen. Die Geschwindigkeit ''V_Kurve'' wird mit diesem Faktor verstärkt und die Geschwindigkeit ''V_Gerade'' wird mit dem 1-Faktor verstärkt. Sollte sich das Fahrzeug also in einer Kurve befinden, so ist der Wert der Konstante bei 1 und die errechnete Sollgeschwindigkeit für die Kurvenfahrt wird an den Ausgang ''V_Soll'' weitergeleitet. Wird hingegen keine Kurve gefahren, so ist die Konstante Null und der feste Wert der Sollgeschwindigkeit für eine Geradeausfahrt wird an den Ausgang übermittelt. Diese Programmierung verhindert das Springen der Sollgeschwindigkeit, sobald aus der Geraden in eine Kurve gelenkt wird, oder andersherum.
[[Datei:Berechnung_Sollgeschwindigkeit.PNG|thumb|right|300px|Abbildung 4: Berechnung Sollgeschwindigkeit]]


===Reglerentwurf===


Siehe Dazu:
[[Auslegung der Reglerparameter]]
<br>


Die nebenstehende Abbildung zeigt das Dialogfenster ''Import File'' zum Hinzufügen des aufgezeichneten Signals zum Signal Builder.[[Datei:Import File.JPG|thumb|Dialog Import File]]
Die Parameter des PID-Reglers sind Stand WiSe2023/24 sehr klein eingestellt, um die langsame Fahrt zu ermöglichen. Bei größeren Regelparametern kommt es bei sehr niedrigen Geschwindigkeiten unter 0.5m/s zum "Stocken" des Motors. Der PID-Regler versucht eine langsame Geschwindigkeit zu fahren, durch die nicht konstante Ist-Geschwindigkeit springt das Gaspedal hin und her. Um dies zu Umgehen, könnten in Zukunft die Werte für den PID-Regler einzeln gefiltert werden, wie es schon beim D-Regler der Fall ist.
Im folgenden werden die Arbeitsschritte zum Hinzufügen eines aufgezeichneten Signals aufgeführt.
#Über die Funktion ''Import File'' werden die Daten der xls-Datei dem Signal Builder hinzugefügt. 
#Über die Schaltfläche ''Browse'' wird die zu importierende xls-Datei ausgewählt.
#Im Feld ''Data to Import'' wird das Signal der xls-Datei ausgewählt.
#Im Drop-Down-Menü ''Placement for Selected Data'' Replace existing dataset auswählen.
#Alle Einstellungen mit einem Klick auf die Schaltfläche ''Confirm Selection'' bestätigen.
#Ein Klick auf ''OK'' lädt die Daten in den Signal Builder.
#Speichern und schließen des Signal Builders.


Die Istgeschwindigkeit wurde mit den Frequenzen
[[Datei:Plot 20231205 BSFLaengs Test PID 02.mat.png|mini|center|800px|Plot der PID-Werte bei Testfahrt mit langsamer Geschwindigkeit]]
*0,1Hz,
<br clear=all>
*0,15Hz,
[[Datei:BSFLaengs Laengsfuehrung.png|thumb|right|200px|Simulinkmodell des PID-Reglers]]
*0,2Hz,
In dem obigen MATLAB Plot ist zu erkennen, dass die Längsregelung maßgeblich durch den I-Anteil geregelt wird. Das Signal "BsfLaengs_FahrpedalSoll_begr_f64" wird an den Aktor weitergegeben. So ist ab Sekunde 550 zu sehen, dass die Begrenzung des Signals eine Geschwindigkeitserhöhung verhindert. <br>
*0,3Hz,
Der P-Anteil des Reglers greift bei Änderungen der Soll-Geschwindigkeit, bei Sekunde 490 (Beschleunigen) oder 565 (Bremsen) zu sehen.
*0,4Hz und
Auffällig ist, dass die Reglerwerte mehrere Sekunden brauchen, um den Zielwert bzw. Soll-Geschwindigkeit zu erreichen.
*0,5Hz
gefiltert.<br\>
Die gefilterten Signale wurden im Workspace gespeichert um sie vergleichen zu können. Die Messdaten und das Matlab-Skript zum Plot der Messungen sind im Verzeichnis ''\trunk\Teams\BSF\Analyse Laengsgeschw'' abgelegt.
[[Datei:Vergleich gefilterte Signale.jpg|thumb|Geschwindigkeitssignal  [[:Datei:Test PT1 Laengsgeschw org.mdl|(Modell)]]]]
In der Abbildung Geschwindigkeitssignal werden im oberen Diagramm die ungefilterten Rohdaten dargestellt.
Das untere Diagramm zeigt die gefilterten Geschwindigkeiten für die oben aufgelisteten Frequenzen.<br\>
Der Vergleich der gefilterten Signale hat ergeben, dass bei einer Filterfrequenz von 0,3Hz eine gute Rauschunterdrückung bei gleichzeitig geringem Delay erzielt wird. Wird eine höhere Frequenz gewählt, verringert sich die Zeitverzögerung, jedoch ist das Rasuchen auf dem gefilterten Signal zu hoch. Geringere Frequenzen weisen eine bessere Rauschunterdrückung auf, haben aber ein zu großes Delay.


==Analyse Gierrate==


===Messung der Istgierrate (Rohwert)===
==Querregelung==
Die Rohdaten der Istgierrate wurden während einer Testfahrt mit dem Fahrzeug aufgenommen. Es wurde zweimal eine Rechtskurve gefolgt von einer Linkskurve gefahren. Mit ControlDesk wurde eine konstante Geschwindigkeit vorgegeben und das Fahrzeug wurde mit der Fernbedienung gelenkt. Die Vorgabe der Geschwindigkeit wird in diesem Artikel unter [[Autonome_Längs-_und_Querregelung#Darstellung_der_Messung_Istgeschwindigkeit_.28Rohwert.29|Darstellung der Messung Istgeschwindigkeit (Rohwert)]]  erklärt. Die Rohdaten der ungefilterten Istgierrate ''SenGier_psip_unfilt_K_f64'' wurden mit dem ControlDesk-Rekorder aufgezeichnet und unter der Datei ''Analyse_Gierrate.mat'' gespeichert. Die Aufzeichnung von Messwerten mit ControlDesk ist im Artikel [[Fahrzeugsoftware#Messungen_aufnehmen|Messungen aufnehmen]] beschrieben.
Für die Querregelung wird verglichen, welche Bahn das Auto fahren würde (Istgröße) und welche Bahn das Auto fahren soll (Sollgröße). Zuerst wird die Bestimmung der Sollgröße beschrieben.
Die aufgezeichneten Daten werden in der Abbildung Rohdaten Gierrate dargestellt.[[Datei:Gierrate_Rohdaten.jpg.jpg|thumb|Rohdaten Gierrate]]
Nach einer 7s dauernden Geradeaus-Fahrt wurde 9s lang die erste Rechtskurve gefahren. Die folgende Linkskurve wurde 5s lang durchfahren. Die Dauer der zweiten Rechtskurve betrug 6s. Die zweite Linkskurve wurden ebenfalls 5s lang befahren.


===Auswahl einer Filterfrequenz===
Bei der Gierrate wurde auf den Ergebnissen der vorangegangenen Semester zurückgegriffen.
Die Filterfrequenz des PT1-Filters für die Gierrate wird in dem Parameter ''PAR_SabGier_FilterF_K_f64'' in der Datei ''param_SAB.m'' definiert. Zur Bestimmung der Filterfrequenz wurde der PT1-Filter der Gierrate in die Testumgebung ''Test_PT1_Gierrat.mdl'' eingebettet. Die Testumgebung ist im Verzeichnis ''\trunk\Teams\BSF\Analyse Gierrate'' abgelegt.<br\>
Siehe Dazu:
Die aufgezeichneten Rohdaten der Istgierrate werden über den ''Signal Builder''-Block in die Testumgebung geladen. Die zu testenden Filterfrequenzen werden über die Konstante ''Filterfrequenz'' eingestellt. Die gefiltere Gierrate wird im Workspace gespeichert und mit einem Scope ausgegeben.<br\>
[[Analyse Gierrate]]
Die Rohdaten wurden mit den folgenden Frequenzen gefiltert:
*0,3Hz, [[Datei:Vergleich gefilterte Signale Gierrate.jpg|thumb|Gierrate]]
*0,4Hz,
*0,5Hz,
*0,7Hz,
*0,8Hz,
*0,9Hz,
*1,0Hz,
*1,1Hz und
*1,2Hz.
Die gefilterten Gierraten sind unter ''\trunk\Teams\BSF\Analyse Gierrate'' abgelegt und werden mit dem Matlab-Skript ''Plot_Messfahrten_Gierrate.m'' zum Vergleichen dargestellt.
In der Abbildung Gierrate werden im oberen Plot die Rohdaten der Istgierrate dargestellt. Das untere Diagramm zeigt die gefilterte Gierrate für die Frequenzen 0,3Hz, 0,4Hz, 0,5Hz, 0,7Hz und 0,8Hz. Dem Diagramm ist zu entnehmen, dass bei einer Filterfrequenz von 0,5Hz eine gute Rauschunterdrückung bei gleichzeitig geringer Zeitverzögerung realisiert wird. Diese Frequenz wurde deshalb als Filterfrequenz ausgewählt. Niedrigere Frequenzen haben ein höheres Delay und bei höheren Frequenzen ist die Rauschunterdrückung geringer.


==Regelung längs==
===Querführungskonzept===
Die Längsregelung des Fahrzeugs erfordert eine exakte Bestimmung der Sollgeschwindigkeit. Aus diesem Grund wird in den folgenden zwei Abschnitten das ''Konzept zur Bestimmung der Sollgeschwindigkeit'' betrachtet.
Die Querführung des Fahrzeuges wird in zwei Bereiche unterteilt. Der erste Aspekt beinhaltet die Bahnplanung, die im Folgenden in ihrer theoretischen Grundlage und der Umsetzung in Simulink dargestellt wird. Die Querregelung wird im Anschluss beschrieben. <br>
[[Datei:ControlDesk Layout BSF Regelung.PNG|thumb|200px|Abbildung 14: Layout BSF_Regelung  [[:Datei:ControlDesk Layout BSF Regelung org.pptx| (Originaldatei)]]]]
Als Grundlage für das Querführungskonzept dient die Sollbahn, die durch das Team ''OSE - Objekt- und Spurerkennung'' aufgrund der Analyse der zu fahrenden Strecke mit Hilfe eines Polynoms zweiten Gerades, das durch die Parameter ''a'', ''b'' und ''c'' eindeutig beschrieben ist, zur Verfügung gestellt wird. ('''''Wichtig:''''' ''trunk/Anforderungsmanagement/Lastenheft/Schnittstellendokumentation.docx'' beachten)<br/>
Da in dieser Anwendung aufgrund der Geometrie des Fahrzeugs ein Vergleich der Soll- und Ist-Bahn nicht sinnvoll ist, muss ein Punkt auf der Bahn in der Vorausschauweite ''x'' prädiziert werden, an dem sich das Fahrzeug bei idealem Lenkwinkel und der aktuellen Geschwindigkeit befinden würde. Der ideale Lenkwinkel kann aber nicht bestimmt werden. Aus diesem Grund muss eine Abschätzung der Querabweichung von der einfachen Geradeausfahrt getroffen werden. Dabei wird der derzeitige Lenkwinkel als Referenz verwendet. Die Regeldifferenz des Querreglers bildet sich somit aus dem Punkt auf der Sollbahn und der prädizierten Positionsabschätzung.<br/>
====Vorausschauweite====
Die '''Vorausschauweite''' ''x'' wird abhängig von der aktuellen Geschwindigkeit des Fahrzeugs berechnet. Dazu wird eine LUT verwendet, ihre Parameter sind in der Parameterdatei ''param_BSF.m'' hinterlegt. Es sind die Werte ''PAR_BSFQuer_LookupVorausschauweite_Vx_f64'' mit aktuell [0 0.5 0.60 2 5] und ''PAR_BSFQuer_LookupVorausschauweite_X_f64'' mit aktuell [0.55 0.55 1 1 3]. '''''Wichtig:''''' Die Kamera mit der nachgeschalteten Bildverarbeitung liefert nämlich nur Ergebnisse für dem Bereich zwischen ''0,52 m'' und ''3,23 m'' vor dem Fahrzeug. Am besten arbeitet das Fahrzeug bei derzeitiger Konfiguration mit ''0,8''. Aus diesem Grund wurde mit der LUT der Wert auf diesen Bereich begrenzt, die Werte unter bzw. über ''0,8'' werden nur bei sehr geringer bzw. sehr hoher Geschwindigkeit angenommen. Es besteht aber noch die Möglichkeit auf einen manuellen Wert umzustellen, dies kann in ''ControlDesk®'' auf dem Layout ''BSF_Regelung'' gemacht werden, vgl. Abbildung ''Layout BSF_Regelung''.


====Sollbahnbestimmung====
Im Folgenden soll die Bestimmung des Punktes auf der Sollbahn beschrieben werden. Die Bahn wird als ein Polynom zweiten Gerades, einer Parabel, approximiert. Die allgemeine Formel lautet: <br>
<math>f(x) = a \cdot x^2 + bx + c \qquad(1)</math><br>


===Konzept zur Bestimmung der Sollgeschwindigkeit===
Die Abbildung 15 ''Schema der Sollbahn'' zeigt die Sollkurve im Fahrzeug-Koordinatensystem. Auch die Lage des Sollpunktes auf der Kurve ist dort qualitativ zu sehen.
[[Datei:SenKam-Kamera_offline.JPG|thumb|SenKam - Kamera (offline)]]<br\>Die Sollgeschwindigkeit des Fahrzeugs wird aus dem Krümmungsradius der Fahrbahn bestimmt. Die im Online-Modus von der Kamera erfasste Fahrbahn wird mit einer Parabel im Fahrzeug-Koordinatensystem modelliert. Diese ist bestimmt über die drei Koeffizienten a, b und c. Nach der allgemeinen Parabelgleichung ''ax²+bx+c'' beschreibt ''a'' die Krümmung der Kurve und wird im Block ''SenKam - Kamera'' in den Kameraparameter ''a'' geschrieben und als Signal ''SenKam_SpurA_f64'' ausgegeben.<br\>
[[Datei:Schema der Sollbahn.PNG|thumb|right|200px|Abbildung 15: Schema der Sollbahn<br/>Quelle: trunk/Dokumentation/Dokumentation_LaTex/Carolo_Doku_2012.pdf]]
Im Offline-Modus wird der Kameraparameter ''a'' aus der Position und der Richtung des im Einspurmodell simulierten Fahrzeugs berechnet. Die Parameter ''ESM_x_I_f64'' und ''ESM_y_I_f64'' beschreiben die Position des Fahrzeugs. Die Richtung des Fahrzeugs steht im Parameter ''ESM_psi_f64''. Der ''SenKam - Kamera''-Block des Offline-Modells wird in der Abbildung ''SenKam - Kamera (offline)'' dargestellt.
Die Bestimmung des prädizierten Punktes des Fahrzeuges auf der Ist-Bahn geschieht unter folgender Annahme: Ist der Lenkwinkel des Fahrzeuges gleich Null, existiert zwischen prädiziertem Ist-Punkt und der aktuellen Ausrichtung des Fahrzeuges keine Querabweichung. Fährt das Fahrzeug nicht exakt geradeaus, befindet es sich auf einer Kreisbahn, die bei stationär statischem Lenkwinkel konstant ist.<br>
<br>
Der Radius dieser Kreisbahn lässt sich aus der stationären Gierrate und der Geschwindigkeit wie folgt bestimmen: <br>
<br>
<math>r=\frac{v_0}{\dot\psi} \qquad(2)</math><br>
Die Abbildung 16 ''Schema der Istbahn'' zeigt die prädizierte Istbahn im Fahrzeug-Koordinatensystem und den Zusammenhang zwischen Querabweichung ''y'' und Vorausschauweite ''x''.
[[Datei:Schema der Istbahn.PNG|thumb|right|200px|Abbildung 16: Schema der Istbahn<br/>Quelle: trunk/Dokumentation/Dokumentation_LaTex/Carolo_Doku_2012.pdf]]<br>
Zur Bestimmung der Querabweichung ''y'' wird der in der Skizze erkenntliche Zusammenhang zwischen dem Kreisradius ''r'' und der Vorausschauweite ''x'' verwendet. Dazu muss jedoch zuvor sichergestellt werden, dass die Vorausschauweite kleiner als der Betrag des erechneten Radius ist. Mit dem ''Satz des Phythagoras'' kann dann ''a'' wie folgt bestimmt werden: <br>
<math>r^2=x^2+a^2\Leftrightarrow a^2=r^2-x^2\Leftrightarrow a=\sqrt{r^2-x^2}\qquad(3)</math><br><br>
Die Querabweichung ''y'' kann aus ''r'' und ''a'' bestimmt werden, sofern ''r'' positiv ist (Linkskurve):<br>
<math>y=r-a \qquad(4)</math> <br><br>
Falls ''r'' negativ ist (Rechtskurve), berechnet sich ''y'' wie folgt:<br>
<math>y=r+a \qquad(5)</math>
<br><br>
Da die Vorausschauweite ''x'' unabhängig vom derzeitigen Kurvenradius ''r'' bestimmt wird, kann der Ausdruck unter der Wurzel in '''(3)''' negativ sein. Weil diese Berechnung unzulässig wäre, wird vorbeugend das Ergebnis der Vorausschauweitenberechnung mit einer Sättigungsfunktion begrenzt, die maximal 80 % des aktuellen Kurvenradius  annimmt. Dieser Wert (80 % = 0.8) kann über den Parameter ''PAR_BSFQuer_VorausschauBegrenzung_f64'' eingestellt werden.<br>
Die Querabweichung der Sollbahn und die Querabweichung der Istbahn, jeweils bezogen auf die aktuelle Ausrichtung des Fahrzeuges, ergeben die Regeldifferenz für den Querregler. Aufgrund der Differenz zwischen Sollbahn und Istbahn bringt dieses Konzept eine bleibende Regelabweichung in der Kurve mit sich. Diese ist nur dann Null, wenn das Fahrzeug sich in der Geradeausfahrt befindet.
 
 
Siehe dazu: [[Querreglung Vorarbeiten]]
 
[[Verhalten in der Rechtskurve|<b> Verhalten in der Rechtskurve, sowie Integrationstest der Querregelung</b>]]<br>
Autor: [[Benutzer: Thomas Miska|<b> Thomas Miska</b>]]


===Reglerentwurf===
Wie auch bei der Längsführung wurde für die Querregelung zur Übersicht ein allgemeiner Regelkreis aufgestellt. Dieser allgemeine Regelkreis ist in der nachfolgenden Abbildung 17 visualisiert.


[[Datei:BSFVx-Bestimmung_Sollgeschwindigkeit.JPG|thumb|BSFVx - Bestimmung Sollgeschwindigkeit]]<br>Die Sollgeschwindigkeit wird im Online-Modell und im Offline-Modell im rechts dargestellten Block ''BSFVx - Bestimmung Sollgeschwindigkeit'' unter ''BSF - Bahnplanung und Spurfuehrung'' bestimmt. Die Eingänge des Blocks sind die Kameraparameter ''SenKam_SpurA_f64'' und ''SenKam_SpurB_f64''. Beide können zu Diagnosezwecken in einem Scope angezeigt werden. ''SenKam_SpurA_f64'' ist der Eingang der Look-Up-Table ''Bestimmung Soll Geschwindigkeit aus Lenkwinkel'', in der die Sollgeschwindigkeit bestimmt wird. Die Parameter ''PAR_Famo_VxSollBSF_f64'' und ''PAR_BSF_KameraAParameterVorgabe_f64'' der LUT werden in der Datei ''param_BSF.m'' definiert. ''PAR_Famo_VxSollBSF_f64'' enthält den Wert 5*[0.1 0.5 0.1] und ''PAR_BSF_KameraAParameterVorgabe_f64'' den Wert [-0.5 0 0.5]. Daraus folgt, dass die maximale Geschwindigkeit bei keiner Krümmung 2,5m/s beträgt und die minimale Geschwindigkeit von 0,5m/s bei einem Krümmungsradius von 0,5 oder -0,5 vorgegeben wird. Das Ausgangssignal ''BsfVx_VxSoll_unfilt_f64'' der LUT wird mit dem nachgeschalteten PT1-Filter ''PT_1_Eing_f'' geglättet. Die geglättete Sollgeschwindigkeit wird über den Ausgang ''BsfVx_VxSoll_f64'' ausgegeben.<br\>
[[Datei:Querfuehrung.jpg|thumb|right|200px|Abbildung 17: allgemeiner Regelkreis Querregler]]<br>
<br>


Die Parameter LW_Soll und LW_Ist beschreiben den gewünschten Lenkwinkel und den momentan erfassten Lenkwinkel.
In den Regelkreis eingehende Störgrößen sind Probleme bei der Übertragung des Stellmotors für den Lenkwinkel.
Eine detaillierte Beschreibung zu dem bisherigen Stand des aggierenden Reglers ist unter [[Querreglung Vorarbeiten]] zu finden.


[[Datei:Test_Bestimmung_Sollgeschw.JPG|thumb|Testumgebung Bestimmung der Sollgeschwindigkeit]]<br>Zur Überprüfung des beschriebenen Konzepts wurde eine Testumgebung für den Block ''BSFVx - Bestimmung Sollgeschwindigkeit'' erstellt. Diese ist in der nebenstehenden Abbildung dargestellt. Der Krümmungsradius wird mit einem Signal Builder simuliert. Die Parameter der LUT und die Filterfrequenz ''PAR_BsfVx_Filter_VxSoll_f64'' von 0,5Hz wurde aus der Datei ''param_BSF.m'' übernommen. Die Sollgeschwindigkeit und der simulierte Krümmungsradius werden zur Diagnose im Workspace gespeichert und mit einem Scope angezeigt. Der Krümmungsradius wird in der Datei ''Spurparam_A.mat'' und die Sollgeschwindigkeit unter ''BsfVx_VxSoll_f64.mat'' gespeichert.
Hier kommt noch ein Bild des Regelkreises aus Simulink rein!
<br>[[Datei:Sollgeschw.jpg|thumb|Ergebnis der Überprüfung des Sollgeschwindigkeitskonzepts]]
<br>
<br>
Das Diagramm in der Abbildung ''Ergebnis der Überprüfung des Sollgeschwindigkeitskonzepts'' zeigt das Ergebnis der Überprüfung.
Das obere Diagramm zeigt den simulierten Krümmungsradius und im unteren Diagramm ist die Sollgeschwindigkeit dargestellt.


Zu Beginn des Tests wird eine Rechtskurve mit einer maximalen Krümmung von -0,5 eine Sekunde lang simuliert. Drei Sekunden später wird eine ebenfalls eine Sekunde dauernde Linkskurve mit einem Krümmungsradius von 0,5 simuliert. Im unteren Diagramm ist für beide Krümmungen zu sehen, wie die Sollgeschwindigkeit bei den maximalen Krümmungen auf die minimale Geschwindigkeit 0,5m/s verringert wird. Hier ist der Grund für den PT1-Filter zu sehen. Wenn der Filter nicht verwendet würde, wäre der Verlauf der Sollgeschwindigkeit nicht geglättet, sonder sprunghaft wie der Verlauf des Krümmungsradius.
In der nachfolgenden Abbildung 18 ist ein Plot dieser Querregelung dargestellt. Es wird oben links die aktuelle Fahrbahn in der Simulation angezeigt. Daneben befindet sich die aktuelle Geschwindigkeit, der Solllenkwinkel und die Gierrate Psi ungefiltert. In den vier Plots in der unteren Reihe befindet sich von links nach rechts der Gierwinkel Psi als Rohwert, allerdings gefiltert. Neben der gefilterten Gierrate ist die eigentliche Regelgröße, also der Lenkwinkel aus dem Einspurmodell in der Einheit Grad/Sekunde dargestellt. Neben diesem Plot befindet sich ein Plot der drei Reglerparameter. Zu Erkennen ist, dass der P-Anteil noch ein leichtes Schwingen hat, was für die Regelung aber nicht weiter kritisch ist. Als letzter Plot unten rechts befindet sich die Querablage des Fahrzeugs.
Im weiteren Verlauf der Simulation werden eine schwächere Rechtskurve und eine Linkskurve simuliert. Die Sollgeschwindigkeit wird bei diesen beiden Kurven verringert. Wenn keine Kurve durchfahren wird (Krümmungsradius = 0) nimmt die Sollgeschwindigkeit den maximale Wert von 2,5 m/s an.


[[Datei:Querregler_Optimiert.png|thumb|right|200px|Abbildung 18: Plot der Querregelung]]<br>


===Offline-Simulation===
Um die Straße in der Simulation darzustellen, wird eine Optimalspur manuell erstellt. Diese wird der Simulation übergeben, welche die Fahrbahnmarkierungen im Plot generiert.<br>
Die Bestimmung des Solllenkwinkels erfolgt in der Offline-Simulation im Block "CCF-offline"-->"SEN-Sensoren-offline"-->"SenKam-Kamera"-->MATLAB-Funktion "parabel_voraus". Da in dieser Simulation die optimale Fahrbahn hinterlegt ist, werden Punkte innerhalb eines zuvor definierten Radius in einem Array abgespeichert. Diese werden anschließend durch eine Drehmatrix vom Weltkoordinatensystem in das Fahrzeugkoordinatensystem umgewandelt.Nachdem die Koordinaten transformiert wurden, werden alle Koordinaten mit negativer X-Koordinate herausgefiltert, sodass lediglich Koordinaten, welche sich vor dem Fahrzeug befinden, berücksichtigt werden.<br>
[[Datei:Darstellung_Koordinatensysteme.png|thumb|right|200px|Abbildung 19: Koordinatensysteme in der Simulation]]<br>
Abschließend wird ein Lineares Gleichungssystem erstellt. Hierzu werden die X Werte in eine Matrix eingebunden. So werden für jeden Punkt eine Spalte in der Form (quadrierter X-Wert, X-Wert, 1) angelegt. Die Y-Koordinaten werden in einem Spalten-Vektor hinterlegt. Um die Parameter "a", "b", "c" ermitteln, wird dieses Gleichungssystem gelöst und an die folgenden Funktionen übergeben. <br>
Diese ermittelten Parameter beschreiben die Fahrbahn bis zur Sichtweite exakt. Hiermit kann nun unter Zuhilfenahme des derzeitigen Lenkwinkels die voraussichtliche Abweichung in Vorausschauweite ermittelt werden und der Lenkwinkel angepasst werden kann. <br> <br> Die derzeitige Berechnung führt zu einem Fehlverhalten in Linkskurven. Der Ursprung dieses Fehlers konnte derzeit nicht definiert werden. Mögliche Ursachen hierfür kann ein fehlerbehaftetes Einspurmodell oder eine fehlerhafte Berechnung aufgrund von Vorzeichenwechsel sein. Dies muss im Folgenden ausführlich überprüft werden, sodass diese Herausforderung gemeistert werden kann. <br> <br>




Das die Stopplinienerkennung und das Verhalten an Stopplinien wurde aufgrund der Ausführlichkeit der Artikel in die zwei folgenden Artikel verschoben:


Dieses Simulationsergebnis konnte mit einer Offline-Simulation im BSF-Modus bestätigt werden. Im Anschluss an die Offline-Simulation wurden die in der Abbildung ''Ergebnis der Offline-Simulation'' dargestellten Diagramme zur Analyse der Simulation ausgegeben.[[Datei:Plot_nach_Offline_Sim.jpg|thumb|Ergebnis der Offline-Simulation]]
[[SenKam - Stopplinienerkennung|<b> SenKam - Stopplinienerkennung</b>]]<br>


Das obere Diagramm zeigt die gefahrene Strecke auf dem Oval in rot. In der Mitte wird der Krümmungsradius der Farhbahn dargestellt. Zuerst wird die erste Linkskurve mit einer Krümmung von 0,05 durchfahren.  Während der zweiten Linkskurve beträgt die Krümmung ebenfalls 0,05. Auf den Geraden ist der Krümmungsradius wieder 0.<br\>
[[Stopplinien-Verhalten|<b> Stopplinien-Verhalten</b>]]<br>
Im unteren Diagramm ist die Sollgeschwindigkeit über der Zeit aufgetragen. Dieses zeigt, dass während der Kurven die Sollgeschwindigkeit auf 2,3m/s verringert wird und auf den Geraden die maximale Sollgeschwindigkeit von 2,5m/s vorgegeben wird.<br\>
Die Überprüfung im offline-Modus hat ergeben, dass das vorhandene Konzept zur Bestimmung der Sollgeschwindigkeit verwendet werden kann. Die Anwendung im Online-Modell bestätigt dieses.
<br><br><br><br>
====Konzept zur Bestimmung der Sollgeschwindigkeit in Simulink umsetzen====
Das aktuell in Simulink umgesetzte Konzept kann laut den Ergebnissen der Überprüfung verwendet werden.<br\>
<br><br>
<br><br>


===Reglerentwurf===
=== Test ===


Für den Längsregler wurde ein separates Simulink-Modell angelegt, damit der Regler besser veranschaulicht werden kann. Der Regler besitzt einen P-, I- und D-Anteil.
[[BSF - Bahn- und Spurführung: Test der Längsregelung in Simulation und im Fahrzeug]]
[[Datei:Laengsfuehrung Testumgebung.PNG|1200 px|center]]
Für die Untersuchung der Regler-Parameter wurde ein Einheitssprung verwendet. Es wurden dabei folgende Feststellungen gemacht.
* Der P-Anteil ist für die Größe des "Einheitssprungs" verantwortlich. Mit größerem P-Anteil stellt sich außerdem ein zunehmendes Überschwingen ein.
* Mit dem I-Anteil wird die Stellgröße und der P-Anteil geglättet, jedoch ist für eine glatte Stellgröße ein sehr hoher I-Anteil erforderlich (größer als 150).
* Durch den D-Anteil kann der negative Ausschlag zu Beginn verringert werden. Mit größerem D-Anteil nimmt die Schwingung der Stellgröße zu.


Die Auswirkungen der Parameter wurden in einer Testreihe untersucht. Die Plots sind im [http://193.175.248.52/usvn/svn/MTR_SDE_Praktikum/trunk/Teams/BSF/Reglerentwurf SVN] zu finden.<br>
Wenn nur ein D-Anteil vorhanden ist, ist die Stellgröße nicht konstant. Im Test wurden für den D-Anteil die Werte [5 15 50] verwendet und der Wert 15 gewählt, weil die Totzeit am geringsten ist. Für größere Werte nimmt sie nicht weiter ab.
Im Test des I-Anteils wurde mit verschiedenen Werten experimentiert, eine konstante Stellgröße wurde erst ab einem Wert von 170 erreicht. Bei kleineren Werten konnte im Plot der Stellgröße noch eine Schwingung wahrgenommen werden.
Sobald der D-Anteil hinzukommt, geht die kostante Stellgröße verloren, jedoch wird der negative Ausschlag verringert. Allerdings kann auch mit einem sehr hohen I-Anteil von 500 die Stellgröße nicht geglättet werden.


<br>'''Update Juni 2014'''<br>
=== Querregelung WS 21/22 ===
Nachdem eine Messung des Geschwindigkeitssignals am Fahrzeug vorgenommen und das System angepasst wurde, wurden folgende Parameter festgelegt:
Um den Zustand der Querregelung zu ermitteln, wurde im Wintersemester 21/22 ein [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Testdokumente/Integrationstests Integrationstest] durchgeführt. Dieser wurde auf das [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug Online-Modell] angewendet. Durch Hinzufügen der Spurparameter im [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/dSPACE/Carolo%20Cup%20Fahrzeug Inbetriebnahme-ControlDesk-Experiment] können die Spurparameter zum Testen angepasst werden.
* P-Anteil: 3
* I-Anteil: 1
* D-Anteil: 0
* Windup-Faktor: 10


====Wind-Up====
Die Look-Up-Tabelle im Online-Model dient dazu die Reglerausgangsgröße in ein PWM-Signal für den Steuermotor der Lenkung zu übersetzen. Diese Tabelle wurde an den aktuell verbauten Motor angepasst.


[[Datei:WindUp-Problematik.png|thumb|200px|Windup-Problematik: Vergleich Soll- und Istgröße und Reglerparameter]]Die Stellgröße für das Gaspedal ist gemäß Anforderung auf das Intervall [-1 1] begrenzt. Aus diesem Grund ist im Simulink-Modell ein entsprechender Begrenzungsblock eingefügt, der den Wert des Regler-Ausgangs von -1 bis 1 begrenzt. Bei PI-Reglern mit einer derartigen Begrenzung tritt der Wind-Up-Effekt auf. Prof. Dr.-Ing. Frank Allgöwer beschreibt diesen folgendermaßen:
Die Querregelung hat zwei wesentliche Eingangsgrößen: Die Spurparameter A, B und C und die Gierrate aus der mit der Geschwindigkeit die Querbalge berechnet wird. Die Spurparameter werden auf dem PC ermittelt und über RS232 an die dSpace-Karte übermittelt. Diese wurden bisher durch einen Tiefpassfilter im Online-Modell gefiltert. Da bei einer Übertragung von NaN der Filter aussteigt, wurde dieser entfernt, um immer ein Signal zu übertragen. Um die Spurparameter besser Auswerten zu können, werde diese jetzt grafisch in dem Inbetriebnahme-Experiment dargestellt.


<blockquote>Bei einem Regler mit I-Anteil wird z.B. der so entstehende zusätzliche Regelfehler aufintegriert. Es folgt ein starkes Überschwingen, das bis zur Instabilität führen kann.<ref>Allgöwer, Prof. Dr.-Ing. Frank: ''Vorlesung Regelungstechnik II''. Institut für Systemtheorie technischer Prozesse, Universität Stuttgart. S. 1. [http://www.ist.uni-stuttgart.de/education/courses/RTII/download/awindup.pdf (Link)] (Abruf: 14.05.2014)</ref></blockquote>
Die Gierrate liefert keine zuverlässigen Werte. Eine Analyse des Problems konnte den Fehler auf die PCI-Kommunikation zwischen der dSpace-Karte und dem PC eingrenzen. Eine Fehlerbeschreibung findet sich unter: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Dokumentation/Fahrzeug/dSpace-PCI_Kommunikation.docx
   


Im vorliegenden Modell wurde in der genannten separaten Simulations-Umgebung ein hoher Sprung als Sollgröße simuliert, vergleichlich Abbildung ''Windup-Problematik: Vergleich Soll- und Istgröße und Reglerparameter'' im Diagramm oben links. Das Aufintegrieren des I-Anteils kann dabei sehr gut beobachtet werden (''Diagramm unten rechts in der Abbildung''). Die Reaktion auf ein entsprechend niedrigeres Signal erfolgt dabei mit einer gewissen Totzeit, da der hohe I-Anteil erst abgebaut werden muss. Dieses ist im Plot der Ist-Geschwindigkeit (''mitte links in der Abbildung'') zu sehen.
Informationen zum Verbauten Gyrosensor findet man im Artikel [[Gyrosensor (LPR510AL)]]


Die Lösung dieser Problematik wird im Allgemeinen mit einer '''Anti-Windup-Strategie''' erreicht, die erstmalig akitv wird, wenn Sättigung auftritt, also wenn der Regler-Ausgang größer ist als die begrenzte Stellgröße.<ref>vgl. Ortseifen, Andreas: ''Entwurf von modellbasierten Anti-Windup-Methoden für Systeme mit Stellbegrenzungen''. S. 28. [http://tuprints.ulb.tu-darmstadt.de/3748/1/Andreas_Ortseifen_Entwurf_von_Anti-Windup-Methoden.pdf (Link)] (Abruf: 14.05.2014)</ref>
==Ergebnis/ Zusammenfassung==
[[Datei:Anti-Windup-Architektur.png|thumb|150px|Allgemeine Anti-Windup-Strategie]]
'''Winter 2022/23'''
[[Datei:Anti-Windup.png|thumb|200px|Anti-Windup: Vergleich Soll- und Istgröße und Reglerparameter]]
* Überprüfen Sie die Ist-Geschwindigkeit des Fahrzeugs.
[[Datei:Anti-Windup-Architektur ohne Text.png|500 px|center]]
* Die PID-Regelung wird schließlich auf P:4, I:2 und D:0,1 eingestellt.
<br>
* Bei niedrigen Geschwindigkeiten kann das Fahrzeug noch nicht so gut fahren.
Wie in der Abbildung erkenntlich, wird dazu einfach der Wert am Ausgang des Reglers um den Wert nach der Begrenzung verringert. Die Abbildung ''Allgemeine Anti-Windup-Strategie'' zeigt auch den entsprechenden Beschreibungstext aus der Bildquelle. Ist die Differenz null, sind die Werte gleich groß und das Anti-Windup ist nicht aktiv. Stellt sich eine Differenz ein, wird über einen Verstärkerbaustein der Parameter für den I-Anteil um den entsprechenden Wert verringert. Als Faktor wurde der Wert „eins“ gewählt. Für das oben genannte Simulations-Beispiel konnte der Effekt der Anti-Windup-Strategie nachgewiesen werden. Es ist dabei besonders die geringere Totzeit im Plot der ''Ist-Geschwindigkeit'' und die schnelle Abnahme des ''I-Anteils'' zu beobachten.
<br><br>


==Regelung quer==
'''Winter 2021/22'''
Zuerst wird die Bestimmung der Sollgröße beschrieben.
* Integrationstests der Querregelung geprüft und angepasst
===Querführungskonzept===
* Filter des Spurpolynoms in Online-Modell entfernt
Die Querführung des Fahrzeuges wird in zwei Bereiche unterteilt. Der erste Aspekt beinhaltet die Bahnplanung, die im folgenden in ihrer theoretischen Grundlage und der Umsetzung in Simulink dargestellt wird. Die Querregelung ist wird im Anschluss beschrieben. <br>
* Look-Up Tabelle für den Lenkwinkel angepasst
Als Grundlage für das Querführungskonzept dient die Sollbahn, die durch das Team ''OSE - Objekt- und Spurerkennung'' aufgrund der Analyse der zu fahrenden Strecke mit Hilfe eines Polynoms zweiten Gerades, das durch die Parameter ''a'', ''b'' und ''c'' eindeutig beschrieben ist, zur Verfügung gestellt wird. Da in dieser Anwendung aufgrund der Geometrie des Fahrzeugs ein Vergleich der Soll- und Ist-Bahn nicht sinnvoll ist, muss ein Punkt auf der Bahn in der Vorrausschauweite ''x'' prädiziert werden, an dem sich das Fahrzeug bei idealem Lenkwinkel und der aktuellen Geschwindigkeit befinden würde. Der ideale Lenkwinkel kann aber nicht bestimmt werden. Aus diesem Grund muss eine Abschätzung der Querabweichung von der einfachen Geradeausfahrt getroffen werden. Dabei wird der derzeitige Lenkwinkel als Referenz verwendet. Die Regeldifferenz des Querreglers bildet sich somit aus dem Punkt auf der Sollbahn und der prädizierten Positionsabschätzung. Die Vorrausschauweite ''x'' wird abhängig von der aktuellen Geschwindigkeit des Fahrzeugs berechnet. Der dazu verwendete Umrechnungsfaktor kann in der Parameterdatei ''param_BSF.m'' über den Parameter ''PAR_BSFQuer_GainVorausschauweite_f64'' eingestellt werden, der aktuelle Wert ist 0.2.
* Gyroskop und angrenzende Signalkette auf Funktion und Konsistenz überprüft
* Analog-Ports der DS1104 auf Fehler geprüft
* Treiber des Motherboards aktualisiert
* Darstellung des Spurpolynoms in ControlDesk


====Sollbahnbestimmung====
'''Winter 2019/20'''
Im Folgenden soll die Bestimmung des Punktes auf der Sollbahn beschrieben werden. Die Bahn wird als ein Polynom zweiten Gerades, einer Parabel, approximiert. Die allgemeine Formel lautet: <br>
* Rechtskurvenfahrt offline korrigiert, fehlerfreie Kurvenfahrt in der Offline-Simulation möglich
<math>y = a \cdot x^2 + bx + c \qquad(1)</math><br>
* Integrationstest zur Verarbeitung von Bahnspurpolynom zu Längs- und Querregelung in der Offline-Simulation erstellt und durchführen lassen (Prüfer: David Reger)
Die Abbildung ''Schema der Sollbahn'' zeigt die Sollkurve im Fahrzeug-Koordinatensystem. Auch die Lage des Sollpunktes auf der Kurve ist dort qualitativ zu sehen.
* Integrationstest zur Verarbeitung von Bahnspurpolynom zu Längs- und Querregelung auf dem Online-Modell konzipiert
[[Datei:Schema der Sollbahn.PNG|500 px|center]]
* Aktualisierung der Wiki-Artikel bezüglich Bahn- und Spurführung
Die Bestimmung des prädizierten Punktes des Fahrzeuges auf der Ist-Bahn geschieht unter folgender Annahme: Ist der Lenkwinkel des Fahrzeuges gleich Null, existiert zwischen prädiziertem Ist-Punkt und der aktuellen Ausrichtung des Fahrzeuges keine Querabweichung. Fährt das Fahrzeug nicht exakt geradeaus, befindet es sich auf einer Kreisbahn, die bei stationär statischem Lenkwinkel konstant ist.<br>
* Ausarbeitung der Offline-Stopplinienerkennung (inklusive CodeReview)
Der Radius dieser Kreisbahn lässt sich aus der stationären Gierrate und der Geschwindigkeit wie folgt bestimmen: <br>
<math>r=\frac{v_0}{\dot\psi} \qquad(2)</math><br>
Die Abbildung ''Schema der Istbahn'' zeigt die prädizierte Istbahn im Fahrzeug-Koordinatensystem und den Zusammenhang zwischen Querabweichung ''y'' und Vorrausschauweite ''x''.
[[Datei:Schema der Istbahn.PNG|500 px|center]]<br>
Zur Bestimmung der Querabweichung ''y'' wird der in der Skizze erkenntliche Zusammenhang zwischen dem Kreisradius ''r'' und der Vorausschauweite ''x'' verwendet. Mit dem ''Satz des Phythagoras'' kann ''a'' wie folgt bestimmt werden: <br>
<math>r^2=x^2+a^2\Leftrightarrow a^2=r^2-x^2\Leftrightarrow a=\sqrt{r^2-x^2}\qquad(3)</math><br><br>
Die Querabweichung ''y'' kann aus ''r'' und ''a'' bestimmt werden:<br>
<math>y=r-a \qquad(4)</math>
<br><br>
Da die Vorrausschauweite ''x'' unabhängig vom derzeitigen Kurvenradius ''r'' bestimmt wird, kann der Ausdruck unter der Wurzel in '''(3)''' negativ sein. Weil diese Berechnung unzulässig wäre, wird vorbeugend das Ergebnis der Vorrausschauweitenberechnung mit einer Sättigungsfunktion begrenzt, die maximal 80 % des aktuellen Kurvenradius  annimmt. Dieser Wert (80 % = 0.8) kann über den Parameter ''PAR_BSFQuer_VorrausschauBegrenzung_f64'' eingestellt werden.<br>
Die Querabweichung der Sollbahn und die Querabweichung der Istbahn, jeweils bezogen auf die aktuelle Ausrichtung des Fahrzeuges, ergeben die Regeldifferenz für den Querregler. Aufgrund der Differenz zwischen Sollbahn und Istbahn bringt dieses Konzept eine bleibende Regelabweichung in der Kurve mit sich. Diese ist nur dann Null, wenn das Fahrzeug sich in der Geradeausfahrt befindet.


====Status Quo====
'''Sommer 2019'''
In dem oben beschriebenen Konzept wird zur Bestimmung der Istbahn die Gierrate benötigt. Gemäß der Vorarbeit früherer Teams ist das Signal des Gyro-Sensors derzeit nicht verwendbar. Alternativ wurde daher ein neuer Ansatz zur Bestimmung der Regeldifferenz gewählt. Dabei wird angenommen, dass ohne Stellgrößenberechnung des Reglers das Fahrzeug auf einer Geraden fährt. Dadurch ergibt sich die Vereinfachung dahingehend, dass die prädizierte Istbahn des Fahrzeugs und die aktuelle Ausrichtung identisch sind, also dazwischen keine Querabweichung vorliegt. Als Regeldifferenz ergibt sich somit die Querabweichung der Sollbahn von der aktuellen Ausrichtung des Fahrzeugs.
* Fehler bei der Rechtskurvenfahrt erkannt, Ursprung scheint Gierraten-Errechnung zu sein (noch nicht behoben)
* PID-Regler wurde durch Nullsetzung von Parametern auf einen P-Regler reduziert
* Stopplinienerkennung wurde teilintegriert (Stopp an Haltelinie, Verlangsamung bei Näherung)
* Erstellung einer Testumgebung für den Stopplinientest (Fahrbahn Nr. 3)
'''Sommer 2018'''
* In der Simulation ist die richtige Funktion der Querregelung zu erkennen
* ein Einschwingen des Reglers ist in der Simulation kein Problem in Hinsicht auf das Einhalten der SOLL-Bahn
* Simulink Modelle sind optimiert - Einstellungen des P-,I- und D- Anteils sind ausschließlich in den Parametern vorzunehmen und nicht im Modell selbst
* Längsregelung ist zur Zeit noch inaktiv und ist stattdessen durch eine konstante Geschwindigkeit ersetzt
* Längsregelung ist jedoch in der Simulation funktionsfähig, so wird die Geschwindigkeit in Kurvenfahrten reduziert und auf geraden Strecken wieder erhöht
* Tests auf der Fahrbahn konnten mit dem aktuellen Stand im Sommersemester '18 noch nicht durchgeführt werden
<br>


===Einspurmodell===
==Ausblick==
Für die effikitve Nutzung des Offline-Modells in der Simulation ist eine Anpassung des Einspurmodells (ESM) an das Fahrzeug notwendig, damit das Modell der Realität so nah wie möglich kommt. Dazu müssen die einzelnen Parameter des Modells entsprechend bestimmt werden. Die aktuellen Werte sind in den Parameterdateien ''param_ESM_offline.m'' und ''param_CAR.m'' hinterlegt und werden somit vom Modell verwendet.
'''Winter 2022/23'''
* Das Rückwärtsfahren muss noch Optimierung gemacht werden.
* Die Reaktion von der Änderung der Geschwindigkeit soll schnell machen.
* Das Autonome Fahren sollten in das Test-Programm aufgenommen werden.


====Größen des Einspurmodells====
'''Winter 2021/22'''
Im Folgenden sollen die Parameter des Modells kurz vorgestellt werden.
* Simulink-Filter der Spurparameter liefert keine Ausgabewerte, Notwendigkeit eines Filters muss am Online-Modell getestet werden
*Radstand des Fahrzeugs, wird im ESM mit ''l'' bezeichnet
* Analoge Gyro-Sensor Werte sind ab der seriellen Schnittstelle fehlerhaft, derzeitige Vermutung liegt auf Versionsunterschieden der PCI Schnittstelle von PC und dSpace-Karte, konnte aber noch nicht bestätigt werden
*Abstand des Schwerpunktes des Fahrzeuges von dem vordersten Punkt ''l<sub>v</sub>''
* Alternativen zur Überbrückung der Kommunikationsprobleme zwischen dSpace-Karte und PC müssen ermittelt werden (Anderer Mikrocontroller, anderer PC, ...)
*Abstand des Schwerpunktes des Fahrzeuges von dem hintersten Punkt ''l<sub>h</sub>''
*Masse des Fahrzeugs ''m''
*Massenträgheitsmoment um die Z-Achse des fahrzeugfesten Koordinatensystems ''J''
*Steifigkeit der Vorderachse ''c<sub>v</sub>''
*Steifigkeit der Hinterachse ''c<sub>h</sub>''


====Bestimmung der Parameter====
'''Winter 2019/20'''
Nun wird für die einzelnen Parameter die Bestimmung der jeweiligen Größen vorgestellt.<br>
* Die Stopplinienerkennung weist derzeit diverse Ausnahmefälle auf, diese müssen abgedeckt werden, oder ein neuer Ansatz zur Stopplinienerkennung entwickelt werden
'''Radstand ''l'''''<br>
* Das Verhalten für dynamische und statische Objekte in der Offline-Simulation muss überprüft und überarbeitet werden, da in jedem Fall Objekte überholt werden, ungeachtet der Situation auf der Gegenfahrbahn.
Der Radstand lässt sich durch eine Messung mit einem Messschieber bestimmen. Es ist dabei der Abstand vom vorderen zum hinteren Achsenmittelpunkt zu messen. Für das Einspurmodell ist die Gesamtlänge, also inklusive der vorderen und hinteren Überhänge, nicht von Bedeutung.<br>
* Die Ermittlung des Bahnspurpolynoms in der Offline-Simulation muss überprüft werden, da derzeit bei der berechnung auch vertikal zur Fahrtrichtung liegende Fahrbahnen mit eingerechnet werden und ein Fehlverhalten des Fahrzeugs verursacht.
'''Abstand des Schwerpunktes des Fahrzeuges von den äußeren Punkten ''l<sub>v</sub>'' und ''l<sub>h</sub>'''''<br>
* Das Verhalten für dynamische und statische Objekte in der Online-Simulation kann nach Inbetriebnahme eines LiDARs und der Verarbeitung der Messdaten konzipiert und implementier werden.
Zur Bestimmung der Abstände wird das Fahrzeug an den beiden Achsen mit zwei Waagen gewogen. Aus dem Verhältnis der bestimmten Maßen lässt sich die Lage des Schwerpunktes in Längsrichtung des Fahrzeugs bestimmen.<br>
'''Masse des Fahrzeugs ''m'''''<br>
Die Gesamtmasse ergibt sich aus der Summe der zwei zuvor bestimmten Teilmassen.<br>
'''Massenträgheitsmoment um die Z-Achse ''J<sub>z</sub>'''''<br>
Das Massenträgheitsmoment um die Z-Achse ''J<sub>z</sub>'' wird bestimmt unter der Annahme, dass das Fahrzeug geometrisch einem Quader ähnelt.<br>
Für die Bestimmung der Steifigkeiten und die Feinjustierung des Modells wird das Fahrzeug, das die Regelstrecke darstellt, mit einer Sprungantwort für einen Sprung des Lenkwinkels analysiert. Dazu wird die Gierrate des Fahrzeugs während des Sprungsignals gemessen. Das ESM lässt sich anhand dieser Messdaten parametrisieren, indem das Übertragungsverhalten des Fahrzeugs den vom Modell errechneten Daten vergleichend gegenübergestellt wird.


===Reglerentwurf===
<br>
Die Querregelung ist mit einem PID-Regler umgesetzt, der dem Regler der Längsregelung weitgehend entspricht. Die Regelparameter können ebenfalls in der Parameterdatei ''param_BSF.m'' über die Parameter ''PAR_BsfQuer_PAnteil_f64'', ''PAR_BsfQuer_IAnteil_f64'' und ''PAR_BsfQuer_DAnteil_f64'' eingestellt werden. Die Parametrisierung im Simulations-Modell kann erst nach der Parametrisierung des Einspurmodells erfolgen. Die Stellgröße für den Soll-Lenkwinkel wird durch eine Sättigungsfunktion auf den maximalen Lenkwinkel des Fahrzeugs begrenzt. Die Grenzen können ebenfalls in der Parameterdatei ''param_BSF.m'' als Parameter ''PAR_BsfQuer_max_Lw_f64'' und ''PAR_BsfQuer_min_Lw_f64'' festgelegt werden.
'''Sommer 2019'''
* Die implementierten Funktionen zu Haltelinien und das angepasste Spurverhalten müssen durch weitere Personen überprüft werden.
* Das Spurverhalten in Linkskurven sollte korrigiert werden. Hierfür muss von einem Team analysiert werden, wodurch dieses Fehlverhalten hervorgerufen wird.
* Das Stopplinienverhalten besitzt zurzeit keine Wiederanfahrt oder eine Messung der Haltezeit. Diese Funktionen können im Folgesemester implementiert werden.
<br>
'''Winter 2018/19'''
* Die Bestimmung der Ist-Geschwindigkeit könnte durch ein PT1 Glied, was das reale Verhalten des Autos wiederspiegelt modelliert werden. Dies würde eine noch höhere Modellgenauigkeit mit sich bringen.
* Es wurde eine Anpassung der Längsführung in verschiedenen Fahrsituationen. So wird nun die Geschwindigkeit auf einem Rundkurs mit Hindernissen in der Simulation bei einem erkannten Hindernis angepasst. Das Fahrzeug passt nun seine Geschwindigkeit der eingestellten Vorgabe bei einem erkannten Hindernis bis zum Ausschervorgang an, dieses Verhalten kann bei einer Fahrt mit dynamischen Hindernisssen genutzt und erweitert werden um ...
** '''1.''' ... vor dem Überholvorgang zu überprüfen ob die Gegenspur einen Überholvorgang zulässt.
** '''2.''' ... nach dem Ausscheren zu überprüfen ob ein Überholvorgang möglich ist.
<br/>
'''Sommer 2018'''<br/>
* Bisher konnten die Regler nur in der Simulation getestet werden, im kommenden Wintersemester wird ein Test auf der Fahrbahn erfolgen, sodass verfiziert werden kann, dass die in der Simulation gewählten Reglerparameter sich auch in der Praxis bewähren. Sollte sich heraussstellen das eine Nachoptimierung erforderlich ist, so wird dies auch im kommenden Wintersemester erfolgen.


===Hindernisumfahrung===
* Das neu eingebaute Konzept zur Bestimmung der Sollgeschwindigkeit wird im kommenden Wintersemester auf der Fahrbahn erprobt. In der Simulation erwies sich die Berechnung anhand der Kameraparameter als sehr vielversprechend. Das Finetuning dieser Berechnung erfolgt ebenfalls im kommenden Wintersemester.
 
<br>
==Ausblick==
'''Sommer 2017'''
* Feinjustierung der Parameter der Längsregelung am Fahrzeug
* Feinjustierung der Parameter der Längsregelung am Fahrzeug
* Nach der Parametrisierung des Einspurmodells Querregler im Simulations-Modell auslegen
* Nach der Parametrisierung des Einspurmodells Querregler im Simulations-Modell auslegen
* Wenn Auslegung Querregler in Simulation erfolgreich, dann Feinjustierung am Fahrzeug
* Wenn Auslegung Querregler in Simulation erfolgreich, dann Feinjustierung am Fahrzeug
* Regler-Verhalten im Übergabe-Moment nach Nutzung der Fernbedienung
* Messung der Gierrate mit neuem Gierraten-Sensor
* Messung der Gierrate mit neuem Gierraten-Sensor
* Auslegung des ESM durch Justierung der Größen ''J'', ''c<sub>v</sub>'' und ''c<sub>h</sub>''
* Auslegung des ESM durch Justierung der Größen ''J'', ''c<sub>v</sub>'' und ''c<sub>h</sub>''
* Konzept für Hindernisumfahrung
* Implementierung des Konzepts für Hindernisumfahrung in der Online-Simulation
<br/><br>
'''Winter 2017'''<br/>
* Reglerparameter für Querregelung anpassen, sodass Regler schneller reagiert (enge Kurven, Hindernisse), dann Fahrgeschwindigkeit erhöhen
* Vorausschauweite lässt sich evtl. noch verbessern
* evtl. Sonderregelung für Querreglung bei erkannter Stopplinie: für eine feste Streckenlänge geradeaus fahren; dadurch lassen sich die Lücken auf der Kreuzung einfach kompensieren; ''Absprache mit Kamera-Team/Bildverarbeitung notwendig''
* Implementierung des Konzepts zum Anhalten an Stopplinien
* in Hindernisumfahrung eigene Signalaufbereitung entfernen, Objektliste aus Signalaufbereitung verwenden, vgl. [[AuF - Antrieb und Fernbedienung#Filterung der Objektliste|Vorarbeit]]
* Hindernisumfahrung in Simulation anpassen, dann auf AMR testen
* Kalman-Filter für Streckenverlauf, vgl. [[OSE - Objekt - und Spurerkennung#Kalman Filter|Vorarbeit]]; ''Absprache mit Kamera-Team/Bildverarbeitung notwendig''
<br/><br>
 
==Weitere Artikel zum Längsregelung und Querregelung==
Sommersemester 20
 
* [[BSF - Längsregelung | BSF - Längsregelung]] von [[Benutzer:Alessio Cebeci|Alessio Cebeci]]
 
* [[BSF - Statische Hindernisse | BSF - Statische Hindernisse]] von [[Benutzer:Alessio Cebeci|Alessio Cebeci]]
 
* [[BSF - Anforderungen an die Längsregelung | BSF - Anforderungen an die Längsregelung]] von [[Benutzer:Alessio Cebeci|Alessio Cebeci]]
 
* [[BSF-Querreglung | BSF-Querreglung]] von [[Benutzer:Daoyin Wang|Daoyin Wang]]
 
* [[BSF-Optimierung der Hindernisumfahrung | BSF-Optimierung der Hindernisumfahrung]] von [[Benutzer:Daoyin Wang|Daoyin Wang]]
 
 
Wintersemester 20/21
 
* [[BSF - Längsregelung und Querregelung]] von [[Benutzer:Alessio Cebeci|Alessio Cebeci]], [[Benutzer:Daoyin Wang|Daoyin Wang]]


==Einzelnachweise==
==Einzelnachweise==
<references />
<references />


Autor: [[Benutzer:Nils Brunnert|Nils Brunnert]] ([[Benutzer Diskussion:Nils Brunnert|Diskussion]]) 13:02, 6. Feb. 2014 (CET)
Autor: [[Benutzer:Nils Brunnert|Nils Brunnert]]
<br>''Überarbeitet:'' [[Benutzer:Daniel Block|Daniel Block]] und [[Benutzer:Torben Petersen|Torben Petersen]] im Sommersemester 2014
<br>''Überarbeitet:'' [[Benutzer:Daniel Block|Daniel Block]] und [[Benutzer:Torben Petersen|Torben Petersen]] im Sommersemester 2014 und Wintersemester 2014/2015
 
<br>''Überarbeitet:'' [[Benutzer:Marcus_Irmer|Marcus Irmer]] und [[Benutzer:Robin_Kirsch|Robin Kirsch]] im Sommersemester 2016 und Wintersemester 2016/2017
== Verbesserungsvorschläge zum Artikel ==
<br>''Überarbeitet:'' [[Benutzer:Benedikt_Wulowitsch|Benedikt Wulowitsch]] und [[Benutzer:Leonard Herbstmann|Leonard Herbstmann]] im Sommersemester 2018 und Wintersemester 2018/19
--[[Benutzer:Ulrich Schneider|Ulrich Schneider]] ([[Benutzer Diskussion:Ulrich Schneider|Diskussion]]) 13:38, 4. Feb. 2014 (CET)
<br>''Überarbeitet:'' [[Benutzer:Marcel_Broeckelmann|Marcel Bröckelmann]] im Sommersemester 2019
* Autorenseite und Link zum Autor fehlt
<br>''Überarbeitet:'' [[Benutzer:Thomas Miska|Thomas Miska]] im Wintersemester 2019/20
 
<br>''Überarbeitet:'' [[Benutzer:Tim-Jannik Schonlau|Tim Schonlau]] im Wintersemester 2023/24
--[[Benutzer:Mirekgoebel|Prof. Dr. Mirek Göbel]] ([[Benutzer Diskussion:Mirekgoebel|Diskussion]]) 13:48, 8. Aug. 2014 (CEST)
* Führen Sie diesen Artikel mit dem Artikel BSF - ..." zusammen!
* Originaldateien zu den Bildern mit ablegen
* Abbildung der Regelstrecken als PT1 fehlt
* Zuviel Fließtext >> mehr Aufzählungen, Formeln etc., Reduktion aufs Wesentliche!


----
----
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]

Aktuelle Version vom 16. Januar 2024, 14:08 Uhr

→ zurück zum Hauptartikel: Praktikum SDE

Einleitung und Ziel

Die Bahnplanung und Spurführung des SDE-Praktikums umfasst die Arbeitsbereiche Bahnplanung, Längs- und Querregelung. Das Ziel ist es mit den Ergebnissen der Objekt und Spurkerkennung und der Kommunikation die Bahnplanung umzusetzen und das CCF durch die Strecke zu führen. Dafür wird aus dem Spurpolynom die zu fahrende Geschwindigkeit und Richtung abgeleitet und an die Aktoren weitergegeben. Um möglichst genaue Ergebnisse zu erzielen, muss die Geschwindigkeit und die Richtung geregelt werden. Für den Hauptantrieb des CCF ist die Längsregelung verantwortlich, für die Lenkung die Querregelung.

Das Thema Längsregelung beinhaltet folgende Aufgaben:

  • Messen der Istgeschwindigkeit
  • Analyse Istgeschwindigkeitssignal
  • Bestimmung Sollgeschwindigkeit
  • Regelung längs

Das Thema Querregelung beinhaltet folgende Aufgaben:

  • Analyse Gierrate
  • Regelung quer
  • Querführungskonzept anhand des Spurpolynoms
  • Parametrisierung des Einspurmodells (ESM)


Darüber hinaus gehört das Verhalten an Stopplinien zu den Aufgaben der Bahnplanung.
Hierzu gehören folgende Aufgaben:

  • Reduktion der Geschwindigkeit bei erkannter Stopplinie
  • Halten in einem Abstand von maximal 15cm vor der Stopplinie
  • Warten von mindestens zwei Sekunden an der Haltelinie
  • Wiederanfahrt nach erkennen einer freien Kreuzung und Ablauf der Wartezeit

Ehemalige Mitwirkende:

Im Sommersemester 2016 und im Wintersemester 2016/2017 wurde der Themenbereich von Marcus Irmer und Robin Kirsch bearbeitet. Die Dokumentation beruht auf der Vorarbeit von Daniel Block und Torben Petersen. Im Sommersemester 2018 wurde darauf aufbauend die Thematik von Benedikt Wulowitsch und Leonard Herbstmann bearbeitet. In den Anforderungen und auch dem Pflichtenheft für das SoSe 2018 wurde als Aufgabe die Optimierung der Regler vorgesehen. Diese werden im Sommersemester 2019 von Marcel Bröckelmann validiert und die Pflichten fortgeführt. Im Wintersemester 2019/20 befassen sich | ||||| Marcel Bröckelmann,Thomas Miska, Christian und Isaac mit der Bahn- und Spurführung.

Längsregelung

Anschluss des Motors an den Motortreiber, mit dem Anschluss der Hall-Sensorik. Die Hall-Sensoren sind direkt mit der dSpace Karte DS1104 verbunden.

Die Längsregelung des Fahrzeugs erfordert eine exakte Bestimmung der Ist- & Sollgeschwindigkeit. Aus diesem Grund wird im Folgenden das Konzept zur Bestimmung der Istgeschwindigkeit und der Bestimmung der Sollgeschwindigkeit betrachtet.

Konzept zur Bestimmung der Istgeschwindigkeit

Die Geschwindigkeit des CCF wird mithilfe von Hall-Sensoren erfasst. Drei Hall-Sensoren sind Sensoren des Längsantriebs und lösen jeweils einen Interrupt der dSpace Entwicklungskarte DS1104 aus. Aus der Zeitdifferenz der Interrupts wird die Geschwindigkeit berechnet. Dies wird konkret mit Simulink-Blöcken aus der dSpace RTILib Bibliothek im dem Simulinkmodell CCF_online → SEN - Geschwindigkeit → SEN - Geschwindigkeit - Interrupt_Hall-Sensoren implementiert.

Simulinkmodell SEN - Geschwindigkeit - Interrupt_Hall-Sensoren

In der S-Function bestimmeGeschwindigkeit wird die Zeit der dSpace Karte DS1104 mit dem Befehl ts_time_read() ausgelesen und die Zeit des letzten Interrupts abgezogen.
Die zurückgelegte Strecke pro Interrupt wird durch die ermittelte Zeit geteilt.
Bei der Istgeschwindigkeit wurde auf den Ergebnissen der vorangegangenen Semester zurückgegriffen. Siehe Dazu: Analyse Istgeschwindigkeit

Aktueller Stand der Ist-Geschwindigkeit

Die Ist-Geschwindigkeit wird korrekt ermittelt, schwankt allerdings stark. Wie im Plot "Testfahrt mit langsamer Geschwindigkeit" zu sehen, beschleunigt das Fahrzeug bis die Soll-Geschwindigkeit erreicht wird. Dann schwankt die Geschwindigkeit ±0.1m/s um die Soll-Geschwindigkeit.
Das Signal der Geschwindigkeit "SenVx_vx_K_f64" wird durch eine Stopperkennung bei geringen Geschwindigkeiten auf 0 m/s gesetzt, da hier der gleiche Hall-Status 14 Sample-Schritte lang gleich war. Diese "Stopperkennung" lässt sich mit dem Parameter "PAR_SenGeschw_ZeitbisStop" einstellen.

Testfahrt mit langsamer Geschwindigkeit

Geschwindigkeitsberechnung

Folgende Werte wurden empirisch festgestellt: Die Geschwindigkeit wird mit der Formel bestimmt. [Wikipedia)] Die Strecke ist bei einer theoretischen Berechnung der Radumfang des CCF. Da sich das Profil des Rades unter Belastung ändert, nehmen wir für den Raddurchmesser an. Der Radumfang ist damit . Der [LRP Vector X12 StockSpec 17.5T] dreht sich 7 mal pro Radumdrehung, dabei werden 43 Hall-Flanken ausgelöst. Die Strecke pro Flanke ist damit .

Parameter der Längsregelung

Die Signalkette der Längsregelung besteht aus folgenden Parametern und Signalen:

Parametername Bedeutung Ort
PAR_SenGeschw_PT1Frequenz Filterfrequenz, mit der SenVx_vxRoh_f64 geglättet wird Parameter in param_SEN_online.m
PAR_SenGeschw_ZeitbisStop Anzahl der Sampleschritte, in denen verglichen wird ob der Hall-Status sich geändert hat Parameter in param_SEN_online.m
PAR_BsfLaengs_... -P, -I, -DAnteil_f64 PID-Regler Parameter Parameter in param_BSF.m
PAR_BsfQuer_Filter_DAnteil_f64 Filter für D-Anteil Parameter in param_BSF.m
Signalname Bedeutung Simulinkmodell
SPEED / SenVx_vxRoh_f64 Rohwert aus der S-Funktion "bestimmeGeschwindigkeit" CCF_online → SEN - Geschwindigkeit → SEN - Geschwindigkeit - Interrupt_Hall-Sensoren
SenVx_vx_K_f64 gefilterte Geschwindigkeit CCF_online → SEN - Sensoren - online → SenVx - Laengsgeschwindigkeit
Famo_VxSoll_f64 Soll-Geschwindigkeit, festgelegt in param_BSF CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
BsfLaengs_RegelDiff_f64 Differenz zwischen Ist-Geschwindigkeit und Soll-Geschwindigkeit CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
BsfLaengsRegler... -P, -I, -D_f64 PID-Reglerwerte CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
BsfLaengs_FahrpedalSoll_f64 Geschwindigkeitswert analog zur Fernbedienung CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
BsfLaengs_FahrpedalSoll_begr_f64 Begrenzung um unkontrolliertes Fahren zu vermeiden CCF_online → BSF - Bahnplanung und Spurfuehrung → BSFLaengs - Laengsfuehrung
AktRti_PWMGas_Antreiben_f64 Geschwindigkeitswert umgewandelt in PWM für Motoransteuerung CCF_online → AKT - Aktoren - online → AktRtiPwm - PWM4fach-Modul der RTI-Bloecke
AktRtiPwm_AusgangGas_f64 begrenzter Geschwindigkeitswert umgewandelt in PWM für Motoransteuerung CCF_online → AKT - Aktoren - online → AktRtiPwm - PWM4fach-Modul der RTI-Bloecke

Konzept zur Bestimmung der Sollgeschwindigkeit

Abbildung 1: SenKam - Kamera (offline)

Die Sollgeschwindigkeit des Fahrzeugs wird aus dem Krümmungsradius der Fahrbahn bestimmt, um die Geschwindigkeit in Abhängigkeit der Kurve anzupassen. Die im Online-Modus von der Kamera erfasste Fahrbahn wird mit einer Parabel im Fahrzeug-Koordinatensystem modelliert. Diese ist bestimmt über die drei Koeffizienten a, b und c. Nach der allgemeinen Parabelgleichung ax²+bx+c beschreibt a die Krümmung der Kurve und wird im Block SenKam - Kamera in den Kameraparameter a geschrieben und als Signal SenKam_SpurA_f64 ausgegeben.

Im Offline-Modus wird der Kameraparameter a aus der Position und der Richtung des im Einspurmodell simulierten Fahrzeugs berechnet. Die Parameter ESM_x_I_f64 und ESM_y_I_f64 beschreiben die Position des Fahrzeugs. Die Richtung des Fahrzeugs steht im Parameter ESM_psi_f64. Der SenKam - Kamera-Block des Offline-Modells wird in der Abbildung SenKam - Kamera (offline) dargestellt.


Die Sollgeschwindigkeit wird im Online-Modell und im Offline-Modell im Baustein "Berechnung V-Soll" ermittelt. Die nachfolgende Abbildung 2 zeigt diesen Baustein, sowieso seine Beschaltung mit Parametern. Die Eingänge des Blocks sind die Kameraparameter SenKam_SpurA_f64 und SenKam_SpurB_f64, die Vorausschauweite BsfQuer_Vorausschauweite_f64 und eine maximal zulässige Querbeschleunigung PAR_BsfQuer_a_max. Innerhalb des Subsystems Berechnung V_Soll wird zum einen der Kurvenradius der Bahnkurve in Abhängigkeit der Vorausschauweite berechnet. In Kombinatino mit der Querbeschleunigung und dem aktuellen Kurvenradius wird eine Sollgeschwindigkeit ermittelt, welche am Ausgang des Bausteins abgerufen werden kann.

Abbildung 2: Implementierung V_Soll


Die nebenstehende Abbildung zeigt die Programmierung zur Berechnung des Kurvenradius innerhalb des Subsystems. Die Berechnung liegt folgender Formel zur Berechnung eines Krümmungskreises zur Grunde:


Das Kurvenpolynom hat den Grad 2 und lässt sich somit schreiben als:


Durch das zweimalige differenzieren dieses Polynoms ergeben sich folgende Polynome: und

Wenn die beiden Ableitungen nun in die vorangegangene Formel zur Berechnung des Krümmungskreises eingesetzt werden, ergibt sich folgende Formel:

Die nachfolgende Abbildung 3 zeigt die Programmierung der hergeleiteten Formel in MATLAB/Simulink. Für Es wurde von der Berechnung der Absolutwert gebildet und an den Ausgangsparameter r weitergeleitet.

Abbildung 3: Berechnung Kurvenradius


Damit aus dem bestimmten Kurvenradius der Fahrbahn eine Sollgeschwindigkeit ermittelt werden kann, wird sich folgender Formel bedient: diese Formel bezieht die maximale Querbeschleunigung mit ein ist in der Abbildung "Berechnung Sollgeschwindigkeit" in Simulink programmiert.
In der nachfolgenden Abbildung 4 ist ein Lookup-Table dargestellt, an welchen eine Konstante angeschlossen ist. Dieser dient dazu, den Sollwert für die Geschwindigkeit zwischen V_Kurve und V_Gerade umzuschalten. Die Konstante kann Werte zwischen Null und Eins annehmen. Die Geschwindigkeit V_Kurve wird mit diesem Faktor verstärkt und die Geschwindigkeit V_Gerade wird mit dem 1-Faktor verstärkt. Sollte sich das Fahrzeug also in einer Kurve befinden, so ist der Wert der Konstante bei 1 und die errechnete Sollgeschwindigkeit für die Kurvenfahrt wird an den Ausgang V_Soll weitergeleitet. Wird hingegen keine Kurve gefahren, so ist die Konstante Null und der feste Wert der Sollgeschwindigkeit für eine Geradeausfahrt wird an den Ausgang übermittelt. Diese Programmierung verhindert das Springen der Sollgeschwindigkeit, sobald aus der Geraden in eine Kurve gelenkt wird, oder andersherum.

Abbildung 4: Berechnung Sollgeschwindigkeit

Reglerentwurf

Siehe Dazu: Auslegung der Reglerparameter

Die Parameter des PID-Reglers sind Stand WiSe2023/24 sehr klein eingestellt, um die langsame Fahrt zu ermöglichen. Bei größeren Regelparametern kommt es bei sehr niedrigen Geschwindigkeiten unter 0.5m/s zum "Stocken" des Motors. Der PID-Regler versucht eine langsame Geschwindigkeit zu fahren, durch die nicht konstante Ist-Geschwindigkeit springt das Gaspedal hin und her. Um dies zu Umgehen, könnten in Zukunft die Werte für den PID-Regler einzeln gefiltert werden, wie es schon beim D-Regler der Fall ist.

Plot der PID-Werte bei Testfahrt mit langsamer Geschwindigkeit


Simulinkmodell des PID-Reglers

In dem obigen MATLAB Plot ist zu erkennen, dass die Längsregelung maßgeblich durch den I-Anteil geregelt wird. Das Signal "BsfLaengs_FahrpedalSoll_begr_f64" wird an den Aktor weitergegeben. So ist ab Sekunde 550 zu sehen, dass die Begrenzung des Signals eine Geschwindigkeitserhöhung verhindert.
Der P-Anteil des Reglers greift bei Änderungen der Soll-Geschwindigkeit, bei Sekunde 490 (Beschleunigen) oder 565 (Bremsen) zu sehen. Auffällig ist, dass die Reglerwerte mehrere Sekunden brauchen, um den Zielwert bzw. Soll-Geschwindigkeit zu erreichen.


Querregelung

Für die Querregelung wird verglichen, welche Bahn das Auto fahren würde (Istgröße) und welche Bahn das Auto fahren soll (Sollgröße). Zuerst wird die Bestimmung der Sollgröße beschrieben.

Bei der Gierrate wurde auf den Ergebnissen der vorangegangenen Semester zurückgegriffen. Siehe Dazu: Analyse Gierrate

Querführungskonzept

Die Querführung des Fahrzeuges wird in zwei Bereiche unterteilt. Der erste Aspekt beinhaltet die Bahnplanung, die im Folgenden in ihrer theoretischen Grundlage und der Umsetzung in Simulink dargestellt wird. Die Querregelung wird im Anschluss beschrieben.

Abbildung 14: Layout BSF_Regelung (Originaldatei)

Als Grundlage für das Querführungskonzept dient die Sollbahn, die durch das Team OSE - Objekt- und Spurerkennung aufgrund der Analyse der zu fahrenden Strecke mit Hilfe eines Polynoms zweiten Gerades, das durch die Parameter a, b und c eindeutig beschrieben ist, zur Verfügung gestellt wird. (Wichtig: trunk/Anforderungsmanagement/Lastenheft/Schnittstellendokumentation.docx beachten)
Da in dieser Anwendung aufgrund der Geometrie des Fahrzeugs ein Vergleich der Soll- und Ist-Bahn nicht sinnvoll ist, muss ein Punkt auf der Bahn in der Vorausschauweite x prädiziert werden, an dem sich das Fahrzeug bei idealem Lenkwinkel und der aktuellen Geschwindigkeit befinden würde. Der ideale Lenkwinkel kann aber nicht bestimmt werden. Aus diesem Grund muss eine Abschätzung der Querabweichung von der einfachen Geradeausfahrt getroffen werden. Dabei wird der derzeitige Lenkwinkel als Referenz verwendet. Die Regeldifferenz des Querreglers bildet sich somit aus dem Punkt auf der Sollbahn und der prädizierten Positionsabschätzung.

Vorausschauweite

Die Vorausschauweite x wird abhängig von der aktuellen Geschwindigkeit des Fahrzeugs berechnet. Dazu wird eine LUT verwendet, ihre Parameter sind in der Parameterdatei param_BSF.m hinterlegt. Es sind die Werte PAR_BSFQuer_LookupVorausschauweite_Vx_f64 mit aktuell [0 0.5 0.60 2 5] und PAR_BSFQuer_LookupVorausschauweite_X_f64 mit aktuell [0.55 0.55 1 1 3]. Wichtig: Die Kamera mit der nachgeschalteten Bildverarbeitung liefert nämlich nur Ergebnisse für dem Bereich zwischen 0,52 m und 3,23 m vor dem Fahrzeug. Am besten arbeitet das Fahrzeug bei derzeitiger Konfiguration mit 0,8. Aus diesem Grund wurde mit der LUT der Wert auf diesen Bereich begrenzt, die Werte unter bzw. über 0,8 werden nur bei sehr geringer bzw. sehr hoher Geschwindigkeit angenommen. Es besteht aber noch die Möglichkeit auf einen manuellen Wert umzustellen, dies kann in ControlDesk® auf dem Layout BSF_Regelung gemacht werden, vgl. Abbildung Layout BSF_Regelung.

Sollbahnbestimmung

Im Folgenden soll die Bestimmung des Punktes auf der Sollbahn beschrieben werden. Die Bahn wird als ein Polynom zweiten Gerades, einer Parabel, approximiert. Die allgemeine Formel lautet:

Die Abbildung 15 Schema der Sollbahn zeigt die Sollkurve im Fahrzeug-Koordinatensystem. Auch die Lage des Sollpunktes auf der Kurve ist dort qualitativ zu sehen.

Abbildung 15: Schema der Sollbahn
Quelle: trunk/Dokumentation/Dokumentation_LaTex/Carolo_Doku_2012.pdf

Die Bestimmung des prädizierten Punktes des Fahrzeuges auf der Ist-Bahn geschieht unter folgender Annahme: Ist der Lenkwinkel des Fahrzeuges gleich Null, existiert zwischen prädiziertem Ist-Punkt und der aktuellen Ausrichtung des Fahrzeuges keine Querabweichung. Fährt das Fahrzeug nicht exakt geradeaus, befindet es sich auf einer Kreisbahn, die bei stationär statischem Lenkwinkel konstant ist.
Der Radius dieser Kreisbahn lässt sich aus der stationären Gierrate und der Geschwindigkeit wie folgt bestimmen:

Die Abbildung 16 Schema der Istbahn zeigt die prädizierte Istbahn im Fahrzeug-Koordinatensystem und den Zusammenhang zwischen Querabweichung y und Vorausschauweite x.

Abbildung 16: Schema der Istbahn
Quelle: trunk/Dokumentation/Dokumentation_LaTex/Carolo_Doku_2012.pdf


Zur Bestimmung der Querabweichung y wird der in der Skizze erkenntliche Zusammenhang zwischen dem Kreisradius r und der Vorausschauweite x verwendet. Dazu muss jedoch zuvor sichergestellt werden, dass die Vorausschauweite kleiner als der Betrag des erechneten Radius ist. Mit dem Satz des Phythagoras kann dann a wie folgt bestimmt werden:


Die Querabweichung y kann aus r und a bestimmt werden, sofern r positiv ist (Linkskurve):


Falls r negativ ist (Rechtskurve), berechnet sich y wie folgt:


Da die Vorausschauweite x unabhängig vom derzeitigen Kurvenradius r bestimmt wird, kann der Ausdruck unter der Wurzel in (3) negativ sein. Weil diese Berechnung unzulässig wäre, wird vorbeugend das Ergebnis der Vorausschauweitenberechnung mit einer Sättigungsfunktion begrenzt, die maximal 80 % des aktuellen Kurvenradius annimmt. Dieser Wert (80 % = 0.8) kann über den Parameter PAR_BSFQuer_VorausschauBegrenzung_f64 eingestellt werden.
Die Querabweichung der Sollbahn und die Querabweichung der Istbahn, jeweils bezogen auf die aktuelle Ausrichtung des Fahrzeuges, ergeben die Regeldifferenz für den Querregler. Aufgrund der Differenz zwischen Sollbahn und Istbahn bringt dieses Konzept eine bleibende Regelabweichung in der Kurve mit sich. Diese ist nur dann Null, wenn das Fahrzeug sich in der Geradeausfahrt befindet.


Siehe dazu: Querreglung Vorarbeiten

Verhalten in der Rechtskurve, sowie Integrationstest der Querregelung
Autor: Thomas Miska

Reglerentwurf

Wie auch bei der Längsführung wurde für die Querregelung zur Übersicht ein allgemeiner Regelkreis aufgestellt. Dieser allgemeine Regelkreis ist in der nachfolgenden Abbildung 17 visualisiert.

Abbildung 17: allgemeiner Regelkreis Querregler


Die Parameter LW_Soll und LW_Ist beschreiben den gewünschten Lenkwinkel und den momentan erfassten Lenkwinkel. In den Regelkreis eingehende Störgrößen sind Probleme bei der Übertragung des Stellmotors für den Lenkwinkel. Eine detaillierte Beschreibung zu dem bisherigen Stand des aggierenden Reglers ist unter Querreglung Vorarbeiten zu finden.

Hier kommt noch ein Bild des Regelkreises aus Simulink rein!

In der nachfolgenden Abbildung 18 ist ein Plot dieser Querregelung dargestellt. Es wird oben links die aktuelle Fahrbahn in der Simulation angezeigt. Daneben befindet sich die aktuelle Geschwindigkeit, der Solllenkwinkel und die Gierrate Psi ungefiltert. In den vier Plots in der unteren Reihe befindet sich von links nach rechts der Gierwinkel Psi als Rohwert, allerdings gefiltert. Neben der gefilterten Gierrate ist die eigentliche Regelgröße, also der Lenkwinkel aus dem Einspurmodell in der Einheit Grad/Sekunde dargestellt. Neben diesem Plot befindet sich ein Plot der drei Reglerparameter. Zu Erkennen ist, dass der P-Anteil noch ein leichtes Schwingen hat, was für die Regelung aber nicht weiter kritisch ist. Als letzter Plot unten rechts befindet sich die Querablage des Fahrzeugs.

Abbildung 18: Plot der Querregelung


Offline-Simulation

Um die Straße in der Simulation darzustellen, wird eine Optimalspur manuell erstellt. Diese wird der Simulation übergeben, welche die Fahrbahnmarkierungen im Plot generiert.
Die Bestimmung des Solllenkwinkels erfolgt in der Offline-Simulation im Block "CCF-offline"-->"SEN-Sensoren-offline"-->"SenKam-Kamera"-->MATLAB-Funktion "parabel_voraus". Da in dieser Simulation die optimale Fahrbahn hinterlegt ist, werden Punkte innerhalb eines zuvor definierten Radius in einem Array abgespeichert. Diese werden anschließend durch eine Drehmatrix vom Weltkoordinatensystem in das Fahrzeugkoordinatensystem umgewandelt.Nachdem die Koordinaten transformiert wurden, werden alle Koordinaten mit negativer X-Koordinate herausgefiltert, sodass lediglich Koordinaten, welche sich vor dem Fahrzeug befinden, berücksichtigt werden.

Abbildung 19: Koordinatensysteme in der Simulation


Abschließend wird ein Lineares Gleichungssystem erstellt. Hierzu werden die X Werte in eine Matrix eingebunden. So werden für jeden Punkt eine Spalte in der Form (quadrierter X-Wert, X-Wert, 1) angelegt. Die Y-Koordinaten werden in einem Spalten-Vektor hinterlegt. Um die Parameter "a", "b", "c" ermitteln, wird dieses Gleichungssystem gelöst und an die folgenden Funktionen übergeben.
Diese ermittelten Parameter beschreiben die Fahrbahn bis zur Sichtweite exakt. Hiermit kann nun unter Zuhilfenahme des derzeitigen Lenkwinkels die voraussichtliche Abweichung in Vorausschauweite ermittelt werden und der Lenkwinkel angepasst werden kann.

Die derzeitige Berechnung führt zu einem Fehlverhalten in Linkskurven. Der Ursprung dieses Fehlers konnte derzeit nicht definiert werden. Mögliche Ursachen hierfür kann ein fehlerbehaftetes Einspurmodell oder eine fehlerhafte Berechnung aufgrund von Vorzeichenwechsel sein. Dies muss im Folgenden ausführlich überprüft werden, sodass diese Herausforderung gemeistert werden kann.


Das die Stopplinienerkennung und das Verhalten an Stopplinien wurde aufgrund der Ausführlichkeit der Artikel in die zwei folgenden Artikel verschoben:

SenKam - Stopplinienerkennung

Stopplinien-Verhalten


Test

BSF - Bahn- und Spurführung: Test der Längsregelung in Simulation und im Fahrzeug


Querregelung WS 21/22

Um den Zustand der Querregelung zu ermitteln, wurde im Wintersemester 21/22 ein Integrationstest durchgeführt. Dieser wurde auf das Online-Modell angewendet. Durch Hinzufügen der Spurparameter im Inbetriebnahme-ControlDesk-Experiment können die Spurparameter zum Testen angepasst werden.

Die Look-Up-Tabelle im Online-Model dient dazu die Reglerausgangsgröße in ein PWM-Signal für den Steuermotor der Lenkung zu übersetzen. Diese Tabelle wurde an den aktuell verbauten Motor angepasst.

Die Querregelung hat zwei wesentliche Eingangsgrößen: Die Spurparameter A, B und C und die Gierrate aus der mit der Geschwindigkeit die Querbalge berechnet wird. Die Spurparameter werden auf dem PC ermittelt und über RS232 an die dSpace-Karte übermittelt. Diese wurden bisher durch einen Tiefpassfilter im Online-Modell gefiltert. Da bei einer Übertragung von NaN der Filter aussteigt, wurde dieser entfernt, um immer ein Signal zu übertragen. Um die Spurparameter besser Auswerten zu können, werde diese jetzt grafisch in dem Inbetriebnahme-Experiment dargestellt.

Die Gierrate liefert keine zuverlässigen Werte. Eine Analyse des Problems konnte den Fehler auf die PCI-Kommunikation zwischen der dSpace-Karte und dem PC eingrenzen. Eine Fehlerbeschreibung findet sich unter: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Dokumentation/Fahrzeug/dSpace-PCI_Kommunikation.docx


Informationen zum Verbauten Gyrosensor findet man im Artikel Gyrosensor (LPR510AL)

Ergebnis/ Zusammenfassung

Winter 2022/23

  • Überprüfen Sie die Ist-Geschwindigkeit des Fahrzeugs.
  • Die PID-Regelung wird schließlich auf P:4, I:2 und D:0,1 eingestellt.
  • Bei niedrigen Geschwindigkeiten kann das Fahrzeug noch nicht so gut fahren.

Winter 2021/22

  • Integrationstests der Querregelung geprüft und angepasst
  • Filter des Spurpolynoms in Online-Modell entfernt
  • Look-Up Tabelle für den Lenkwinkel angepasst
  • Gyroskop und angrenzende Signalkette auf Funktion und Konsistenz überprüft
  • Analog-Ports der DS1104 auf Fehler geprüft
  • Treiber des Motherboards aktualisiert
  • Darstellung des Spurpolynoms in ControlDesk

Winter 2019/20

  • Rechtskurvenfahrt offline korrigiert, fehlerfreie Kurvenfahrt in der Offline-Simulation möglich
  • Integrationstest zur Verarbeitung von Bahnspurpolynom zu Längs- und Querregelung in der Offline-Simulation erstellt und durchführen lassen (Prüfer: David Reger)
  • Integrationstest zur Verarbeitung von Bahnspurpolynom zu Längs- und Querregelung auf dem Online-Modell konzipiert
  • Aktualisierung der Wiki-Artikel bezüglich Bahn- und Spurführung
  • Ausarbeitung der Offline-Stopplinienerkennung (inklusive CodeReview)

Sommer 2019

  • Fehler bei der Rechtskurvenfahrt erkannt, Ursprung scheint Gierraten-Errechnung zu sein (noch nicht behoben)
  • PID-Regler wurde durch Nullsetzung von Parametern auf einen P-Regler reduziert
  • Stopplinienerkennung wurde teilintegriert (Stopp an Haltelinie, Verlangsamung bei Näherung)
  • Erstellung einer Testumgebung für den Stopplinientest (Fahrbahn Nr. 3)

Sommer 2018

  • In der Simulation ist die richtige Funktion der Querregelung zu erkennen
  • ein Einschwingen des Reglers ist in der Simulation kein Problem in Hinsicht auf das Einhalten der SOLL-Bahn
  • Simulink Modelle sind optimiert - Einstellungen des P-,I- und D- Anteils sind ausschließlich in den Parametern vorzunehmen und nicht im Modell selbst
  • Längsregelung ist zur Zeit noch inaktiv und ist stattdessen durch eine konstante Geschwindigkeit ersetzt
  • Längsregelung ist jedoch in der Simulation funktionsfähig, so wird die Geschwindigkeit in Kurvenfahrten reduziert und auf geraden Strecken wieder erhöht
  • Tests auf der Fahrbahn konnten mit dem aktuellen Stand im Sommersemester '18 noch nicht durchgeführt werden


Ausblick

Winter 2022/23

  • Das Rückwärtsfahren muss noch Optimierung gemacht werden.
  • Die Reaktion von der Änderung der Geschwindigkeit soll schnell machen.
  • Das Autonome Fahren sollten in das Test-Programm aufgenommen werden.

Winter 2021/22

  • Simulink-Filter der Spurparameter liefert keine Ausgabewerte, Notwendigkeit eines Filters muss am Online-Modell getestet werden
  • Analoge Gyro-Sensor Werte sind ab der seriellen Schnittstelle fehlerhaft, derzeitige Vermutung liegt auf Versionsunterschieden der PCI Schnittstelle von PC und dSpace-Karte, konnte aber noch nicht bestätigt werden
  • Alternativen zur Überbrückung der Kommunikationsprobleme zwischen dSpace-Karte und PC müssen ermittelt werden (Anderer Mikrocontroller, anderer PC, ...)

Winter 2019/20

  • Die Stopplinienerkennung weist derzeit diverse Ausnahmefälle auf, diese müssen abgedeckt werden, oder ein neuer Ansatz zur Stopplinienerkennung entwickelt werden
  • Das Verhalten für dynamische und statische Objekte in der Offline-Simulation muss überprüft und überarbeitet werden, da in jedem Fall Objekte überholt werden, ungeachtet der Situation auf der Gegenfahrbahn.
  • Die Ermittlung des Bahnspurpolynoms in der Offline-Simulation muss überprüft werden, da derzeit bei der berechnung auch vertikal zur Fahrtrichtung liegende Fahrbahnen mit eingerechnet werden und ein Fehlverhalten des Fahrzeugs verursacht.
  • Das Verhalten für dynamische und statische Objekte in der Online-Simulation kann nach Inbetriebnahme eines LiDARs und der Verarbeitung der Messdaten konzipiert und implementier werden.


Sommer 2019

  • Die implementierten Funktionen zu Haltelinien und das angepasste Spurverhalten müssen durch weitere Personen überprüft werden.
  • Das Spurverhalten in Linkskurven sollte korrigiert werden. Hierfür muss von einem Team analysiert werden, wodurch dieses Fehlverhalten hervorgerufen wird.
  • Das Stopplinienverhalten besitzt zurzeit keine Wiederanfahrt oder eine Messung der Haltezeit. Diese Funktionen können im Folgesemester implementiert werden.


Winter 2018/19

  • Die Bestimmung der Ist-Geschwindigkeit könnte durch ein PT1 Glied, was das reale Verhalten des Autos wiederspiegelt modelliert werden. Dies würde eine noch höhere Modellgenauigkeit mit sich bringen.
  • Es wurde eine Anpassung der Längsführung in verschiedenen Fahrsituationen. So wird nun die Geschwindigkeit auf einem Rundkurs mit Hindernissen in der Simulation bei einem erkannten Hindernis angepasst. Das Fahrzeug passt nun seine Geschwindigkeit der eingestellten Vorgabe bei einem erkannten Hindernis bis zum Ausschervorgang an, dieses Verhalten kann bei einer Fahrt mit dynamischen Hindernisssen genutzt und erweitert werden um ...
    • 1. ... vor dem Überholvorgang zu überprüfen ob die Gegenspur einen Überholvorgang zulässt.
    • 2. ... nach dem Ausscheren zu überprüfen ob ein Überholvorgang möglich ist.


Sommer 2018

  • Bisher konnten die Regler nur in der Simulation getestet werden, im kommenden Wintersemester wird ein Test auf der Fahrbahn erfolgen, sodass verfiziert werden kann, dass die in der Simulation gewählten Reglerparameter sich auch in der Praxis bewähren. Sollte sich heraussstellen das eine Nachoptimierung erforderlich ist, so wird dies auch im kommenden Wintersemester erfolgen.
  • Das neu eingebaute Konzept zur Bestimmung der Sollgeschwindigkeit wird im kommenden Wintersemester auf der Fahrbahn erprobt. In der Simulation erwies sich die Berechnung anhand der Kameraparameter als sehr vielversprechend. Das Finetuning dieser Berechnung erfolgt ebenfalls im kommenden Wintersemester.


Sommer 2017

  • Feinjustierung der Parameter der Längsregelung am Fahrzeug
  • Nach der Parametrisierung des Einspurmodells Querregler im Simulations-Modell auslegen
  • Wenn Auslegung Querregler in Simulation erfolgreich, dann Feinjustierung am Fahrzeug
  • Messung der Gierrate mit neuem Gierraten-Sensor
  • Auslegung des ESM durch Justierung der Größen J, cv und ch
  • Implementierung des Konzepts für Hindernisumfahrung in der Online-Simulation



Winter 2017

  • Reglerparameter für Querregelung anpassen, sodass Regler schneller reagiert (enge Kurven, Hindernisse), dann Fahrgeschwindigkeit erhöhen
  • Vorausschauweite lässt sich evtl. noch verbessern
  • evtl. Sonderregelung für Querreglung bei erkannter Stopplinie: für eine feste Streckenlänge geradeaus fahren; dadurch lassen sich die Lücken auf der Kreuzung einfach kompensieren; Absprache mit Kamera-Team/Bildverarbeitung notwendig
  • Implementierung des Konzepts zum Anhalten an Stopplinien
  • in Hindernisumfahrung eigene Signalaufbereitung entfernen, Objektliste aus Signalaufbereitung verwenden, vgl. Vorarbeit
  • Hindernisumfahrung in Simulation anpassen, dann auf AMR testen
  • Kalman-Filter für Streckenverlauf, vgl. Vorarbeit; Absprache mit Kamera-Team/Bildverarbeitung notwendig



Weitere Artikel zum Längsregelung und Querregelung

Sommersemester 20


Wintersemester 20/21

Einzelnachweise


Autor: Nils Brunnert
Überarbeitet: Daniel Block und Torben Petersen im Sommersemester 2014 und Wintersemester 2014/2015
Überarbeitet: Marcus Irmer und Robin Kirsch im Sommersemester 2016 und Wintersemester 2016/2017
Überarbeitet: Benedikt Wulowitsch und Leonard Herbstmann im Sommersemester 2018 und Wintersemester 2018/19
Überarbeitet: Marcel Bröckelmann im Sommersemester 2019
Überarbeitet: Thomas Miska im Wintersemester 2019/20
Überarbeitet: Tim Schonlau im Wintersemester 2023/24


→ zurück zum Hauptartikel: Praktikum SDE