Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

tunerCostFcnParam

Premier exemple de paramètre pour régler la fonction de coût

Depuis R2022a

Description

tunerCostFcnParam(filter) crée une structure contenant les champs requis pour régler un filtre insEKF avec une fonction de coût personnalisée. La structure est utile lors de la génération de code C pour une fonction de coût en utilisant MATLAB® Coder™.

exemple

Exemples

réduire tout

Créez un objet filtre insEKF . Créez ensuite une fonction de coût à l'aide de la fonction objet createTunerCostTemplate .

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

Chargez les données de capteur préenregistrées et les données de vérité terrain.

load("accelGyroINSEKFData.mat");

Créez une fonction de coût MEX à l'aide de 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.

Spécifiez un état d'orientation initial et sa covariance.

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

Créez une structure de bruit de mesure à l'aide de la fonction tunernoise .

mnoise = tunernoise(filter);

Créez un objet tunerconfig à l'aide de la fonction de coût MEX créée.

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

Réglez le filtre. Afficher le bruit de mesure réglé et le bruit de processus dans le filtre.

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

Arguments d'entrée

réduire tout

Filtre INS, spécifié comme objet insEKF .

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2022a