Class KalmanDriftEstimator

java.lang.Object
com.irurueta.navigation.inertial.calibration.DriftEstimator
com.irurueta.navigation.inertial.calibration.KalmanDriftEstimator

public class KalmanDriftEstimator extends DriftEstimator
Estimates accumulated drift in body orientation, position and velocity per unit of time using an INS Kalman filtered solution.
  • Field Details

    • kalmanConfig

      private com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig
      Configuration parameters for INS Loosely Coupled Kalman filter obtained through calibration.
    • initConfig

      private com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig
      Configuration parameters determining initial system noise covariance matrix.
    • kalmanEstimator

      private com.irurueta.navigation.inertial.INSLooselyCoupledKalmanFilteredEstimator kalmanEstimator
      Internal INS loosely coupled Kalman filtered estimator to estimate accumulated body position, velocity and orientation.
    • state

      private com.irurueta.navigation.inertial.INSLooselyCoupledKalmanState state
      Current Kalman filter state.
  • Constructor Details

    • KalmanDriftEstimator

      public KalmanDriftEstimator()
      Constructor.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(DriftEstimatorListener listener)
      Constructor.
      Parameters:
      listener - listener to handle events.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig)
      Constructor.
      Parameters:
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener)
      Constructor.
      Parameters:
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
    • KalmanDriftEstimator

      public KalmanDriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig, com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      kalmanConfig - configuration parameters obtained through calibration.
      initConfig - configuration parameters determining initial system noise covariance matrix.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any of the provided matrices are not 3x3.
  • Method Details

    • getKalmanConfig

      public com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig getKalmanConfig()
      Gets configuration parameters for INS Loosely Coupled Kalman filter obtained through calibration.
      Returns:
      configuration parameters for Kalman filter or null.
    • setKalmanConfig

      public void setKalmanConfig(com.irurueta.navigation.inertial.INSLooselyCoupledKalmanConfig kalmanConfig) throws com.irurueta.navigation.LockedException
      Sets configuration parameters for INS Loosely Coupled Kalman filter obtained through calibration.
      Parameters:
      kalmanConfig - configuration parameters for Kalman filter.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
    • getInitConfig

      public com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig getInitConfig()
      Gets configuration parameters determining initial system noise covariance matrix.
      Returns:
      configuration parameters determining initial system noise covariance matrix or null.
    • setInitConfig

      public void setInitConfig(com.irurueta.navigation.inertial.INSLooselyCoupledKalmanInitializerConfig initConfig) throws com.irurueta.navigation.LockedException
      Sets configuration parameters determining initial system noise covariance matrix.
      Parameters:
      initConfig - configuration parameters determining initial system noise covariance matrix.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
    • isReady

      public boolean isReady()
      Indicates if estimator is ready to start processing additional kinematics measurements.
      Overrides:
      isReady in class DriftEstimator
      Returns:
      true if ready, false otherwise.
    • addBodyKinematics

      public void addBodyKinematics(com.irurueta.navigation.inertial.BodyKinematics kinematics) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, DriftEstimationException
      Adds a sample of measured body kinematics (accelerometer and gyroscope readings) obtained from an IMU, fixes their values and uses fixed values to estimate current drift and their average values.
      Overrides:
      addBodyKinematics in class DriftEstimator
      Parameters:
      kinematics - measured body kinematics.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
      com.irurueta.navigation.NotReadyException - if estimator is not ready.
      DriftEstimationException - if estimation fails for some reason.
    • reset

      public void reset() throws com.irurueta.navigation.LockedException
      Resets this estimator to its initial state.
      Overrides:
      reset in class DriftEstimator
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getState

      public com.irurueta.navigation.inertial.INSLooselyCoupledKalmanState getState()
      Gets state of internal Kalman filter containing current body position, orientation and velocity after last provided body kinematics measurement.
      Returns:
      state of internal Kalman filter.
    • getState

      public boolean getState(com.irurueta.navigation.inertial.INSLooselyCoupledKalmanState result)
      Gets state of internal Kalman filter containing current body position, orientation and velocity after last provided body kinematics measurement.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the internal Kalman filter state is available and the result is updated, false otherwise.
    • initialize

      private void initialize() throws com.irurueta.geometry.InvalidRotationMatrixException
      Initializes internal frame and Kalman estimator when the first body kinematics measurement is provided.
      Throws:
      com.irurueta.geometry.InvalidRotationMatrixException - if orientation cannot be determined for numerical reasons.
    • computeCurrentPositionDrift

      protected void computeCurrentPositionDrift()
      Computes current position drift.
      Overrides:
      computeCurrentPositionDrift in class DriftEstimator
    • computeCurrentVelocityDrift

      protected void computeCurrentVelocityDrift()
      Computes current velocity drift.
      Overrides:
      computeCurrentVelocityDrift in class DriftEstimator
    • computeCurrentOrientationDrift

      protected void computeCurrentOrientationDrift() throws com.irurueta.geometry.InvalidRotationMatrixException
      Computes current orientation drift.
      Overrides:
      computeCurrentOrientationDrift in class DriftEstimator
      Throws:
      com.irurueta.geometry.InvalidRotationMatrixException - if rotation cannot be accurately estimated.