AF: Laengsgeschwindigkeit (SenVx): Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(60 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 8: Zeile 8:


== Primärsensor ==
== Primärsensor ==
Als Primärsensor wird ein Hall-Sensor verwerndet. Die Hall-Sensorik ist in dem Motor LRP Vector X12 StockSpec 17.5T (siehe Abb. 1) integriert.
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 intergrierter Hall-Sensorik ist bereits ein Artikel vorhanden, wo dieser genau erläutert wird: [[Hall-Sensor]]
Über den Motor mit integrierter Hall-Sensorik ist bereits ein Artikel vorhanden, wo dieser genau erläutert wird: [[Hall-Sensor]]


== Messkette ==
== Messkette ==
Zeile 16: Zeile 17:


== Systementwurf ==
== Systementwurf ==
Wie bereits erläutert ist die Hall-Sensorik im Antriebsmotor integriert.
Die drei Hall-Sensoren sind im Antriebsmotor integriert.


Der Sensoranschlussplan, die Signalverarbeitung udn die Hardwareanbindung, sprich die Schnittstelle zur DS1104 wird bereits ausführlich in einem anderen Artikel erläutert.
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: [https://https://wiki.hshl.de/wiki/index.php/AMR_2022#Hall-Sensor Hall-Sensor]
Link zum passenden Kapitel: [https://wiki.hshl.de/wiki/index.php/AMR_2022#Hall-Sensor Hall-Sensor]


== Sensorblock - SenVx-Laengsgeschwindigkeit ==
=== Sensorblock - SenVx-Laengsgeschwindigkeit ===
[[Datei:Modell Laengsgeschwindigkeit.png|gerahmt|zentriert|Abbildung 2: Modell Längsgeschwindigkeit]]
[[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. Wenn der Geschwindigkeitsrohwert über der min/max-Begrenzung liegt, wird dieser auf die Begrenzung reduziert. Im selben Zug wird die Änderungsrate (Beschleunigung) auf 1m/ss reduziert. Ü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.
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.


In Abbildung 2 wird das Simulink Modell für die Längsgeschwindigkeit dargestellt.
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:Testaufbau Laengsgeschwindigkeit.png|mini|rechts|Abbildung 3: Aufbau zum Testen der Langsgeschwindigkeit]]
  |[[Datei:Testaufbau Laengsgeschwindigkeit.png|mini|rechts|Abbildung 5: Aufbau zum Testen der Langsgeschwindigkeit]]
  |[[Datei:Screenshot Steuerung ControlDesk.png|mini|zentriert|Abbildung 4: Steuerung der Fahrgeschwindigkeit mithilfe eines Layouts in Control Desks]]
  |[[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. 3) 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.  
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. 4) Unter dem Slider erkennt man anhand des hellblauen Graphen, dass die Fahrgeschwindigkeit nahezu konstant ist.  
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 0,8 m/s.
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 ===
=== Signalanalyse mit Controldesk ===
Für die Signalanalyse wird der mit Controldesk festgelegten Geschwindigkeit wird die im vorangegangen Abschnitt verwendete Referenzgeschwindigkeit von 0,8 m/s 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.  
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 ====
==== Geschwindigkeitsmessung mit Referenzwert ====
[[Datei:Geschwindigkeitsmessung mit Referenzwert.jpg|thumb|600px|Abbildung 5: Geschwindigkeitsmessung mit Referenzwert]]
[[Datei:Geschwindigkeitsmessung Referenzwert.jpg|thumb|800px|Abbildung 7: Geschwindigkeitsmessung mit Referenzwert]]
Die Geschwindigkeitsmessung in Abbildung 5 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 vx = 0 überprüft wurde (ab SenVx_vx_KorrNull_f64) stark verrauscht.
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 ====




==== Streckenmessung ====


[[Datei:Streckenmessung.jpg|thumb|zentriert|600px|Abbildung 6: Geschwindigkeitsmessung mit Referenzwert]]
[[Datei:Streckenmessung.jpg|thumb|zentriert|600px|Abbildung 8: Geschwindigkeitsmessung mit Referenzwert]]
Die Streckenmessung in Abbildung 6 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.
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 ====
====Hallsensormessung ====
Zeile 62: Zeile 76:




[[Datei:Hallsensormessung.jpg|thumb|zentriert|600px|Abbildung 7: Messung der Hallsensorpegel]]
[[Datei:Hallsensormessung Verbessert.jpg|thumb|zentriert|800px|Abbildung 9: Messung der Hallsensorpegel]]
Abbildung 7 zeigt die Pegel der drei Hallsensoren. Der Verlauf der Hallpegel ist erwartungsgemäß.
Abbildung 9 zeigt die Pegel der drei Hallsensoren. Der Verlauf der Hallpegel ist erwartungsgemäß.






=== Signalanalyse mit Fernbedienung (dynamisch) ===
=== 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.
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.
 
 
 
 
 




==== Geschwindigkeitsmessung ====


[[Datei:Geschwindigkeitsmessung Fernbedienung.jpg|thumb|rechts|600px|Abbildung 8: Geschwindigkeitsmessung mit Fernbedienung]]
Beim Messen von inkonstanten Geschwindigkeiten kommt es wie Abbildung 8 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 ====
==== Streckenmessung ====
[[Datei:Streckenmessung mit Fernbedienung.jpg|thumb|zentriert|600px|Abbildung 9: Streckenmessung mit Fernbedienung]]
[[Datei:Streckenmessung mit Fernbedienung.jpg|thumb|zentriert|600px|Abbildung 11: Streckenmessung mit Fernbedienung]]
Die Streckenmessung in Abbildung 9 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.
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 ====
==== Fahrtrichtungsbit ====
[[Datei:Aufzeichnung Fahrtrichtungsbit.jpg|thumb|zentriert|600px|Abbildung 9: Fahrtrichtungsbit bei Vorwärts-/Rückwärtsfahrt]]
[[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) ==
Zeile 95: Zeile 117:
! style="font-weight: bold;" | Dokumentation
! style="font-weight: bold;" | Dokumentation
|-
|-
| 1 || Wert zurückgelegter Strecke wird negativ gezählt || Vorzeichen bei Streckenberechnung falsch || Invertieren von SenVx_sx_K_f64 || || ||
| 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 || || ||
| 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 || || ||
| 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 || || ||
| 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 || || ||
| 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 || || ||
| 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.&thinsp;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 ==
Der Hall-Sensor ist funktionsfähig. Sämtliche Werte lassen sich plotten und stimmen im groben mit dem Referenzwert überein. Die einzige Ausnahme ist die Messung der gefahrenen Strecke, welche aufsummiert wird und in den negativen Bereich läuft
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 ==

Aktuelle Version vom 11. Mai 2023, 11:05 Uhr

Abbildung 1: Abbildung des LRP Vector X12 StockSpec 17.5T

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

Abbildung 2: Vollständige Messkette der Längsgeschwindigkeitsbestimmung

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

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 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

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 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

Abbildung 5: Aufbau zum Testen der Langsgeschwindigkeit
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. 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

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 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

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

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 Sen_Vx_Fahrtrichtung_bit. Hierzu wurde mit der Fernbedienung einmal vorwärts und einmal rückwärts gefahren.

Geschwindigkeitsmessung

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 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

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

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)

Tabelle 1: 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_Geschwindigkeitlö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)

Abbildung 13: Abbildung des überarbeiteten Softwaremodells aus Simulink

Nachweis der Wirksamkeit

Vergleich der Geschwindigkeitswerte

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.


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.


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

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

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


→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24 | Lernzielkontrolle 1