Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

accelcal

Kalibrierungsparameter für den Beschleunigungsmesser

Seit R2023b

Beschreibung

[A,b] = accelcal(D) gibt die Matrix A und den Vektor b zurück, die zur Korrektur unkalibrierter Beschleunigungsmessungen auf Basis der Kalibrierungsdaten D verwendet werden.

Nachdem A und b ermittelt wurden, werden die kalibrierten Daten C aus den unkalibrierten Daten U mithilfe der Formel C = U*A + b berechnet, wobei U eine 3-mal-3-Matrix ist und jede Zeile von U eine unkalibrierte Beschleunigungsmessung darstellt.

Beispiel

[A,b] = accelcal(XUP,XDOWN,YUP,YDOWN,ZUP,ZDOWN) spezifiziert die Messdaten bei sechs Kalibrierungsorientierungen, wie in Ausrichtungen der Beschleunigungsmesserkalibrierung dargestellt.

[A,b] = accelcal(___,Gravity=g) gibt den Wert der Erdgravitationskonstante g an.

Beispiele

alle reduzieren

Erstelle ein imuSensor-Objekt zur Generierung von Messdaten. Standardmäßig ist das Bezugssystem des Objekts das Nordost-unten (NED)-System. Legen Sie die Beschleunigungsmesserparameter so fest, dass die Messungen eine konstante Abweichung und ein gewisses zufälliges Rauschen enthalten.

accelParams =  accelparams(ConstantBias=[.1 .2 -.1],...
    NoiseDensity=1e-2*ones(1,3));
imu = imuSensor(Accelerometer=accelParams);
disp(imu.ReferenceFrame)
NED

Definiere die Euler-Winkel für sechs Kalibrierungsorientierungen und wandle sie in Quaternionen um.

orients = [...
    0 90 0 % xUp
    0 0 -90 % yUp
    0 180 0 % zUp
    0 -90 0 % xDown 
    0 0 90 % yDown    
    0 0 0]; % zDown
quats = quaternion(orients,"eulerd","ZYX","frame");
N = numel(quats);

Es wird angenommen, dass die äußeren Beschleunigungen und Winkelgeschwindigkeiten beide 0 sind. Simulieren Sie den IMU-Sensor, um die Kalibrierungsmessungen zu erhalten.

exAcc = zeros(N,3);
angVel = zeros(N,3);
D = imu(exAcc,angVel,quats)
D = 6×3

   -9.6490    0.2225   -0.1925
    0.0146   -9.5593    0.0153
   -0.0210    0.1928   -9.9271
    9.9363    0.1840   -0.0210
    0.0008    9.9094   -0.0655
    0.2828    0.1528    9.7232

Verwenden Sie die Funktion accelcal, um die Kalibrierungsparameter zu erhalten.

[A,b] = accelcal(D)
A = 3×3

    1.0018    0.0019   -0.0087
    0.0006    1.0078    0.0041
   -0.0154    0.0020    0.9986

b = 1×3

   -0.0956   -0.1852    0.0779

Überprüfen Sie die Kalibrierungsparameter anhand der Kalibrierungsmessungen.

DCali = D*A+b
DCali = 6×3

   -9.7587    0.0199   -0.0298
   -0.0872   -9.8187    0.0534
    0.0365   -0.0111   -9.8339
    9.8589    0.0196   -0.0284
   -0.0875    9.8012    0.0535
    0.0380   -0.0109    9.7852

Erzeugen Sie einige zufällige Orientierungen, erfassen Sie die Beschleunigungsmesserwerte und kalibrieren Sie die Messwerte.

M = 10;
randomQuats = randrot(M,1);
U = imu(zeros(M,3),zeros(M,3),randomQuats);
C = U*A+b
C = 10×3

    9.1400    3.5374   -1.3008
   -7.1185   -6.8126   -0.7088
    7.1372   -6.8065   -0.5943
   -7.9362    1.5605    5.6203
    7.4397   -2.3143   -6.2363
    7.0758   -4.0794   -5.7321
    3.1250   -5.4306    7.2655
    0.8261   -9.7286    1.3509
    0.8486    2.8606   -9.2705
   -2.4922    8.5000   -3.9532

Eingabeargumente

alle reduzieren

Die Messungen an den sechs Kalibrierungsausrichtungen des Beschleunigungsmessers werden als N-mal-3-Matrix angegeben. N ist die Gesamtzahl der Messungen. Jede Zeile der Matrix stellt eine Messung in einer der sechs Kalibrierungsorientierungen des Beschleunigungsmessers dar, wie in Ausrichtungen der Beschleunigungsmesserkalibrierung gezeigt. Für optimale Ergebnisse sollte die Matrix für alle sechs Orientierungen die gleiche Anzahl an Messungen enthalten.

Bei der Interpretation der Daten in D geht die Funktion standardmäßig davon aus, dass die Erdgravitationskonstante g 9,81 m/s² oder 1 beträgt, je nachdem, welcher Wert näher am Mittelwert der Norm der Daten liegt.

Datentypen: single | double

Messungen in x-up-Orientierung des Beschleunigungsmessers, angegeben als N1-mal-3-Matrix. N1 ist die Gesamtzahl der x-up-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der x-up-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Messungen in x-Down-Richtung des Beschleunigungsmessers, angegeben als NN2-mal-3-Matrix. N2 ist die Gesamtzahl der x-Down-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der x-Down-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Messungen in y-up-Orientierung des Beschleunigungsmessers, angegeben als N3-mal-3-Matrix. N3 ist die Gesamtzahl der y-up-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der y-Up-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Messungen in y-Down-Richtung des Beschleunigungsmessers, angegeben als N4-mal-3-Matrix. N4 ist die Gesamtzahl der y-Down-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der y-Down-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Messungen in z-up-Orientierung des Beschleunigungsmessers, angegeben als N5-mal-3-Matrix. N5 ist die Gesamtzahl der z-up-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der z-up-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Messungen in z-Down-Richtung des Beschleunigungsmessers, angegeben als N6-mal-3-Matrix. N6 ist die Gesamtzahl der z-Down-Messungen. Jede Zeile der Matrix stellt eine Messung des Beschleunigungsmessers dar. Die Definition der z-Down-Orientierung finden Sie im Abschnitt Ausrichtungen der Beschleunigungsmesserkalibrierung.

Datentypen: single | double

Erdgravitationskonstante, angegeben als positiver Skalar. Wenn Sie dieses Argument nicht angeben, geht die Funktion davon aus, dass die Erdgravitationskonstante g 9,81 m/s² oder 1 beträgt, je nachdem, welcher Wert näher am Mittelwert der Norm der Daten in D liegt.

Beispiel: 9.807

Datentypen: single | double

Ausgabeargumente

alle reduzieren

Kalibrierungsmatrix, zurückgegeben als 3x3-Matrix.

Datentypen: single | double

Kalibrierungs-Offset-Vektor, zurückgegeben als 1x3-Vektor.

Datentypen: single | double

Mehr über

alle reduzieren

Referenzen

Versionsverlauf

Eingeführt in R2023b