tune
Ajuste los parámetros imufilter
para reducir el error de estimación
Descripción
tune(
ajusta las propiedades del objeto de filtro filter
,sensorData
,groundTruth
)imufilter
, 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 fusiona los datos del sensor para estimar la orientación, que se compara con la orientación en el terreno. La función utiliza los valores de propiedad en el filtro como estimación inicial para el algoritmo de optimización.
tune(___,
especifica la configuración de ajuste basada en un objeto config
)tunerconfig
, config
.
Ejemplos
Cargue datos de sensores registrados y datos ground-truth.
ld = load("imufilterTuneData.mat"); qTrue = ld.groundTruth.Orientation; % true orientation
Cree un objeto imufilter
y fusione el filtro con los datos del sensor.
fuse = imufilter;
qEstUntuned = fuse(ld.sensorData.Accelerometer, ...
ld.sensorData.Gyroscope);
Cree un objeto tunerconfig
y ajuste el imufilter para mejorar la estimación de la orientación.
cfg = tunerconfig("imufilter",ObjectiveLimit=0.03);
reset(fuse)
tune(fuse,ld.sensorData,ld.groundTruth,cfg);
Iteration Parameter Metric _________ _________ ______ 1 AccelerometerNoise 0.0857 1 GyroscopeNoise 0.0855 1 GyroscopeDriftNoise 0.0855 1 LinearAccelerationNoise 0.0851 1 LinearAccelerationDecayFactor 0.0844 2 AccelerometerNoise 0.0844 2 GyroscopeNoise 0.0842 2 GyroscopeDriftNoise 0.0842 2 LinearAccelerationNoise 0.0840 2 LinearAccelerationDecayFactor 0.0836 3 AccelerometerNoise 0.0836 3 GyroscopeNoise 0.0834 3 GyroscopeDriftNoise 0.0834 3 LinearAccelerationNoise 0.0834 3 LinearAccelerationDecayFactor 0.0831 4 AccelerometerNoise 0.0831 4 GyroscopeNoise 0.0829 4 GyroscopeDriftNoise 0.0829 4 LinearAccelerationNoise 0.0829 4 LinearAccelerationDecayFactor 0.0827 5 AccelerometerNoise 0.0827 5 GyroscopeNoise 0.0824 5 GyroscopeDriftNoise 0.0824 5 LinearAccelerationNoise 0.0824 5 LinearAccelerationDecayFactor 0.0822 6 AccelerometerNoise 0.0822 6 GyroscopeNoise 0.0819 6 GyroscopeDriftNoise 0.0819 6 LinearAccelerationNoise 0.0819 6 LinearAccelerationDecayFactor 0.0818 7 AccelerometerNoise 0.0818 7 GyroscopeNoise 0.0814 7 GyroscopeDriftNoise 0.0814 7 LinearAccelerationNoise 0.0814 7 LinearAccelerationDecayFactor 0.0813 8 AccelerometerNoise 0.0813 8 GyroscopeNoise 0.0808 8 GyroscopeDriftNoise 0.0808 8 LinearAccelerationNoise 0.0808 8 LinearAccelerationDecayFactor 0.0807 9 AccelerometerNoise 0.0807 9 GyroscopeNoise 0.0802 9 GyroscopeDriftNoise 0.0802 9 LinearAccelerationNoise 0.0802 9 LinearAccelerationDecayFactor 0.0801 10 AccelerometerNoise 0.0801 10 GyroscopeNoise 0.0794 10 GyroscopeDriftNoise 0.0794 10 LinearAccelerationNoise 0.0794 10 LinearAccelerationDecayFactor 0.0794 11 AccelerometerNoise 0.0794 11 GyroscopeNoise 0.0785 11 GyroscopeDriftNoise 0.0785 11 LinearAccelerationNoise 0.0785 11 LinearAccelerationDecayFactor 0.0785 12 AccelerometerNoise 0.0785 12 GyroscopeNoise 0.0775 12 GyroscopeDriftNoise 0.0775 12 LinearAccelerationNoise 0.0775 12 LinearAccelerationDecayFactor 0.0774 13 AccelerometerNoise 0.0774 13 GyroscopeNoise 0.0762 13 GyroscopeDriftNoise 0.0762 13 LinearAccelerationNoise 0.0762 13 LinearAccelerationDecayFactor 0.0761 14 AccelerometerNoise 0.0761 14 GyroscopeNoise 0.0746 14 GyroscopeDriftNoise 0.0746 14 LinearAccelerationNoise 0.0746 14 LinearAccelerationDecayFactor 0.0745 15 AccelerometerNoise 0.0745 15 GyroscopeNoise 0.0727 15 GyroscopeDriftNoise 0.0727 15 LinearAccelerationNoise 0.0727 15 LinearAccelerationDecayFactor 0.0726 16 AccelerometerNoise 0.0726 16 GyroscopeNoise 0.0706 16 GyroscopeDriftNoise 0.0706 16 LinearAccelerationNoise 0.0705 16 LinearAccelerationDecayFactor 0.0705 17 AccelerometerNoise 0.0705 17 GyroscopeNoise 0.0684 17 GyroscopeDriftNoise 0.0684 17 LinearAccelerationNoise 0.0683 17 LinearAccelerationDecayFactor 0.0683 18 AccelerometerNoise 0.0683 18 GyroscopeNoise 0.0662 18 GyroscopeDriftNoise 0.0662 18 LinearAccelerationNoise 0.0662 18 LinearAccelerationDecayFactor 0.0662 19 AccelerometerNoise 0.0662 19 GyroscopeNoise 0.0644 19 GyroscopeDriftNoise 0.0644 19 LinearAccelerationNoise 0.0644 19 LinearAccelerationDecayFactor 0.0644 20 AccelerometerNoise 0.0644 20 GyroscopeNoise 0.0630 20 GyroscopeDriftNoise 0.0630 20 LinearAccelerationNoise 0.0630 20 LinearAccelerationDecayFactor 0.0630
Fusione los datos del sensor nuevamente usando el filtro ajustado.
qEstTuned = fuse(ld.sensorData.Accelerometer, ...
ld.sensorData.Gyroscope);
Compare el rendimiento de los errores RMS del filtro ajustado y no ajustado.
dUntuned = rad2deg(dist(qEstUntuned,qTrue)); dTuned = rad2deg(dist(qEstTuned,qTrue)); rmsUntuned = sqrt(mean(dUntuned.^2))
rmsUntuned = 4.9108
rmsTuned = sqrt(mean(dTuned.^2))
rmsTuned = 3.6116
Visualiza los resultados.
N = numel(dUntuned); t = (0:N-1)./ fuse.SampleRate; plot(t,dUntuned,"r",t,dTuned,"b"); legend("Untuned","Tuned"); title("imufilter - Tuned vs Untuned Error") xlabel("Time (s)"); ylabel("Orientation Error (degrees)");
Argumentos de entrada
Objeto de filtro, especificado como un objeto imufilter
.
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.
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
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)