AF: Laengsgeschwindigkeit (SenVx): Unterschied zwischen den Versionen
(132 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
== Primärsensor == | == Primärsensor == | ||
Als Primärsensor wird ein Hall-Sensor | Als Primärsensor wird ein Hall-Sensor verwendet. Die Hall-Sensorik ist in dem Motor LRP Vector 22 integriert. | ||
Vorher wurde der LRP Vector X12 StockSpec 17.5T (siehe Abb. 1) genutzt, welcher identisch funktioniert. | |||
Über den Motor mit | Über den Motor mit integrierter Hall-Sensorik ist bereits ein Artikel vorhanden, wo dieser genau erläutert wird: [[Hall-Sensor]] | ||
== Messkette == | == Messkette == | ||
[[Datei:Vollständige Messkette Längsgeschwindigkeit.jpg]] | [[Datei:Vollständige Messkette Längsgeschwindigkeit.jpg|zentriert|1200px|thumb|Abbildung 2: Vollständige Messkette der Längsgeschwindigkeitsbestimmung]] | ||
== Systementwurf == | == Systementwurf == | ||
Die drei Hall-Sensoren sind im Antriebsmotor integriert. | |||
Der Sensoranschlussplan | Der Sensoranschlussplan, die Signalverarbeitung und die Hardwareanbindung, sprich die Schnittstelle zur DS1104 wird bereits ausführlich in einem anderen Artikel erläutert. | ||
Link zum passenden Kapitel | Link zum passenden Kapitel: [https://wiki.hshl.de/wiki/index.php/AMR_2022#Hall-Sensor Hall-Sensor] | ||
[[Datei: | === Sensorblock - SenVx-Laengsgeschwindigkeit === | ||
[[Datei:Modell Laengsgeschwindigkeit.png|gerahmt|zentriert|Abbildung 3: Modell Längsgeschwindigkeit]] | |||
In dem Modell für die Geschwindigkeitsermittlung wird zuallererst überprüft, ob die Geschwindigkeit bei vx=0 ist. Dies erfolgt in dem ersten grauen Block auf der linken Seite. Hierfür wird der aktuelle Geschwindigkeitsrohwert mit den letzten 5 Werten verglichen. Über den Vergleich dieser Werte kann man bestimmen, ob das Auto aktuell steht oder sich in Bewegung befindet. Nur wenn das Auto sich bewegt wird das Signal weitergeleitet. Dieses Signal läuft anschließend über die min/max-Begrenzung, damit das Auto nicht schneller als die zugelassene Geschwindigkeit fährt. Dies verhindert vor allem, dass bei einer Kollision mit zu hoher Geschwindigkeit kein Schaden am Fahrzeug erfolgen kann. Wenn der Geschwindigkeitsrohwert über der min/max-Begrenzung liegt, wird dieser auf die Begrenzung reduziert. Im selben Zug wird die Änderungsrate (Beschleunigung) auf <math>1 m/s^2</math> reduziert, dies wird im folgenden als Rate-Limiter bezeichnet. Über die Variable <code>WAY_DIRECTION</code> wird im zweiten grauen Block die Fahrtrichtung festgelegt. Wenn die Fahrtrichtung rückwärts ist, bekommt die Geschwindigkeit ein negatives Vorzeichen. | |||
Hier werden die Abbildungen der Simulink Modell für die Längsgeschwindigkeit dargestellt (siehe Abb. 3+4). | |||
=== Sensorblock - Sen-Geschwindigkeit === | |||
[[Datei:Sen Geschwindigkeit Subsystem.png|gerahmt|zentriert|Abbildung 4: Modell Geschwindigkeitsberechnung]] | |||
Das Modell Sen-Geschwindigkeit dient der Bestimmung des Rohwertes der Geschwindigkeit, sowie Strecke und Richtung der Fahrt, welche im Block SenVx Laengsgeschwindigkeit verwendet werden. Hierzu werden zunächst über Digitaleingänge der dSpace Karte (Block MASTER BIT IN) die Pegel der Hallsensoren eingelesen. | |||
Diese werden genutzt um mit der Matlab Funktion <code>get_direction</code> die Richtung der Fahrt zu bestimmen. Diese wird in die nächste Funktion <code>meas_accel_rtlib</code> eingeführt. In dieser Funktion Erfolg die Berechnung der Geschwindigkeit und des zurückgelegten Weges. Die Fahrtrichtung, sowie die Werte für Geschwindigkeit und Weg werden als Outputs (4,5 und 7) herausgeführt um sie im Modell <code>SenVx-Laengsgeschwindigkeit</code> zu verwenden. | |||
== Praktische Aufgabe == | == Praktische Aufgabe == | ||
{|align="right" | {|align="right" | ||
|[[Datei: | |[[Datei:Testaufbau Laengsgeschwindigkeit.png|mini|rechts|Abbildung 5: Aufbau zum Testen der Langsgeschwindigkeit]] | ||
|[[Datei:Screenshot Steuerung ControlDesk.png|mini| | |[[Datei:Screenshot Steuerung ControlDesk.png|mini|rechts|Abbildung 6: Steuerung der Fahrgeschwindigkeit mithilfe eines Layouts in Control Desks]] | ||
|} | |} | ||
Für die praktische Aufgabe müssen alle Messwerte der Messkette, beginnend am Primärsensor gemessen werden. | Für die praktische Aufgabe müssen alle Messwerte der Messkette, beginnend am Primärsensor gemessen werden. | ||
Hierfür wird eine Teststrecke abgefahren. Der Gliedermaßstab (siehe Abb. | Hierfür wird eine Teststrecke abgefahren. Der Gliedermaßstab (siehe Abb. 5) visualisiert eine Strecke von 2 Metern. Das Fahrzeug ist mit einem kleinen Abstand zu diesem aufgestellt, damit beschleunigt werden kann und auf der Höhe des Gliedermaßstabs bereits die Sollgeschwindigkeit erreicht ist. Sobald das Fahrzeug losfährt und die Höhe des Gliedermaßstabs erreicht hat, wird die Zeit bis zum Ende der 2 Meter mit einer Stoppuhr gemessen. | ||
Zuerst wurde diese Fahrt mit der Fernbedienung gesteuert. Dabei ist man auf das Problem gestoßen, dass es nahezu unmöglich ist, mit der Fernbedienung eine konstante Geschwindigkeit zu fahren. Aus diesem Grund entschied man sich, das ControlDesk zur Steuerung des Autos zu nutzen. Hierfür wird über das ControlDesk eine konstante Geschwindigkeit angegeben (siehe Abb. | Zuerst wurde diese Fahrt mit der Fernbedienung gesteuert. Dabei ist man auf das Problem gestoßen, dass es nahezu unmöglich ist, mit der Fernbedienung eine konstante Geschwindigkeit zu fahren. Aus diesem Grund entschied man sich, das ControlDesk zur Steuerung des Autos zu nutzen. Hierfür wird über das ControlDesk in einem Layout eine konstante Geschwindigkeit angegeben (siehe Abb. 6) Unter dem Slider erkennt man anhand des hellblauen Graphen, dass die Fahrgeschwindigkeit nahezu konstant ist. | ||
Diese Messung | Diese Messung wurde mehrmals wiederholt und den Mittelwert der gemessenen Zeit genommen, um einen möglichst genauen Wert zu erhalten. Während der Messungen wurden parallel die Variablen der Messkette vom Primärsensor bis zur Geschwindigkeit mit den ControlDesk aufgezeichnet und in einer Datei für die weitere Auswertung abgespeichert. Als Referenz werden die 2 Meter des Gliedermaßstabs genommen. Für die Zeit wurden im Schnitt 2,5 Sekunden gestoppt. Daraus ergibt sich eine Referenzgeschwindigkeit von <math>0,8 m/s</math>. | ||
== Signalanalyse == | == Signalanalyse == | ||
=== Signalanalyse mit Controldesk === | |||
Für die Signalanalyse wird der mit Controldesk festgelegten Geschwindigkeit wird die im vorangegangen Abschnitt verwendete Referenzgeschwindigkeit von <math>0,8 m/s</math> verwendet. Es wurden alle Geschwindigkeitswerte gegen den Referenzwert geplottet, sowie die zurückgelegte Strecke <code>SenVx_Sx_K_f64</code> und die Hallsensorpegel für die Sensoren A,B und C. | |||
==== Geschwindigkeitsmessung mit Referenzwert ==== | |||
[[Datei:Geschwindigkeitsmessung Referenzwert.jpg|thumb|800px|Abbildung 7: Geschwindigkeitsmessung mit Referenzwert]] | |||
Die Geschwindigkeitsmessung in Abbildung 7 zeigt, dass die Geschwindigkeitswerte bei gleichbleibender Geschwindigkeit stark verrauscht sind bis die Begrenzung der Rate auf 1m/s² einsetzt (SenVx_Vx_RateBegrenzt_f64). Desweiteren liegen die Geschwindigkeitswerte im Konstanten Geschwindigkeitsbereich leicht über dem Referenzwert. Erst nach dem Tiefpassfilter <code>SenVx_vx_K_f64</code> wird ein Geschwindigkeitswert im Bereich des Referenzwertes erfasst. Der Spitze Verlauf des letzten Graphen entspricht jedoch nicht dem tatsächlichen Geschwindigkeitsverlauf. Dies könnte an einem falsch Parametrierten Tiefpassfilter (PT1) liegen. Des Weiteren sind die Werte nachdem <math>vx = 0</math> überprüft wurde ab <code>SenVx_vx_KorrNull_f64</code> stark verrauscht. | |||
==== Streckenmessung ==== | |||
[[Datei:Streckenmessung.jpg|thumb|zentriert|600px|Abbildung 8: Geschwindigkeitsmessung mit Referenzwert]] | |||
Die Streckenmessung in Abbildung 8 ergibt eine gefahrene Strecke von ca. 3m und entspricht somit, wenn die Beschleunigungs- und Abbremsstrecke berücksichtigt wird der tatsächlichen Messstrecke. Auffällig ist,dass die Strecke bei Vorwärtsfahrt negativ gezählt wird. | |||
====Hallsensormessung ==== | |||
[[Datei:Hallsensormessung Verbessert.jpg|thumb|zentriert|800px|Abbildung 9: Messung der Hallsensorpegel]] | |||
Abbildung 9 zeigt die Pegel der drei Hallsensoren. Der Verlauf der Hallpegel ist erwartungsgemäß. | |||
=== Signalanalyse mit Fernbedienung (dynamisch) === | |||
Die dynamische Signalanalyse zeigt die Geschwindigkeitswerte, sowie die gefahrene Strecke und den Verlauf des Fahrtrichtungsbits <code>Sen_Vx_Fahrtrichtung_bit</code>. Hierzu wurde mit der Fernbedienung einmal vorwärts und einmal rückwärts gefahren. | |||
==== Geschwindigkeitsmessung ==== | |||
[[Datei:Geschwindigkeitsmessung mit Fernbedienung verbessert.jpg|thumb|rechts|600px|Abbildung 10: Geschwindigkeitsmessung mit Fernbedienung]] | |||
Beim Messen von inkonstanten Geschwindigkeiten kommt es wie Abbildung 10 zeigt zu einer Fehlerhaften Filterung von Messwerten. Ab der Vierten Aufzeichnung <code>SenVx_vxRateBegrenzt_f64</code> sind fast alle Geschwindigkeitswerte herausgefiltert, sodass auch alle Folgemessungen bis auf kleine Ausreißer keine Geschwindigkeit mehr anzeigen. Damit wird deutlich, dass bei Fahrt mit inkonstanter Geschwindigkeit das Rauschen der Messung so groß ist, dass die Geschwindigkeitswerte vollständig durch die Ratenbegrenzung herausgefiltert werden. Die Rückwärtsfahrt wird nach der Richtungsbestimmung als negativer Wert im Graph angezeigt, der Geschwindigkeitswert ist jedoch zu klein, was auf den Vorangegangen Punkt zurückzuführen ist. | |||
==== Streckenmessung ==== | |||
[[Datei:Streckenmessung mit Fernbedienung.jpg|thumb|zentriert|600px|Abbildung 11: Streckenmessung mit Fernbedienung]] | |||
Die Streckenmessung in Abbildung 11 zeigt die gleiche Auffälligkeit wie bei der Messung mit ControlDesk. Ebenso zeigt diese Messung, dass bei einer Rückwärtsfahrt vorwärts gemessen wird. Die Streckenmessung muss also invertiert werden. | |||
==== Fahrtrichtungsbit ==== | |||
[[Datei:Aufzeichnung Fahrtrichtungsbit.jpg|thumb|zentriert|600px|Abbildung 12: Fahrtrichtungsbit bei Vorwärts-/Rückwärtsfahrt]] | |||
Das Fahrtrichtungsbit steht bei Rückwärtsfahrt auf 1 und bei Vorwärtsfahrt auf 0 (siehe Abb. 12). | |||
== Liste offener Punkte (LOP) == | == Liste offener Punkte (LOP) == | ||
{| class="wikitable" | |||
|+ style = "text-align: left"|Tabelle 1: Liste offener Punkte (LOP) | |||
! style="font-weight: bold;" | # | |||
! style="font-weight: bold;" | Problem | |||
! style="font-weight: bold;" | Analyse | |||
! style="font-weight: bold;" | Maßnahme | |||
! style="font-weight: bold;" | Freigabe | |||
! style="font-weight: bold;" | Wirksamkeit | |||
! style="font-weight: bold;" | Dokumentation | |||
|- | |||
| 1 || Wert zurückgelegter Strecke wird negativ gezählt || Vorzeichen bei Streckenberechnung falsch || Invertieren von SenVx_sx_K_f64 || Problem in <code>SEN_Geschwindigkeit</code>lösen || || | |||
|- | |||
| 2 || Geschwindigkeitswerte werden herausgefiltert || Ratenbegrenzung filtert Werte weg || Ratenbegrenzung durch Median-Filter ersetzen || ??? || || | |||
|- | |||
| 3 || Gerichtete Geschwindigkeit bei Rückwärtsfahrt wird nicht angezeigt || Ratenbegrenzung filtert vorher zu stark || Siehe Punkt 2 || ??? || || | |||
|- | |||
| 4 || Falscher Geschwindigkeitsverlauf bei SenVx_vx_K_f64 || PT1 filtert zu stark || Frequenz des PT1 anders Parametrieren oder gegen Median-Filter ersetzen || Vorschlag? || || | |||
|- | |||
| 5 || Geschwindigkeitswerte oberhalb des Referenzwertes || Berechnung der Geschwindigkeit weicht von Realwert ab (Schlupf?) || Geschwindigkeitsrohwert neu berechnen || Analyse || || | |||
|- | |||
| 6 || Geschwindigkeitswerte ab SenVx_vxKorrNull_f64 stark verrauscht || Block zur Überprüfung von vx = 0 fehlerhaft || Block überarbeiten || Block löschen || || | |||
|- | |||
| 7 || Beschriftung entspricht nicht den Vorgaben (z. B. Abb. 3 SPEED) || || Namen an Vorgaben anpassen und fehlende Beschriftungen und Kommentare ergänzen, Magic Number in Parameterdatei ||x || | |||
|- | |||
| 8 || Erkennung vx=0 funktioniert gar nicht und verschlechtert das nachfolgende Signal|| Fehlerhafte Berechnung || Block löschen || || || | |||
|- | |||
| 9|| min/max-Begrenzung nicht erläutert.|| || Im Artikel genauer erläutern || X || || [https://wiki.hshl.de/wiki/index.php/AF:_Laengsgeschwindigkeit_(SenVx)#Sensorblock_-_SenVx-Laengsgeschwindigkeit Hier erläutert] | |||
|- | |||
| 10|| Wozu dient der Rate Limiter? Magic Numbers → PAR|| || Rate Limiter erklären ||x || || [https://wiki.hshl.de/wiki/index.php/AF:_Laengsgeschwindigkeit_(SenVx)#Sensorblock_-_SenVx-Laengsgeschwindigkeit Hier erläutert] | |||
|} | |||
Punkt 1:Die Ausgabe des Streckenwertes in Sen-Geschwindigkeit wurde invertiert | |||
Punkt 2: | |||
Punkt 3:Durch Löschen des Blockes Überprüfung von vx=0 sowie die Anpassung der Richtungserkennung wurde die Rückwärtsfahrt korrekt ausgegeben | |||
Punkt 4:Durch entfernen des Blockes Überprüfung von vx=0 ergab sich ein besserer Verlauf am Ausgang des PT1, somit ist dieser nicht fehlerhaft parametriert. | |||
Punkt 5:Erneute Messung mit langsamerer Geschwindigkeit ergab eine bessere Übereinstimmung mit dem Referenzwert. Somit ist die Geschwindigkeitsberechnung korrekt. | |||
Punkt 6: | |||
Block zur Überprüfung von vx=0 wurde aus dem Modell Sen-Vx Laengsgeschwindigkeit entfernt. | |||
Punkt 7: | |||
Variablen wurden nach der Norm benannt. | |||
Punkt 8: | |||
=== Dokumentation der Softwareänderungen === | |||
Die Punkte 4 und 6 aus der LOP wurden im Simulink Modell umgesetzt (siehe Abb. 13) | |||
[[Datei:Screenshot geändertes Softwaremodell.png|thumb|zentriert|1600px|Abbildung 13: Abbildung des überarbeiteten Softwaremodells aus Simulink]] | |||
===Nachweis der Wirksamkeit === | |||
====Vergleich der Geschwindigkeitswerte==== | |||
[[Datei:Vergleich_von_SenVx_vxBegrenzt_f64.jpg|thumb|zentriert|800px|Abbildung 14: Aufheben der Verrauschten Werte nach Erkennung vx = 0]] | |||
Abbildung 14 zeigt im linken Graphen den stark verrauschten Geschwindigkeitsverlauf, welcher sich nach der Erkennung von vx = 0 ergibt. Der Rechte Graph zeigt | |||
den unverrauschten Geschwindigkeitsverlauf nachdem der Block entfernt wurde. Nachteilig ist hier, dass die Geschwindigkeit nach der Messfahrt bei Sekunde 20 nicht wieder auf 0 gesetzt wird sondern auf einem Konstantwert bestehen bleibt. Dieser Fehler wird im Block Sen Geschwindigkeit behoben. | |||
[[Datei:Vergleich_von_SenVx_vx_K_f64.jpg|thumb|zentriert|800px|Abbildung 15: Geschwindigkeitsverlauf vor- und nach der Änderung]] | |||
Abbildung 15 zeigt den Vergleich der Geschwindigkeitsverläufe nach dem PT1 Filter. Um den Referenzwert besser bestimmen zu können wurde hierzu eine neue Messung mit einer längeren Beschleunigungsstrecke und einer geringeren Geschwindigkeit aufgenommen. Beide Messgraphen treffen dabei in guter Näherung den Referenzwert, dennoch beginnt der Geschwindigkeitsanstieg bei der alten Messung (blauer Graph) später. Dies ist darauf zurückzuführen, das durch die zuvor stark verrauschten Werte Teile der Messung weggefiltert werden. Abbildung 15 zeigt dies noch deutlicher. Auch hier bleibt die Geschwindigkeit am Ende der Fahrt bei einem Konstantwert stehen, da der Rohwert nicht auf 0 gesetzt wird. | |||
[[Datei:Vergleich_Geschwindigkeit_Dynamische_Messung.jpg|thumb|zentriert|800px|Abbildung 16: Geschwindigkeitsverlauf der Messung mit Fernbedienung]] | |||
Abbildung 16 zeigt den Geschwindigkeitsverlauf bei der Messung mit der Fernbedienung. Der alte Verlauf war dabei so stark verrauscht, dass nahezu der Gesamte Verlauf weggefiltert wurde. Nach der Änderung der Erkennung vx = 0 und der Invertierung der Fahrtrichtungserkennung stimmt der Verlauf so wie die Richtung der Geschwindigkeit. | |||
====Vergleich der Streckenmessung ==== | |||
[[Datei:Vergleich_der_Wegstrecke.jpg|thumb|zentriert|800px|Abbildung 17: Verlauf der gefahrenen Wegstrecke]] | |||
Abbildung 17 verdeutlicht, dass eine Invertierung des Wertes SenVx_sx_K_f_64 ausreicht um die Wegstrecke richtigherum zu zählen. | |||
== Zusammenfassung == | == Zusammenfassung == | ||
Zusammenfassend lassen sich Messdaten für die Geschwindigkeit ermitteln welche den groben Verlauf der Fahrt wiedergeben können. Jedoch ist durch falsch parametrierte Filter und eine fehlerhafte Erkennung von vx = 0 die Messung zum Teil stark verrauscht oder Messwerte werden vollständig herausgefiltert. Um dies zu beheben muss das Modell SenVx-Laengsgeschwindigkeit überarbeitet werden. Die Ausgabe der Streckenmessung muss invertiert werden. Die Hallsensoren sind voll funktionsfähig und arbeiten Erwartungsgemäß. | |||
== Dokumentation in SVN == | == Dokumentation in SVN == | ||
* Link zu Messdaten | * Link zu Messdaten: [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Workshops/Abgaben/Louis%20&%20Can/Lernzielkontrolle01/Messungen_ControlDesk/ Messdaten] | ||
* Link zur MATLAB<sup>®</sup>-Auswertung | * Link zur MATLAB<sup>®</sup>-Auswertung: [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Workshops/Abgaben/Louis%20&%20Can/Lernzielkontrolle01/ Matlab Auswertung] | ||
* Datenblatt LRP Vector X12 StockSpec: [https://www.lrp.cc/de/produkt/vector-x12-brushless-stockspec-175t/ LPR Vector X12 StockSpec] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | [[SDE-Team 2023/24]] | [[SoSe23_-_Praktikum_Systementwurf_-_Lernzielkontrolle_1|Lernzielkontrolle 1]] | → zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | [[SDE-Team 2023/24]] | [[SoSe23_-_Praktikum_Systementwurf_-_Lernzielkontrolle_1|Lernzielkontrolle 1]] |
Aktuelle Version vom 11. Mai 2023, 11:05 Uhr
Autoren: Louis Holtapel & Can Nen
Im autonomen Fahrzeug ist der Hall-Sensor ein unverzichtbarer Bestandteil der Sensorik. Er ist dafür zuständig, die Fahrzeuggeschwindigkeit zu ermitteln und somit auch die zurückgelegte Strecke zu berechnen. Der Sensor befindet sich am Antriebsmotor und ermöglicht es zusätzlich, die Fahrtrichtung zu bestimmen. Diese Informationen sind wesentliche Komponenten des Regelkreises für die Bahnplanung und Spurführung. Die Messung der zurückgelegten Strecke ist auch für den Einparkalgorithmus von Bedeutung, da sie zur Bestimmung der Parklückengröße benötigt wird.
Primärsensor
Als Primärsensor wird ein Hall-Sensor verwendet. Die Hall-Sensorik ist in dem Motor LRP Vector 22 integriert. Vorher wurde der LRP Vector X12 StockSpec 17.5T (siehe Abb. 1) genutzt, welcher identisch funktioniert.
Über den Motor mit integrierter Hall-Sensorik ist bereits ein Artikel vorhanden, wo dieser genau erläutert wird: Hall-Sensor
Messkette
Systementwurf
Die drei Hall-Sensoren sind im Antriebsmotor integriert.
Der Sensoranschlussplan, die Signalverarbeitung und die Hardwareanbindung, sprich die Schnittstelle zur DS1104 wird bereits ausführlich in einem anderen Artikel erläutert.
Link zum passenden Kapitel: Hall-Sensor
Sensorblock - SenVx-Laengsgeschwindigkeit
In dem Modell für die Geschwindigkeitsermittlung wird zuallererst überprüft, ob die Geschwindigkeit bei vx=0 ist. Dies erfolgt in dem ersten grauen Block auf der linken Seite. Hierfür wird der aktuelle Geschwindigkeitsrohwert mit den letzten 5 Werten verglichen. Über den Vergleich dieser Werte kann man bestimmen, ob das Auto aktuell steht oder sich in Bewegung befindet. Nur wenn das Auto sich bewegt wird das Signal weitergeleitet. Dieses Signal läuft anschließend über die min/max-Begrenzung, damit das Auto nicht schneller als die zugelassene Geschwindigkeit fährt. Dies verhindert vor allem, dass bei einer Kollision mit zu hoher Geschwindigkeit kein Schaden am Fahrzeug erfolgen kann. Wenn der Geschwindigkeitsrohwert über der min/max-Begrenzung liegt, wird dieser auf die Begrenzung reduziert. Im selben Zug wird die Änderungsrate (Beschleunigung) auf reduziert, dies wird im folgenden als Rate-Limiter bezeichnet. Über die Variable WAY_DIRECTION
wird im zweiten grauen Block die Fahrtrichtung festgelegt. Wenn die Fahrtrichtung rückwärts ist, bekommt die Geschwindigkeit ein negatives Vorzeichen.
Hier werden die Abbildungen der Simulink Modell für die Längsgeschwindigkeit dargestellt (siehe Abb. 3+4).
Sensorblock - Sen-Geschwindigkeit
Das Modell Sen-Geschwindigkeit dient der Bestimmung des Rohwertes der Geschwindigkeit, sowie Strecke und Richtung der Fahrt, welche im Block SenVx Laengsgeschwindigkeit verwendet werden. Hierzu werden zunächst über Digitaleingänge der dSpace Karte (Block MASTER BIT IN) die Pegel der Hallsensoren eingelesen.
Diese werden genutzt um mit der Matlab Funktion get_direction
die Richtung der Fahrt zu bestimmen. Diese wird in die nächste Funktion meas_accel_rtlib
eingeführt. In dieser Funktion Erfolg die Berechnung der Geschwindigkeit und des zurückgelegten Weges. Die Fahrtrichtung, sowie die Werte für Geschwindigkeit und Weg werden als Outputs (4,5 und 7) herausgeführt um sie im Modell SenVx-Laengsgeschwindigkeit
zu verwenden.
Praktische Aufgabe
Für die praktische Aufgabe müssen alle Messwerte der Messkette, beginnend am Primärsensor gemessen werden. Hierfür wird eine Teststrecke abgefahren. Der Gliedermaßstab (siehe Abb. 5) visualisiert eine Strecke von 2 Metern. Das Fahrzeug ist mit einem kleinen Abstand zu diesem aufgestellt, damit beschleunigt werden kann und auf der Höhe des Gliedermaßstabs bereits die Sollgeschwindigkeit erreicht ist. Sobald das Fahrzeug losfährt und die Höhe des Gliedermaßstabs erreicht hat, wird die Zeit bis zum Ende der 2 Meter mit einer Stoppuhr gemessen.
Zuerst wurde diese Fahrt mit der Fernbedienung gesteuert. Dabei ist man auf das Problem gestoßen, dass es nahezu unmöglich ist, mit der Fernbedienung eine konstante Geschwindigkeit zu fahren. Aus diesem Grund entschied man sich, das ControlDesk zur Steuerung des Autos zu nutzen. Hierfür wird über das ControlDesk in einem Layout eine konstante Geschwindigkeit angegeben (siehe Abb. 6) Unter dem Slider erkennt man anhand des hellblauen Graphen, dass die Fahrgeschwindigkeit nahezu konstant ist.
Diese Messung wurde mehrmals wiederholt und den Mittelwert der gemessenen Zeit genommen, um einen möglichst genauen Wert zu erhalten. Während der Messungen wurden parallel die Variablen der Messkette vom Primärsensor bis zur Geschwindigkeit mit den ControlDesk aufgezeichnet und in einer Datei für die weitere Auswertung abgespeichert. Als Referenz werden die 2 Meter des Gliedermaßstabs genommen. Für die Zeit wurden im Schnitt 2,5 Sekunden gestoppt. Daraus ergibt sich eine Referenzgeschwindigkeit von .
Signalanalyse
Signalanalyse mit Controldesk
Für die Signalanalyse wird der mit Controldesk festgelegten Geschwindigkeit wird die im vorangegangen Abschnitt verwendete Referenzgeschwindigkeit von verwendet. Es wurden alle Geschwindigkeitswerte gegen den Referenzwert geplottet, sowie die zurückgelegte Strecke SenVx_Sx_K_f64
und die Hallsensorpegel für die Sensoren A,B und C.
Geschwindigkeitsmessung mit Referenzwert
Die Geschwindigkeitsmessung in Abbildung 7 zeigt, dass die Geschwindigkeitswerte bei gleichbleibender Geschwindigkeit stark verrauscht sind bis die Begrenzung der Rate auf 1m/s² einsetzt (SenVx_Vx_RateBegrenzt_f64). Desweiteren liegen die Geschwindigkeitswerte im Konstanten Geschwindigkeitsbereich leicht über dem Referenzwert. Erst nach dem Tiefpassfilter SenVx_vx_K_f64
wird ein Geschwindigkeitswert im Bereich des Referenzwertes erfasst. Der Spitze Verlauf des letzten Graphen entspricht jedoch nicht dem tatsächlichen Geschwindigkeitsverlauf. Dies könnte an einem falsch Parametrierten Tiefpassfilter (PT1) liegen. Des Weiteren sind die Werte nachdem überprüft wurde ab SenVx_vx_KorrNull_f64
stark verrauscht.
Streckenmessung
Die Streckenmessung in Abbildung 8 ergibt eine gefahrene Strecke von ca. 3m und entspricht somit, wenn die Beschleunigungs- und Abbremsstrecke berücksichtigt wird der tatsächlichen Messstrecke. Auffällig ist,dass die Strecke bei Vorwärtsfahrt negativ gezählt wird.
Hallsensormessung
Abbildung 9 zeigt die Pegel der drei Hallsensoren. Der Verlauf der Hallpegel ist erwartungsgemäß.
Signalanalyse mit Fernbedienung (dynamisch)
Die dynamische Signalanalyse zeigt die Geschwindigkeitswerte, sowie die gefahrene Strecke und den Verlauf des Fahrtrichtungsbits Sen_Vx_Fahrtrichtung_bit
. Hierzu wurde mit der Fernbedienung einmal vorwärts und einmal rückwärts gefahren.
Geschwindigkeitsmessung
Beim Messen von inkonstanten Geschwindigkeiten kommt es wie Abbildung 10 zeigt zu einer Fehlerhaften Filterung von Messwerten. Ab der Vierten Aufzeichnung SenVx_vxRateBegrenzt_f64
sind fast alle Geschwindigkeitswerte herausgefiltert, sodass auch alle Folgemessungen bis auf kleine Ausreißer keine Geschwindigkeit mehr anzeigen. Damit wird deutlich, dass bei Fahrt mit inkonstanter Geschwindigkeit das Rauschen der Messung so groß ist, dass die Geschwindigkeitswerte vollständig durch die Ratenbegrenzung herausgefiltert werden. Die Rückwärtsfahrt wird nach der Richtungsbestimmung als negativer Wert im Graph angezeigt, der Geschwindigkeitswert ist jedoch zu klein, was auf den Vorangegangen Punkt zurückzuführen ist.
Streckenmessung
Die Streckenmessung in Abbildung 11 zeigt die gleiche Auffälligkeit wie bei der Messung mit ControlDesk. Ebenso zeigt diese Messung, dass bei einer Rückwärtsfahrt vorwärts gemessen wird. Die Streckenmessung muss also invertiert werden.
Fahrtrichtungsbit
Das Fahrtrichtungsbit steht bei Rückwärtsfahrt auf 1 und bei Vorwärtsfahrt auf 0 (siehe Abb. 12).
Liste offener Punkte (LOP)
# | Problem | Analyse | Maßnahme | Freigabe | Wirksamkeit | Dokumentation |
---|---|---|---|---|---|---|
1 | Wert zurückgelegter Strecke wird negativ gezählt | Vorzeichen bei Streckenberechnung falsch | Invertieren von SenVx_sx_K_f64 | Problem in SEN_Geschwindigkeit lösen |
||
2 | Geschwindigkeitswerte werden herausgefiltert | Ratenbegrenzung filtert Werte weg | Ratenbegrenzung durch Median-Filter ersetzen | ??? | ||
3 | Gerichtete Geschwindigkeit bei Rückwärtsfahrt wird nicht angezeigt | Ratenbegrenzung filtert vorher zu stark | Siehe Punkt 2 | ??? | ||
4 | Falscher Geschwindigkeitsverlauf bei SenVx_vx_K_f64 | PT1 filtert zu stark | Frequenz des PT1 anders Parametrieren oder gegen Median-Filter ersetzen | Vorschlag? | ||
5 | Geschwindigkeitswerte oberhalb des Referenzwertes | Berechnung der Geschwindigkeit weicht von Realwert ab (Schlupf?) | Geschwindigkeitsrohwert neu berechnen | Analyse | ||
6 | Geschwindigkeitswerte ab SenVx_vxKorrNull_f64 stark verrauscht | Block zur Überprüfung von vx = 0 fehlerhaft | Block überarbeiten | Block löschen | ||
7 | Beschriftung entspricht nicht den Vorgaben (z. B. Abb. 3 SPEED) | Namen an Vorgaben anpassen und fehlende Beschriftungen und Kommentare ergänzen, Magic Number in Parameterdatei | x | |||
8 | Erkennung vx=0 funktioniert gar nicht und verschlechtert das nachfolgende Signal | Fehlerhafte Berechnung | Block löschen | |||
9 | min/max-Begrenzung nicht erläutert. | Im Artikel genauer erläutern | X | Hier erläutert | ||
10 | Wozu dient der Rate Limiter? Magic Numbers → PAR | Rate Limiter erklären | x | Hier erläutert |
Punkt 1:Die Ausgabe des Streckenwertes in Sen-Geschwindigkeit wurde invertiert
Punkt 2:
Punkt 3:Durch Löschen des Blockes Überprüfung von vx=0 sowie die Anpassung der Richtungserkennung wurde die Rückwärtsfahrt korrekt ausgegeben
Punkt 4:Durch entfernen des Blockes Überprüfung von vx=0 ergab sich ein besserer Verlauf am Ausgang des PT1, somit ist dieser nicht fehlerhaft parametriert.
Punkt 5:Erneute Messung mit langsamerer Geschwindigkeit ergab eine bessere Übereinstimmung mit dem Referenzwert. Somit ist die Geschwindigkeitsberechnung korrekt.
Punkt 6: Block zur Überprüfung von vx=0 wurde aus dem Modell Sen-Vx Laengsgeschwindigkeit entfernt.
Punkt 7: Variablen wurden nach der Norm benannt.
Punkt 8:
Dokumentation der Softwareänderungen
Die Punkte 4 und 6 aus der LOP wurden im Simulink Modell umgesetzt (siehe Abb. 13)
Nachweis der Wirksamkeit
Vergleich der Geschwindigkeitswerte
Abbildung 14 zeigt im linken Graphen den stark verrauschten Geschwindigkeitsverlauf, welcher sich nach der Erkennung von vx = 0 ergibt. Der Rechte Graph zeigt den unverrauschten Geschwindigkeitsverlauf nachdem der Block entfernt wurde. Nachteilig ist hier, dass die Geschwindigkeit nach der Messfahrt bei Sekunde 20 nicht wieder auf 0 gesetzt wird sondern auf einem Konstantwert bestehen bleibt. Dieser Fehler wird im Block Sen Geschwindigkeit behoben.
Abbildung 15 zeigt den Vergleich der Geschwindigkeitsverläufe nach dem PT1 Filter. Um den Referenzwert besser bestimmen zu können wurde hierzu eine neue Messung mit einer längeren Beschleunigungsstrecke und einer geringeren Geschwindigkeit aufgenommen. Beide Messgraphen treffen dabei in guter Näherung den Referenzwert, dennoch beginnt der Geschwindigkeitsanstieg bei der alten Messung (blauer Graph) später. Dies ist darauf zurückzuführen, das durch die zuvor stark verrauschten Werte Teile der Messung weggefiltert werden. Abbildung 15 zeigt dies noch deutlicher. Auch hier bleibt die Geschwindigkeit am Ende der Fahrt bei einem Konstantwert stehen, da der Rohwert nicht auf 0 gesetzt wird.
Abbildung 16 zeigt den Geschwindigkeitsverlauf bei der Messung mit der Fernbedienung. Der alte Verlauf war dabei so stark verrauscht, dass nahezu der Gesamte Verlauf weggefiltert wurde. Nach der Änderung der Erkennung vx = 0 und der Invertierung der Fahrtrichtungserkennung stimmt der Verlauf so wie die Richtung der Geschwindigkeit.
Vergleich der Streckenmessung
Abbildung 17 verdeutlicht, dass eine Invertierung des Wertes SenVx_sx_K_f_64 ausreicht um die Wegstrecke richtigherum zu zählen.
Zusammenfassung
Zusammenfassend lassen sich Messdaten für die Geschwindigkeit ermitteln welche den groben Verlauf der Fahrt wiedergeben können. Jedoch ist durch falsch parametrierte Filter und eine fehlerhafte Erkennung von vx = 0 die Messung zum Teil stark verrauscht oder Messwerte werden vollständig herausgefiltert. Um dies zu beheben muss das Modell SenVx-Laengsgeschwindigkeit überarbeitet werden. Die Ausgabe der Streckenmessung muss invertiert werden. Die Hallsensoren sind voll funktionsfähig und arbeiten Erwartungsgemäß.
Dokumentation in SVN
- Link zu Messdaten: Messdaten
- Link zur MATLAB®-Auswertung: Matlab Auswertung
- Datenblatt LRP Vector X12 StockSpec: LPR Vector X12 StockSpec
→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24 | Lernzielkontrolle 1