Offset-Kompensation Gyro Sensor

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Automatische Offset-Kompensation

Die Offset-Kompensation des Gyro Sensors ist in dem Block Signalaufbereitung implementiert. Die Kompensation ist notwendig, da das Signal des Gyro Sensors ein großes Offset besitzt. Außerdem rauscht der Sensor sehr stark um das Offset.

Signalaufbereitung Gyro Sensor

Die Berechnung des Offsets erfolgt über einen Matlab-Funktions-Block. Dem Block werden das Rohsignal SenGier_psip_roh_K_f64, die Tasterbetätigung des roten Taster für den Start des AEP SenTast_AEP_bit (=Taster), die Schalterstellung für Online- oder Offline-Betrieb der Simulation Schalter_offline und das zuletzt berechnete Offset LastOffset übergeben. Ausgegeben wird das berechnete Offset SabGier_offset.

Das Signal bei Betätigung des roten Tasters wird über ein Transport Delay verzögert. Die Verzögerung soll sicherstellen, dass das Fahrzeug ruhig steht. Durch die Betätigung des Tasters wird das Fahrzeug angestoßen und schwingt etwas. Würde man direkt das Offset bestimmen, besteht die Möglichkeit, dass die Schwingung des Fahrzeugs das Offset verfälscht. Durch ein Transport Delay von 5 Sekunden kann garantiert werden, dass das Fahrzeug wieder ruhig steht.

Der erste "Data Type Conversion"-Block ist notwendig, da das Transport Delay im Online-Modus nur mit einem double-Wert arbeiten kann. Im Offlinebetrieb muss der Converter entfernt werden. Anschließend muss für die Matlab-Funktion das Signal jedoch unabhängig vom Betrieb in einen boolean-Wert umgewandelt werden.

Die Matlab-Funktion enthält folgende Befehle:

function SabGier_Offset = Offsetberechnung(Last_Offset, Schalter_offline, Taster, SenGier_psip_roh_K_f64)
if Taster == 1 && Schalter_offline == 0
  Offset = 0;
    for i=1:1000;
        Offset= (Offset+SenGier_psip_roh_K_f64)/2; 
    end    
elseif Schalter_offline == 1
   Offset = 0;
else
   Offset = Last_Offset;    
end
SabGier_Offset = Offset;

Sobald der rote Taster gedrückt wird und sich die Simulation im Onlinebetrieb befindet, wird mit der Offset-Berechnung begonnen. Das Offset wird berechnet, indem der Mittelwert über 1000 Werte bestimmt wird. Für 1000 Schleifendurchgänge wird der aktuelle Messwert des Gyro Sensors SenGier_psip_roh_K_f64 mit dem im vorherigen Schleifendurchlauf berechneten Offset addiert und durch 2 geteilt. Im ersten Schleifendurchlauf wird das Offset zunächst auf 0 gesetzt. Befindet sich die Simulation im Offline-Modus, d.h. Schalter_offline=1, muss kein Offset berechnet werden. Das Offset wird gleich 0 gesetzt. In allen anderen Fälle, d.h. zum Beispiel wenn der Taster nicht mehr betätigt ist, soll das zuletzt berechnete Offset übergeben werden.

Je nach Bedingung wird ein Wert für das Offset bestimmt und abschließend an die Variable SabGier_Offset übergeben. Dieser Ausgabewert wird über den Block Last State wieder in den Eingang hereingeführt und gilt dort als Last_Offset.

Nach der Offsetberechnung wird das berechnete Offset vom Rohsignal abgezogen. Das offset-kompensierte Signal awird anschließend noch über einen PT1-Filter tiefpass-gefiltert, um das Rauschen zu unterdrücken.

Autor: Julia Müller (Diskussion) 15:04, 4. Feb. 2014 (CET)

Test der automatischen Offset-Kompensation

Test 1

Testdurchführung

In diesem Test wurden über 15 Minuten 50 Offsetwerte bestimmt. Dazu wurde der rote Taster zum Start der Offset-Kompensation betätigt. Anschließend wurde der berechnete Offset-Wert abgelesen.

Die abgelesenen Werte befinden sich in folgender Tabelle:

Messung 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Offset in 10,834 10,514 10,738 10,258 10,546 10,930 10,450 10,738 10,227 10,386 10,770 11,089 10,738 10,578 10,610 10,578 10,770 10,514 10,610 10,770


Messung 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Offset in 10,290 10,706 10,099 10,610 10,866 10,482 10,322 10,195 10,578 10,610 10,738 10,258 10,610 10,834 10,386 10,345 11,121 10,610 10,546 11,214


Messung 41 42 43 44 45 46 47 48 49 50
Offset in 11,185 10,578 10,131 10,546 10,354 10,482 10,770 10,674 10,514 10,258


Auswertung
Minimum in 10,099
Maximum in 11,217
Mittelwert in 10,59144

Der Mittelwert des berechneten Offsets von 50 Messungen liegt bei 10,591444 . Dies entspricht einem Wert von 606,85°/s. Betrachtet man nun die Differenzen zwischen Minimum, Maximum und Mittelwert ergeben sich folgende Werte:

Maximum-Mittelwert = 0,6256 = 35,84°/s

Mittelwert-Minimum = 0,492 = 28,214°/s

Maximum-Minimum = 1,118 = 64,057°/s

Die Differenzen zwischen den verschiedenen berechneten Mittelwerten ist sehr groß. Wird ein Mittelwert im oberen oder unteren Bereich der Mittelwerte berechnet, so kann es sein, dass der Gierwinkel, der aus der offset-kompensierten Gierrate berechnet wird, trotz Kompensation der Gierrate wegläuft.

Die Offset-Kompensation erfüllt zwar ihren Zweck, jedoch bleibt das Risiko, dass der Gierwinkel dennoch wegläuft. Je länger das Fahrzeug fährt, desto weiter könnte sich der Gierwinkel vom wahren Wert entfernen. Da für den Einparkalgorithmus der Gierwinkel benötigt wird und dabei ein Winkel von max. 45°, d.h. 0,7854 rad, betrachtet werden muss, muss der Gierwinkel genullt werden, bevor der eigentliche Einparkalgorithmus beginnt. Das heißt, dass sobald das Fahrzeug neben der passenden Parklücke steht, der Gierwinkel zu Null gesetzt werden muss. Für die kurze Fahrt des Einparkens ist die Kompensation ausreichend.

Autor: Julia Müller (Diskussion) 08:49, 6. Feb. 2014 (CET)

Test 2

Testdurchführung

In diesem Test wurden 10 Messungen mit ControlDesk aufgenommen. Die Messungen wurden hintereinander aufgenommen.

Gemessen wurde:

- Das Offset SenGier_Offset_K_f64

- Der Gierwinkel SenGier_psi_filt_K_f64

- Das Gierraten-Rohsignal SenGier_psip_roh_K_f64

- Das Tastersignal AEP SenTast_AEP_bit

Nach der Messung wurden die Messwerte unter ...\SVN-Unterlagen\Software\CaroloCupFahrzeug\dSPACE\Inbetriebnahme\Measurement Data\Messungen_Gyrosensor gespeichert und in Matlab ausgewertet.

Auswertung

Für die Auswertung wurde ein Script in Matlab angelegt und unter ...\SVN-Unterlagen\Software\CaroloCupFahrzeug\dSPACE\Inbetriebnahme\Measurement Data\Messungen_Gyrosensor gespeichert.

Für jede Messungen wurden vier Figuren erstellt (Die Bilder sind exemplarisch für die erste Messung):

1. Alle 4 gemessenen Signale in einem Plot

Messung 1 alle Signale in einem Plot

2. Jedes Signal einer Messung jeweils in einem einzelnen Subplot

Messung 1 jedes Signal in einem Subplot


3. Das Offset-Signal während der Berechnung

Messung 1 Offset-Signal während Berechnung


4. Das Gierwinkel-Signal ab der Kalibierung bis zum Ende der Messung

Messung 1 Gierwinkel nach Offset-Berechnung

Die Figuren aller Messungen sind unter ...\SVN-Unterlagen\Software\CaroloCupFahrzeug\dSPACE\Inbetriebnahme\Measurement Data\Messungen_Gyrosensor\Bilder_Auswertung als *.jpg abgelegt.


Autor: Julia Müller (Diskussion) 13:53, 6. Feb. 2014 (CET)