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.

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 costo personalizada. La estructura es útil al generar código C para una función de costo usando MATLAB® Coder™.

ejemplo

Ejemplos

contraer todo

Crea un objeto de filtro insEKF. Luego, cree una función de costo utilizando 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};
Warning: C Compiler produced warnings. See the build log for further details.


Code generation successful (with warnings): View report

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

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

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

mnoise = tunernoise(filter);

Cree un objeto tunerconfig utilizando la función de costo 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

expandir todo

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

Historial de versiones

Introducido en R2022a