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.

tunerCostFcnParam

Primer ejemplo de parámetro para ajustar la función de coste

Desde R2022a

Descripción

tunerCostFcnParam(filter) crea una estructura que tiene los campos necesarios para ajustar un filtro insEKF con una función de coste personalizada. La estructura es útil al generar código C para una función de coste usando MATLAB® Coder™.

ejemplo

Ejemplos

contraer todo

Cree un objeto de filtro insEKF . Luego cree una función de coste usando la función de objeto createTunerCostTemplate .

filter = insEKF;
createTunerCostTemplate(filter);
doc = matlab.desktop.editor.getActive;
doc.saveAs(fullfile(pwd,"tunercost.m"));

Cargue datos de sensores pregrabados y datos ground-truth.

load("accelGyroINSEKFData.mat");

Cree una función de costes MEX usando MATLAB Coder.

p = tunerCostFcnParam(filter);
disp("Generating MEX-accelerated cost function");
Generating MEX-accelerated cost function
codegen tunercost.m -args {p,sensorData,groundTruth};
Code generation successful.

Especifique un estado de orientación inicial y su covarianza.

stateparts(filter,"Orientation",compact(initOrient));
statecovparts(filter,"Orientation",1e-2);

Cree una estructura de medición de ruido usando la función tunernoise .

mnoise = tunernoise(filter);

Cree un objeto tunerconfig usando la función de coste MEX creada.

cfg = tunerconfig(filter, MaxIterations=1, ...
    ObjectiveLimit=1e-4, ...
    Cost="custom", ...
    CustomCostFcn=@tunercost_mex);

Ajusteel filtro. Muestra el ruido de medición ajustado y el ruido de proceso en el filtro.

tunedmn = tune(filter,mnoise,sensorData, ...
    groundTruth,cfg)
    Iteration    Parameter                    Metric
    _________    _________                    ______
    1            AdditiveProcessNoise(1)      0.3413
    1            AdditiveProcessNoise(15)     0.3381
    1            AdditiveProcessNoise(29)     0.3353
    1            AdditiveProcessNoise(43)     0.3334
    1            AdditiveProcessNoise(57)     0.3214
    1            AdditiveProcessNoise(71)     0.3121
    1            AdditiveProcessNoise(85)     0.3110
    1            AdditiveProcessNoise(99)     0.3107
    1            AdditiveProcessNoise(113)    0.3106
    1            AdditiveProcessNoise(127)    0.3105
    1            AdditiveProcessNoise(141)    0.2972
    1            AdditiveProcessNoise(155)    0.2872
    1            AdditiveProcessNoise(169)    0.2855
    1            AccelerometerNoise           0.2852
    1            GyroscopeNoise               0.2851
tunedmn = struct with fields:
    AccelerometerNoise: 0.9000
        GyroscopeNoise: 0.9000

orientationNoise = statecovparts(filter,"Orientation")
orientationNoise = 4×4

    0.0100         0         0         0
         0    0.0100         0         0
         0         0    0.0100         0
         0         0         0    0.0100

Argumentos de entrada

contraer todo

Filtro INS, especificado como un objeto insEKF .

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2022a