tune
Ajuste los parámetros insfilterNonholonomic para reducir el error de estimación
Sintaxis
Descripción
ajusta las propiedades del objeto de filtro tunedMeasureNoise = tune(filter,measureNoise,sensorData,groundTruth)insfilterNonholonomic, filter y los ruidos de medición para reducir el error de estimación de estado de raíz cuadrada media (RMS) entre los datos del sensor fusionado y la ground-truth. La función también devuelve el ruido de medición sintonizado, tunedMeasureNoise. La función utiliza los valores de propiedad en el filtro y el ruido de medición proporcionado en la estructura measureNoise como estimación inicial para el algoritmo de optimización.
especifica la configuración de ajuste basada en un objeto tunedMeasureNoise = tune(___,config)tunerconfig, config.
Ejemplos
Cargue los datos registrados del sensor y los datos ground-truth.
load('insfilterNonholonomicTuneData.mat');Cree tablas para los datos del sensor y los datos de verdad.
sensorData = table(Accelerometer, Gyroscope, ...
GPSPosition, GPSVelocity);
groundTruth = table(Orientation, Position);Crea un objeto de filtro insfilterNonholonimic.
filter = insfilterNonholonomic('State', initialState, ... 'StateCovariance', initialStateCovariance, ... 'DecimationFactor', 1);
Cree un objeto de configuración de sintonizador para el filtro. Establezca el número máximo de iteraciones en 30.
config = tunerconfig('insfilterNonholonomic','MaxIterations',30);
Utilice la función tunernoise para obtener un conjunto de ruidos de sensor iniciales utilizados en el filtro.
measNoise = tunernoise('insfilterNonholonomic')measNoise = struct with fields:
GPSPositionNoise: 1
GPSVelocityNoise: 1
Ajusteel filtro y obtenga el ruido de medición ajustado.
tunedNoise = tune(filter,measNoise,sensorData,groundTruth,config);
Iteration Parameter Metric
_________ _________ ______
1 GyroscopeNoise 3.4877
1 AccelerometerNoise 3.3961
1 GyroscopeBiasNoise 3.3961
1 GyroscopeBiasDecayFactor 3.3961
1 AccelerometerBiasNoise 3.3961
1 AccelerometerBiasDecayFactor 3.3961
1 ZeroVelocityConstraintNoise 3.3935
1 GPSPositionNoise 3.2848
1 GPSVelocityNoise 3.2798
2 GyroscopeNoise 3.2641
2 AccelerometerNoise 3.1715
2 GyroscopeBiasNoise 3.1715
2 GyroscopeBiasDecayFactor 2.9661
2 AccelerometerBiasNoise 2.9661
2 AccelerometerBiasDecayFactor 2.9661
2 ZeroVelocityConstraintNoise 2.9617
2 GPSPositionNoise 2.8438
2 GPSVelocityNoise 2.8384
3 GyroscopeNoise 2.8373
3 AccelerometerNoise 2.7382
3 GyroscopeBiasNoise 2.7382
3 GyroscopeBiasDecayFactor 2.7382
3 AccelerometerBiasNoise 2.7382
3 AccelerometerBiasDecayFactor 2.7382
3 ZeroVelocityConstraintNoise 2.7335
3 GPSPositionNoise 2.6105
3 GPSVelocityNoise 2.6045
4 GyroscopeNoise 2.6023
4 AccelerometerNoise 2.5001
4 GyroscopeBiasNoise 2.5001
4 GyroscopeBiasDecayFactor 2.5001
4 AccelerometerBiasNoise 2.5001
4 AccelerometerBiasDecayFactor 2.5001
4 ZeroVelocityConstraintNoise 2.4953
4 GPSPositionNoise 2.3692
4 GPSVelocityNoise 2.3626
5 GyroscopeNoise 2.3595
5 AccelerometerNoise 2.2561
5 GyroscopeBiasNoise 2.2561
5 GyroscopeBiasDecayFactor 2.2508
5 AccelerometerBiasNoise 2.2508
5 AccelerometerBiasDecayFactor 2.2508
5 ZeroVelocityConstraintNoise 2.2469
5 GPSPositionNoise 2.1265
5 GPSVelocityNoise 2.1191
6 GyroscopeNoise 2.1148
6 AccelerometerNoise 2.0150
6 GyroscopeBiasNoise 2.0150
6 GyroscopeBiasDecayFactor 2.0150
6 AccelerometerBiasNoise 2.0150
6 AccelerometerBiasDecayFactor 2.0150
6 ZeroVelocityConstraintNoise 2.0116
6 GPSPositionNoise 1.8970
6 GPSVelocityNoise 1.8888
7 GyroscopeNoise 1.8847
7 AccelerometerNoise 1.7921
7 GyroscopeBiasNoise 1.7921
7 GyroscopeBiasDecayFactor 1.7845
7 AccelerometerBiasNoise 1.7845
7 AccelerometerBiasDecayFactor 1.7845
7 ZeroVelocityConstraintNoise 1.7815
7 GPSPositionNoise 1.6794
7 GPSVelocityNoise 1.6708
8 GyroscopeNoise 1.6679
8 AccelerometerNoise 1.5886
8 GyroscopeBiasNoise 1.5886
8 GyroscopeBiasDecayFactor 1.5866
8 AccelerometerBiasNoise 1.5866
8 AccelerometerBiasDecayFactor 1.5866
8 ZeroVelocityConstraintNoise 1.5850
8 GPSPositionNoise 1.5057
8 GPSVelocityNoise 1.4965
9 GyroscopeNoise 1.4950
9 AccelerometerNoise 1.4364
9 GyroscopeBiasNoise 1.4364
9 GyroscopeBiasDecayFactor 1.4364
9 AccelerometerBiasNoise 1.4364
9 AccelerometerBiasDecayFactor 1.4364
9 ZeroVelocityConstraintNoise 1.4355
9 GPSPositionNoise 1.3894
9 GPSVelocityNoise 1.3790
10 GyroscopeNoise 1.3773
10 AccelerometerNoise 1.3422
10 GyroscopeBiasNoise 1.3422
10 GyroscopeBiasDecayFactor 1.3421
10 AccelerometerBiasNoise 1.3421
10 AccelerometerBiasDecayFactor 1.3421
10 ZeroVelocityConstraintNoise 1.3399
10 GPSPositionNoise 1.3319
10 GPSVelocityNoise 1.3190
11 GyroscopeNoise 1.3159
11 AccelerometerNoise 1.3102
11 GyroscopeBiasNoise 1.3102
11 GyroscopeBiasDecayFactor 1.3100
11 AccelerometerBiasNoise 1.3100
11 AccelerometerBiasDecayFactor 1.3100
11 ZeroVelocityConstraintNoise 1.3069
11 GPSPositionNoise 1.2964
11 GPSVelocityNoise 1.2762
12 GyroscopeNoise 1.2740
12 AccelerometerNoise 1.2655
12 GyroscopeBiasNoise 1.2655
12 GyroscopeBiasDecayFactor 1.2641
12 AccelerometerBiasNoise 1.2641
12 AccelerometerBiasDecayFactor 1.2641
12 ZeroVelocityConstraintNoise 1.2631
12 GPSPositionNoise 1.2511
12 GPSVelocityNoise 1.2198
13 GyroscopeNoise 1.2184
13 AccelerometerNoise 1.2058
13 GyroscopeBiasNoise 1.2058
13 GyroscopeBiasDecayFactor 1.2029
13 AccelerometerBiasNoise 1.2029
13 AccelerometerBiasDecayFactor 1.2029
13 ZeroVelocityConstraintNoise 1.2029
13 GPSPositionNoise 1.1874
13 GPSVelocityNoise 1.1408
14 GyroscopeNoise 1.1403
14 AccelerometerNoise 1.1236
14 GyroscopeBiasNoise 1.1236
14 GyroscopeBiasDecayFactor 1.1186
14 AccelerometerBiasNoise 1.1186
14 AccelerometerBiasDecayFactor 1.1186
14 ZeroVelocityConstraintNoise 1.1183
14 GPSPositionNoise 1.0975
14 GPSVelocityNoise 1.0348
15 GyroscopeNoise 1.0347
15 AccelerometerNoise 1.0155
15 GyroscopeBiasNoise 1.0155
15 GyroscopeBiasDecayFactor 1.0081
15 AccelerometerBiasNoise 1.0081
15 AccelerometerBiasDecayFactor 1.0081
15 ZeroVelocityConstraintNoise 1.0076
15 GPSPositionNoise 0.9813
15 GPSVelocityNoise 0.9078
16 GyroscopeNoise 0.9074
16 AccelerometerNoise 0.8926
16 GyroscopeBiasNoise 0.8926
16 GyroscopeBiasDecayFactor 0.8823
16 AccelerometerBiasNoise 0.8823
16 AccelerometerBiasDecayFactor 0.8823
16 ZeroVelocityConstraintNoise 0.8815
16 GPSPositionNoise 0.8526
16 GPSVelocityNoise 0.7926
17 GyroscopeNoise 0.7920
17 AccelerometerNoise 0.7870
17 GyroscopeBiasNoise 0.7870
17 GyroscopeBiasDecayFactor 0.7742
17 AccelerometerBiasNoise 0.7742
17 AccelerometerBiasDecayFactor 0.7742
17 ZeroVelocityConstraintNoise 0.7730
17 GPSPositionNoise 0.7665
17 GPSVelocityNoise 0.7665
18 GyroscopeNoise 0.7662
18 AccelerometerNoise 0.7638
18 GyroscopeBiasNoise 0.7638
18 GyroscopeBiasDecayFactor 0.7495
18 AccelerometerBiasNoise 0.7495
18 AccelerometerBiasDecayFactor 0.7495
18 ZeroVelocityConstraintNoise 0.7482
18 GPSPositionNoise 0.7482
18 GPSVelocityNoise 0.7475
19 GyroscopeNoise 0.7474
19 AccelerometerNoise 0.7474
19 GyroscopeBiasNoise 0.7474
19 GyroscopeBiasDecayFactor 0.7474
19 AccelerometerBiasNoise 0.7474
19 AccelerometerBiasDecayFactor 0.7474
19 ZeroVelocityConstraintNoise 0.7453
19 GPSPositionNoise 0.7416
19 GPSVelocityNoise 0.7382
20 GyroscopeNoise 0.7378
20 AccelerometerNoise 0.7370
20 GyroscopeBiasNoise 0.7370
20 GyroscopeBiasDecayFactor 0.7370
20 AccelerometerBiasNoise 0.7370
20 AccelerometerBiasDecayFactor 0.7370
20 ZeroVelocityConstraintNoise 0.7345
20 GPSPositionNoise 0.7345
20 GPSVelocityNoise 0.7345
21 GyroscopeNoise 0.7334
21 AccelerometerNoise 0.7334
21 GyroscopeBiasNoise 0.7334
21 GyroscopeBiasDecayFactor 0.7334
21 AccelerometerBiasNoise 0.7334
21 AccelerometerBiasDecayFactor 0.7334
21 ZeroVelocityConstraintNoise 0.7306
21 GPSPositionNoise 0.7279
21 GPSVelocityNoise 0.7268
22 GyroscopeNoise 0.7248
22 AccelerometerNoise 0.7247
22 GyroscopeBiasNoise 0.7247
22 GyroscopeBiasDecayFactor 0.7234
22 AccelerometerBiasNoise 0.7234
22 AccelerometerBiasDecayFactor 0.7234
22 ZeroVelocityConstraintNoise 0.7207
22 GPSPositionNoise 0.7206
22 GPSVelocityNoise 0.7170
23 GyroscopeNoise 0.7138
23 AccelerometerNoise 0.7134
23 GyroscopeBiasNoise 0.7134
23 GyroscopeBiasDecayFactor 0.7134
23 AccelerometerBiasNoise 0.7134
23 AccelerometerBiasDecayFactor 0.7134
23 ZeroVelocityConstraintNoise 0.7122
23 GPSPositionNoise 0.7122
23 GPSVelocityNoise 0.7122
24 GyroscopeNoise 0.7081
24 AccelerometerNoise 0.7080
24 GyroscopeBiasNoise 0.7080
24 GyroscopeBiasDecayFactor 0.7080
24 AccelerometerBiasNoise 0.7080
24 AccelerometerBiasDecayFactor 0.7080
24 ZeroVelocityConstraintNoise 0.7080
24 GPSPositionNoise 0.7080
24 GPSVelocityNoise 0.7072
25 GyroscopeNoise 0.7009
25 AccelerometerNoise 0.7009
25 GyroscopeBiasNoise 0.7009
25 GyroscopeBiasDecayFactor 0.7007
25 AccelerometerBiasNoise 0.7007
25 AccelerometerBiasDecayFactor 0.7007
25 ZeroVelocityConstraintNoise 0.7005
25 GPSPositionNoise 0.6997
25 GPSVelocityNoise 0.6997
26 GyroscopeNoise 0.6912
26 AccelerometerNoise 0.6906
26 GyroscopeBiasNoise 0.6906
26 GyroscopeBiasDecayFactor 0.6906
26 AccelerometerBiasNoise 0.6906
26 AccelerometerBiasDecayFactor 0.6906
26 ZeroVelocityConstraintNoise 0.6896
26 GPSPositionNoise 0.6896
26 GPSVelocityNoise 0.6896
27 GyroscopeNoise 0.6840
27 AccelerometerNoise 0.6831
27 GyroscopeBiasNoise 0.6831
27 GyroscopeBiasDecayFactor 0.6831
27 AccelerometerBiasNoise 0.6831
27 AccelerometerBiasDecayFactor 0.6831
27 ZeroVelocityConstraintNoise 0.6818
27 GPSPositionNoise 0.6816
27 GPSVelocityNoise 0.6816
28 GyroscopeNoise 0.6816
28 AccelerometerNoise 0.6809
28 GyroscopeBiasNoise 0.6809
28 GyroscopeBiasDecayFactor 0.6809
28 AccelerometerBiasNoise 0.6809
28 AccelerometerBiasDecayFactor 0.6809
28 ZeroVelocityConstraintNoise 0.6804
28 GPSPositionNoise 0.6802
28 GPSVelocityNoise 0.6802
29 GyroscopeNoise 0.6793
29 AccelerometerNoise 0.6785
29 GyroscopeBiasNoise 0.6785
29 GyroscopeBiasDecayFactor 0.6785
29 AccelerometerBiasNoise 0.6785
29 AccelerometerBiasDecayFactor 0.6785
29 ZeroVelocityConstraintNoise 0.6778
29 GPSPositionNoise 0.6773
29 GPSVelocityNoise 0.6773
30 GyroscopeNoise 0.6773
30 AccelerometerNoise 0.6769
30 GyroscopeBiasNoise 0.6769
30 GyroscopeBiasDecayFactor 0.6769
30 AccelerometerBiasNoise 0.6769
30 AccelerometerBiasDecayFactor 0.6769
30 ZeroVelocityConstraintNoise 0.6769
30 GPSPositionNoise 0.6769
30 GPSVelocityNoise 0.6769
Fusione los datos del sensor utilizando el filtro ajustado. Obtenga una pose y orientación estimadas.
N = size(sensorData,1); qEstTuned = quaternion.zeros(N,1); posEstTuned = zeros(N,3); for ii=1:N predict(filter,Accelerometer(ii,:),Gyroscope(ii,:)); if all(~isnan(GPSPosition(ii,1))) fusegps(filter, GPSPosition(ii,:), ... tunedNoise.GPSPositionNoise,GPSVelocity(ii,:), ... tunedNoise.GPSVelocityNoise); end [posEstTuned(ii,:),qEstTuned(ii,:)] = pose(filter); end
Calcule los errores RMS.
orientationErrorTuned = rad2deg(dist(qEstTuned,Orientation)); rmsOrientationErrorTuned = sqrt(mean(orientationErrorTuned.^2))
rmsOrientationErrorTuned = 1.6857
positionErrorTuned = sqrt(sum((posEstTuned-Position).^2,2)); rmsPositionErrorTuned = sqrt(mean(positionErrorTuned.^2))
rmsPositionErrorTuned = 1.6667
Visualizar los resultados
figure; t = (0:N-1)./filter.IMUSampleRate; subplot(2,1,1) plot(t,positionErrorTuned,'b'); title("Tuned insfilterNonholonomic" + newline + ... "Euclidean Distance Position Error") xlabel('Time (s)'); ylabel('Position Error (meters)') subplot(2,1,2) plot(t,orientationErrorTuned,'b'); title("Orientation Error") xlabel('Time (s)'); ylabel('Orientation Error (degrees)');

Argumentos de entrada
Objeto de filtro, especificado como un objeto insfilterNonholonomic.
Ruido de medición, especificado como estructura. La función utiliza la entrada de ruido de medición como estimación inicial para ajustar el ruido de medición. La estructura debe contener estos campos:
| Nombre del campo | Descripción |
|---|---|
GPSPositionNoise | Varianza del ruido de posición GPS, especificada como un escalar en m2 |
GPSVelocityNoise | Varianza del ruido de velocidad del GPS, especificada como un escalar en (m/s)2 |
Tipos de datos: struct
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.GPSPosition— Datos de posición GPS, especificados como un vector de 1 por 3 de latitud en grados, longitud en grados y altitud en metros.GPSVelocity— Datos de velocidad GPS, especificados como un vector de escalares de 1 por 3 en m/s.
Si el sensor GPS no produce mediciones completas, especifique la entrada correspondiente para GPSPosition y/o GPSVelocity como NaN. 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.
Tipos de datos: table
Datos ground-truth, especificados como una tabla. En cada fila, la tabla puede contener opcionalmente cualquiera de estas variables:
Orientation— Orientación desde el marco de navegación hasta el marco del cuerpo, especificada como unaquaterniono una matriz de rotación de 3 por 3.Position— Posición en el marco de navegación, especificada como un vector de 1 por 3 de escalares en metros.Velocity— Velocidad en el marco de navegación, especificada como un vector de 1 por 3 de escalares en m/s.GyroscopeBias— Sesgo del ángulo delta del giroscopio en el marco del cuerpo, especificado como un vector de 1 por 3 de escalares en rad/s.AccelerometerBias— Sesgo del ángulo delta del acelerómetro en el marco del cuerpo, especificado como un vector de 1 por 3 de escalares en m2/s.
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. Las variables de estado que no están presentes en la entrada groundTruth se ignoran para la comparación. Las tablas sensorData y groundTruth deben tener el mismo número de filas.
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.
Tipos de datos: table
Configuración del sintonizador, especificada como un objeto tunerconfig.
Argumentos de salida
Ruido de medición ajustado, devuelto como una estructura. La estructura contiene estos campos.
| Nombre del campo | Descripción |
|---|---|
GPSPositionNoise | Varianza del ruido de posición GPS, especificada como un escalar en m2 |
GPSVelocityNoise | Varianza del ruido de velocidad del GPS, especificada como un escalar en (m/s)2 |
Tipos de datos: struct
Referencias
[1] Abbeel, Pieter, et al. “Discriminative Training of Kalman Filters.” Robotics: Science and Systems I, Robotics: Science and Systems Foundation, 2005. DOI.org (Crossref), doi:10.15607/RSS.2005.I.038.
Historial de versiones
Introducido en R2020b
Consulte también
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)