sensorStates
Description
Exemples
Personnalisez un modèle de capteur utilisé avec l'objet insEKF
. Le capteur mesure l'état de vitesse, y compris un biais affecté par un bruit aléatoire.
Personnalisez le modèle de capteur en héritant de la classe d'interface positioning.INSSensorModel
et en implémentant ses méthodes. Notez que seule la méthode measurement
est requise pour l'implémentation dans la classe d'interface positioning.INSSensorModel
. Ces sections donnent un aperçu de la façon dont la classe BiasSensor
implémente les méthodes positioning.INSSensorModel
, mais pour plus de détails sur leur implémentation, voir les détails de l'implémentation dans le ci-joint. Fichier $BiasSensor.m
.
Implémenter la méthode sensorStates
Pour modéliser le biais, la méthode sensorStates
doit renvoyer un état, Bias
, en tant que structure. Lorsque vous ajoutez un objet BiasSensor
à un objet filtre insEKF
, le filtre ajoute le composant de biais au vecteur d'état du filtre.
Implémenter la méthode measurement
La mesure est la composante de vitesse de l'état du filtre, y compris le biais. Par conséquent, renvoyez la somme de la composante de vitesse du filtre et du biais.
Implémenter la méthode measurementJacobian
La méthode measurementJacobian
renvoie la dérivée partielle de la méthode measurement
par rapport au vecteur d'état du filtre en tant que structure. Toutes les dérivées partielles sont 0
, à l'exception des dérivées partielles de la mesure par rapport aux composantes de vitesse et d'état de biais.
Implémenter la méthode stateTransition
La méthode stateTransiton
renvoie la dérivée de l'état du capteur défini dans la méthode sensorStates
. Supposons que la dérivée du biais soit affectée par un bruit blanc avec un écart type de 0.01
. Renvoie la dérivée sous forme de structure. Notez que cela montre uniquement comment configurer la méthode et ne correspond à aucune application pratique.
Implémenter la méthode stateTransitionJacobian
Puisque la fonction stateTransiton
ne dépend pas de l'état du filtre, la matrice jacobienne est 0.
Créer et ajouter un objet hérité
Créez un objet BiasSensor
.
biSensor = BiasSensor
biSensor = BiasSensor with no properties.
Créez un objet insEKF
avec l'objet biSensor
.
filter = insEKF(biSensor,insMotionPose)
filter = insEKF with properties: State: [17x1 double] StateCovariance: [17x17 double] AdditiveProcessNoise: [17x17 double] MotionModel: [1x1 insMotionPose] Sensors: {[1x1 BiasSensor]} SensorNames: {'BiasSensor'} ReferenceFrame: 'NED'
L'état du filtre contient le composant de polarisation.
stateinfo(filter)
ans = struct with fields:
Orientation: [1 2 3 4]
AngularVelocity: [5 6 7]
Position: [8 9 10]
Velocity: [11 12 13]
Acceleration: [14 15 16]
BiasSensor_Bias: 17
Afficher la classe BiasSensor
personnalisée
type BiasSensor.m
classdef BiasSensor < positioning.INSSensorModel %BIASSENSOR Sensor measuring velocity with bias % Copyright 2021 The MathWorks, Inc. methods function s = sensorstates(~,~) % Assume the sensor has a bias. Define a Bias state to enable % the filter to estimate the bias. s = struct('Bias',0); end function z = measurement(sensor,filter) % Measurement is the summation of the velocity measurement and % the bias. velocity = stateparts(filter,'Velocity'); bias = stateparts(filter,sensor,'Bias'); z = velocity + bias; end function dzdx = measurementJacobian(sensor,filter) % Compute the Jacobian, which is the partial derivative of the % measurement (velocity plus bias) with respect to the filter % state vector. % Obtain the dimension of the filter state. N = numel(filter.State); % The partial derviative of the Bias with respect to all the % states is zero, except the Bias state itself. dzdx = zeros(1,N); % Obtain the index for the Bias state component in the filter. bidx = stateinfo(filter,sensor,'Bias'); dzdx(:,bidx) = 1; % The partial derivative of the Velocity with respect to all the % states is zero, except the Velocity state itself. vidx = stateinfo(filter,'Velocity'); dzdx(:,vidx) = 1; end function dBias = stateTransition(~,~,dt,~) % Assume the derivative of the bias is affected by a zero-mean % white noise with a standard deviation of 0.01. noise = 0.01*randn*dt; dBias = struct('Bias',noise); end function dBiasdx = stateTransitonJacobian(~,filter,~,~) % Since the stateTransiton function does not depend on the % state of the filter, the Jacobian is all zero. N = numel(filter.State); dBiasdx = zeros(1,N); end end end
Arguments d'entrée
Filtre INS, spécifié comme objet insEKF
.
Options pour le filtre INS, spécifié comme objet insOptions
.
Arguments de sortie
Structure étatique, restituée comme structure. Les noms de champs de la structure sont les noms des états que vous souhaitez estimer. Le filtre utilise la valeur de chaque champ comme valeur par défaut du composant d'état correspondant et utilise la taille de la valeur comme taille du composant d'état correspondant.
Conseil
Vous pouvez utiliser la fonction objet stateparts
de l'objet filtre insEKF
pour accéder aux états enregistrés dans le filtre.
Historique des versions
Introduit dans R2022a
Voir aussi
measurement
| measurementJacobian
| stateTransition
| stateTransitionJacobian
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.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)