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.

insAccelerometer

Lecturas del acelerómetro modelo para la fusión de sensores

Desde R2022a

Descripción

El objeto insAccelerometer modela las lecturas del acelerómetro para la fusión de sensores. Pasar un objeto insAccelerometer a un objeto insEKF permite que el objeto insEKF fusione los datos del acelerómetro. Para obtener detalles sobre el modelo del acelerómetro, consulte Algoritmos.

Creación

Descripción

sensor = insAccelerometer crea un objeto insAccelerometer. Al pasar el sensor creado a un objeto insEKF se permite que el objeto insEKF fusione los datos del acelerómetro. Al fusionar datos con la función de objeto fuse de insEKF, pase sensor como segundo argumento para identificar los datos obtenidos de un acelerómetro.

ejemplo

Ejemplos

contraer todo

Crea dos objetos insAccelerometer y pásalos a un objeto insEKF.

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

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

Dado que el objeto insMotionOrientation no modela la aceleración lineal, el filtro no estima la aceleración.

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]

Crea otros dos objetos insAccelerometer y pásalos a un nuevo objeto insEKF. Dado que el objeto insMotionPose modela la aceleración lineal, el filtro estima la aceleración.

sensor3 = insAccelerometer;
sensor4 = insAccelerometer;

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

                   State: [22×1 double]
         StateCovariance: [22×22 double]
    AdditiveProcessNoise: [22×22 double]
             MotionModel: [1×1 insMotionPose]
                 Sensors: {[1×1 insAccelerometer]  [1×1 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]

Fusionar una medida 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
         0
         0
         0
   -0.0026
   -0.0026
      ⋮

Algoritmos

El objeto insAccelerometer modela la lectura del acelerómetro como aceleración en el marco del sensor. Dependiendo de si el objeto insEKF estima la aceleración lineal en las ecuaciones de estado, la ecuación de medición toma una de dos formas:

  • Si el objeto insEKF no estima el estado de aceleración, la ecuación de medición es:

    h(x)=gsensor+Δ

    donde h(x) es la salida de medición tridimensional, gsensor es la aceleración gravitacional expresada en el marco del sensor y Δ es el sesgo tridimensional del sensor, modelado como un vector constante en el marco del sensor.

  • Si el objeto insEKF estima el estado de aceleración, la ecuación es:

    h(x)=gsensor+asensor+Δ

    donde asensor es la aceleración, excluida la aceleración de la gravedad, expresada en el marco del sensor.

Al pasar un objeto insAccelerometer a un objeto de filtro insEKF se permite que el objeto de filtro rastree adicionalmente el sesgo del acelerómetro. Internamente, el objeto insEKF decide si el estado de aceleración se estima llamando a su función de objeto stateparts.

Historial de versiones

Introducido en R2022a

Consulte también

|