Main Content

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

Desde R2020b

Descripción

tune(filter,sensorData,groundTruth) ajusta las propiedades del objeto de filtro ahrsfilter , filter, para reducir el error de distancia del cuaternión de la raíz cuadrática media (RMS) entre los datos del sensor fusionado y 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

Cree 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 según 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 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 escalares de 1 por 3 en m2/s.

  • Gyroscope — Datos del giroscopio, especificados como un vector de escalares de 1 por 3 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 ajustador, config, en Custom, entonces puede usar otros tipos de datos para sensorData entrada según su elección.

Datos ground-truth, especificados como table. La tabla tiene solo 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 ground-truth. Cada fila de las tablas sensorData y groundTruth deben corresponderse entre sí.

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

Configuración del ajustador, 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