Main Content

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

insAccelerometer

Modèle de lectures d'accéléromètre pour la fusion de capteurs

Depuis R2022a

Description

L'objet insAccelerometer modélise les lectures de l'accéléromètre pour la fusion de capteurs. Passer un objet insAccelerometer à un objet insEKF permet à l'objet insEKF de fusionner les données de l'accéléromètre. Pour plus de détails sur le modèle d'accéléromètre, voir Algorithmes.

Création

Description

exemple

sensor = insAccelerometer crée un objet insAccelerometer . Passer le sensor créé à un objet insEKF permet à l'objet insEKF de fusionner les données de l'accéléromètre. Lors de la fusion de données avec la fonction objet fuse de insEKF, transmettez sensor comme deuxième argument pour identifier les données obtenues à partir d'un accéléromètre. .

Exemples

réduire tout

Créez deux objets insAccelerometer et transmettez-les à un objet insEKF .

sensor1 = insAccelerometer;
sensor2 = insAccelerometer;
filterOrientation = insEKF(sensor1,sensor2,insMotionOrientation)
filterOrientation = 
  insEKF with properties:

                   State: [13x1 double]
         StateCovariance: [13x13 double]
    AdditiveProcessNoise: [13x13 double]
             MotionModel: [1x1 insMotionOrientation]
                 Sensors: {[1x1 insAccelerometer]  [1x1 insAccelerometer]}
             SensorNames: {'Accelerometer'  'Accelerometer_1'}
          ReferenceFrame: 'NED'

Puisque l'objet insMotionOrientation ne modélise pas l'accélération linéaire, le filtre n'estime pas l'accélération.

stateinfo(filterOrientation)
ans = struct with fields:
             Orientation: [1 2 3 4]
         AngularVelocity: [5 6 7]
      Accelerometer_Bias: [8 9 10]
    Accelerometer_1_Bias: [11 12 13]

Créez deux autres objets insAccelerometer et transmettez-les à un nouvel objet insEKF . Puisque l'objet insMotionPose modélise l'accélération linéaire, le filtre estime l'accélération.

sensor3 = insAccelerometer;
sensor4 = insAccelerometer;

filterPose = insEKF(sensor3,sensor4,insMotionPose)
filterPose = 
  insEKF with properties:

                   State: [22x1 double]
         StateCovariance: [22x22 double]
    AdditiveProcessNoise: [22x22 double]
             MotionModel: [1x1 insMotionPose]
                 Sensors: {[1x1 insAccelerometer]  [1x1 insAccelerometer]}
             SensorNames: {'Accelerometer'  'Accelerometer_1'}
          ReferenceFrame: 'NED'

stateinfo(filterPose)
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]
      Accelerometer_Bias: [17 18 19]
    Accelerometer_1_Bias: [20 21 22]

Fusionnez une mesure de sensor3.

fuse(filterPose,sensor3,[1 1 1],eye(3))
ans = 22×1

    0.9958
    0.0649
   -0.0649
         0
         0
         0
         0
         0
         0
         0
      ⋮

Algorithmes

L'objet insAccelerometer modélise la lecture de l'accéléromètre comme une accélération dans le cadre du capteur. Selon que l'objet insEKF estime ou non l'accélération linéaire dans les équations d'état, l'équation de mesure prend l'une des deux formes suivantes :

  • Si l'objet insEKF n'estime pas l'état d'accélération, l'équation de mesure est :

    h(x)=gsensor+Δ

    h(x) est la sortie de mesure tridimensionnelle, g sensor est l'accélération gravitationnelle exprimée dans le cadre du capteur, et Δ est le biais tridimensionnel du capteur, modélisé comme un vecteur constant dans le cadre du capteur.

  • Si l'objet insEKF estime l'état d'accélération, l'équation est :

    h(x)=gsensor+asensor+Δ

    a sensor est l'accélération, à l'exclusion de l'accélération de la gravité, exprimée dans le cadre du capteur.

Le passage d'un objet insAccelerometer à un objet filtre insEKF permet à l'objet filtre de suivre en outre le biais de l'accéléromètre. En interne, l'objet insEKF décide si l'état d'accélération est estimé en appelant sa fonction objet stateparts .

Historique des versions

Introduit dans R2022a

Voir aussi

|