Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

tune

Ajuste los parámetros ahrsfilter para reducir el error de estimación

Descripción

tune(filter,sensorData,groundTruth) ajusta las propiedades del objeto de filtro ahrsfilter, filter, para reducir el error de distancia de cuaternión de raíz cuadrada media (RMS) entre los datos del sensor fusionado y la ground-truth. La función utiliza los valores de propiedad en el filtro como estimación inicial para el algoritmo de optimización.

ejemplo

tune(___,config) especifica la configuración de ajuste basada en un objeto tunerconfig, config.

Ejemplos

contraer todo

Cargue datos de sensores registrados y datos ground-truth.

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

Crea un objeto arhsfitler.

fuse = ahrsfilter;

Fusione los datos del sensor utilizando el filtro no ajustado predeterminado.

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

Cree un objeto tunerconfig. Ajuste el objeto ahrsfilter para mejorar la estimación de la orientación en función de la configuración.

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

Fusione los datos del sensor utilizando el filtro ajustado.

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

Compare el rendimiento de los errores RMS ajustados y no ajustados.

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

Visualizar los errores con respecto al tiempo.

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)');

Argumentos de entrada

contraer todo

Objeto de filtro, especificado como un objeto ahrsfilter.

Datos del sensor, especificados como table. En cada fila, los datos del sensor se especifican como:

  • Accelerometer — Datos del acelerómetro, especificados como un vector de 1 por 3 de escalares en m2/s.

  • Gyroscope — Datos del giroscopio, especificados como un vector de 1 por 3 de escalares en rad/s.

  • Magnetometer — Datos del magnetómetro, especificados como un vector de escalares de 1 por 3 en μT.

Si establece la propiedad Cost de la entrada de configuración del sintonizador, config, en Custom, podrá usar otros tipos de datos para la entrada sensorData según su elección.

Datos de verdad fundamental, especificados como table. La tabla solo tiene una columna de datos Orientation. En cada fila, la orientación se especifica como un objeto quaternion o una matriz de rotación de 3 por 3.

La función procesa cada fila de las tablas sensorData y groundTruth secuencialmente para calcular la estimación del estado y el error RMS a partir de la ground-truth. Cada fila de las tablas sensorData y groundTruth deben corresponder entre sí.

Si establece la propiedad Cost de la entrada de configuración del sintonizador, config, en Custom, podrá usar otros tipos de datos para la entrada groundTruth según su elección.

Configuración del sintonizador, especificada como un objeto tunerconfig.

Referencias

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

Historial de versiones

Introducido en R2020b