Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

tune

Ajustez les paramètres ahrsfilter pour réduire l'erreur d'estimation

Depuis R2020b

Description

exemple

tune(filter,sensorData,groundTruth) ajuste les propriétés de l'objet filtre ahrsfilter , filter, pour réduire l'erreur de distance des quaternions (RMS). entre les données du capteur fusionnées et la vérité terrain. La fonction utilise les valeurs des propriétés du filtre comme estimation initiale pour l'algorithme d'optimisation.

tune(___,config) spécifie la configuration de réglage basée sur un objet tunerconfig , config.

Exemples

réduire tout

Chargez les données de capteur enregistrées et les données de vérité terrain.

ld = load('ahrsfilterTuneData.mat');
qTrue = ld.groundTruth.Orientation; % true orientation

Créez un objet arhsfitler .

fuse = ahrsfilter;

Fusionnez les données du capteur à l’aide du filtre non réglé par défaut.

qEstUntuned = fuse(ld.sensorData.Accelerometer, ...
    ld.sensorData.Gyroscope, ld.sensorData.Magnetometer);

Créez un objet tunerconfig . Ajustez l'objet ahrsfilter pour améliorer l'estimation de l'orientation en fonction de la configuration.

config = tunerconfig('ahrsfilter');
tune(fuse,ld.sensorData,ld.groundTruth,config);
    Iteration    Parameter                         Metric
    _________    _________                         ______
    1            AccelerometerNoise                0.1345
    1            GyroscopeNoise                    0.1342
    1            MagnetometerNoise                 0.1341
    1            GyroscopeDriftNoise               0.1341
    1            LinearAccelerationNoise           0.1332
    1            MagneticDisturbanceNoise          0.1324
    1            LinearAccelerationDecayFactor     0.1317
    1            MagneticDisturbanceDecayFactor    0.1316
    2            AccelerometerNoise                0.1316
    2            GyroscopeNoise                    0.1312
    2            MagnetometerNoise                 0.1311
    2            GyroscopeDriftNoise               0.1311
    2            LinearAccelerationNoise           0.1300
    2            MagneticDisturbanceNoise          0.1292
    2            LinearAccelerationDecayFactor     0.1285
    2            MagneticDisturbanceDecayFactor    0.1285
    3            AccelerometerNoise                0.1285
    3            GyroscopeNoise                    0.1280
    3            MagnetometerNoise                 0.1279
    3            GyroscopeDriftNoise               0.1279
    3            LinearAccelerationNoise           0.1267
    3            MagneticDisturbanceNoise          0.1258
    3            LinearAccelerationDecayFactor     0.1253
    3            MagneticDisturbanceDecayFactor    0.1253
    4            AccelerometerNoise                0.1252
    4            GyroscopeNoise                    0.1247
    4            MagnetometerNoise                 0.1246
    4            GyroscopeDriftNoise               0.1246
    4            LinearAccelerationNoise           0.1233
    4            MagneticDisturbanceNoise          0.1224
    4            LinearAccelerationDecayFactor     0.1220
    4            MagneticDisturbanceDecayFactor    0.1220
    5            AccelerometerNoise                0.1220
    5            GyroscopeNoise                    0.1213
    5            MagnetometerNoise                 0.1212
    5            GyroscopeDriftNoise               0.1212
    5            LinearAccelerationNoise           0.1200
    5            MagneticDisturbanceNoise          0.1190
    5            LinearAccelerationDecayFactor     0.1187
    5            MagneticDisturbanceDecayFactor    0.1187
    6            AccelerometerNoise                0.1187
    6            GyroscopeNoise                    0.1180
    6            MagnetometerNoise                 0.1178
    6            GyroscopeDriftNoise               0.1178
    6            LinearAccelerationNoise           0.1167
    6            MagneticDisturbanceNoise          0.1156
    6            LinearAccelerationDecayFactor     0.1155
    6            MagneticDisturbanceDecayFactor    0.1155
    7            AccelerometerNoise                0.1155
    7            GyroscopeNoise                    0.1147
    7            MagnetometerNoise                 0.1145
    7            GyroscopeDriftNoise               0.1145
    7            LinearAccelerationNoise           0.1137
    7            MagneticDisturbanceNoise          0.1126
    7            LinearAccelerationDecayFactor     0.1125
    7            MagneticDisturbanceDecayFactor    0.1125
    8            AccelerometerNoise                0.1125
    8            GyroscopeNoise                    0.1117
    8            MagnetometerNoise                 0.1116
    8            GyroscopeDriftNoise               0.1116
    8            LinearAccelerationNoise           0.1112
    8            MagneticDisturbanceNoise          0.1100
    8            LinearAccelerationDecayFactor     0.1099
    8            MagneticDisturbanceDecayFactor    0.1099
    9            AccelerometerNoise                0.1099
    9            GyroscopeNoise                    0.1091
    9            MagnetometerNoise                 0.1090
    9            GyroscopeDriftNoise               0.1090
    9            LinearAccelerationNoise           0.1090
    9            MagneticDisturbanceNoise          0.1076
    9            LinearAccelerationDecayFactor     0.1075
    9            MagneticDisturbanceDecayFactor    0.1075
    10           AccelerometerNoise                0.1075
    10           GyroscopeNoise                    0.1066
    10           MagnetometerNoise                 0.1064
    10           GyroscopeDriftNoise               0.1064
    10           LinearAccelerationNoise           0.1064
    10           MagneticDisturbanceNoise          0.1049
    10           LinearAccelerationDecayFactor     0.1047
    10           MagneticDisturbanceDecayFactor    0.1047
    11           AccelerometerNoise                0.1047
    11           GyroscopeNoise                    0.1038
    11           MagnetometerNoise                 0.1036
    11           GyroscopeDriftNoise               0.1036
    11           LinearAccelerationNoise           0.1036
    11           MagneticDisturbanceNoise          0.1016
    11           LinearAccelerationDecayFactor     0.1014
    11           MagneticDisturbanceDecayFactor    0.1014
    12           AccelerometerNoise                0.1014
    12           GyroscopeNoise                    0.1005
    12           MagnetometerNoise                 0.1002
    12           GyroscopeDriftNoise               0.1002
    12           LinearAccelerationNoise           0.1002
    12           MagneticDisturbanceNoise          0.0978

Fusionnez les données du capteur à l’aide du filtre optimisé.

qEstTuned = fuse(ld.sensorData.Accelerometer, ...
    ld.sensorData.Gyroscope, ld.sensorData.Magnetometer);

Comparez les performances d’erreur RMS optimisées et non optimisées.

dUntuned = rad2deg(dist(qEstUntuned, qTrue));
dTuned = rad2deg(dist(qEstTuned, qTrue));
rmsUntuned = sqrt(mean(dUntuned.^2))
rmsUntuned = 7.7088
rmsTuned = sqrt(mean(dTuned.^2))
rmsTuned = 5.6033

Visualisez les erreurs par rapport au temps.

N = numel(dUntuned);
t = (0:N-1)./ fuse.SampleRate;
plot(t, dUntuned, 'r', t, dTuned, 'b');
legend('Untuned', 'Tuned');
title('ahrsfilter - Tuned vs Untuned Error')
xlabel('Time (s)');
ylabel('Orientation Error (degrees)');

Arguments d'entrée

réduire tout

Objet filtre, spécifié comme objet ahrsfilter .

Données du capteur, spécifiées sous la forme table. Dans chaque ligne, les données du capteur sont spécifiées comme suit :

  • Accelerometer — Données de l'accéléromètre, spécifiées sous la forme d'un vecteur 1 sur 3 de scalaires en m2/s.

  • Gyroscope — Données du gyroscope, spécifiées sous la forme d'un vecteur 1 sur 3 de scalaires en rad/s.

  • Magnetometer — Données du magnétomètre, spécifiées sous la forme d'un vecteur 1 sur 3 de scalaires en μT.

Si vous définissez la propriété Cost de l'entrée de configuration du tuner, config, sur Custom, vous pouvez utiliser d'autres types de données pour le sensorData en fonction de votre choix.

Données de vérité terrain, spécifiées comme table. Le tableau ne contient qu'une seule colonne de données Orientation . Dans chaque ligne, l'orientation est spécifiée sous la forme d'un objet quaternion ou d'une matrice de rotation 3 par 3.

La fonction traite chaque ligne des tables sensorData et groundTruth séquentiellement pour calculer l'estimation de l'état et l'erreur RMS à partir de la vérité terrain. Chaque ligne des tableaux sensorData et groundTruth doit correspondre.

Si vous définissez la propriété Cost en entrée de la configuration du tuner, config, sur Custom, vous pouvez utiliser d'autres types de données pour groundTruth en fonction de votre choix.

Configuration du tuner, spécifiée comme objet tunerconfig .

Références

[1] Abbeel, P., Coates, A., Montemerlo, M., Ng, A.Y. and Thrun, S. Discriminative Training of Kalman Filters. In Robotics: Science and systems, Vol. 2, pp. 1, 2005.

Historique des versions

Introduit dans R2020b