Class INSGNSSTightlyCoupledKalmanFilteredEstimator

java.lang.Object
com.irurueta.navigation.inertial.INSGNSSTightlyCoupledKalmanFilteredEstimator

public class INSGNSSTightlyCoupledKalmanFilteredEstimator extends Object
Calculates position, velocity, attitude, clock offset, clock drift and IMU biases using a GNSS unweighted iterated least squares estimator along with an INS tightly coupled Kalman filter to take into account inertial measurements to smooth results. This implementation is based on the equations defined in "Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, Second Edition" and on the companion software available at: https://github.com/ymjdz/MATLAB-Codes/blob/master/Tightly_coupled_INS_GNSS.m
  • Field Details

    • lsEstimator

      private final com.irurueta.navigation.gnss.GNSSLeastSquaresPositionAndVelocityEstimator lsEstimator
      Internal estimator to compute least squares solution for GNSS measurements.
    • listener

      Listener to notify events raised by this instance.
    • epochInterval

      private double epochInterval
      Minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
    • config

      INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
    • measurements

      private Collection<com.irurueta.navigation.gnss.GNSSMeasurement> measurements
      GNSS measurements of a collection of satellites.
    • kinematics

      private BodyKinematics kinematics
      Last provided user kinematics containing applied specific force and angular rates resolved in body axes.
    • correctedKinematics

      private BodyKinematics correctedKinematics
      Contains last provided user kinematics minus currently estimated bias for acceleration and angular rate values.
    • frame

      private com.irurueta.navigation.frames.ECEFFrame frame
      Internally keeps user position, velocity and attitude.
    • initialConfig

      Configuration containing uncertainty measures to set initial covariance matrix within estimated state. Once this estimator is initialized, covariance will be updated with new provided GNSS and INS measurements until convergence is reached.
    • estimation

      private com.irurueta.navigation.gnss.GNSSEstimation estimation
      Current estimation containing user ECEF position, user ECEF velocity, clock offset and clock drift.
    • state

      Current Kalman filter state containing current INS/GNSS estimation along with Kalman filter covariance error matrix.
    • lastStateTimestamp

      private Double lastStateTimestamp
      Timestamp expressed in seconds since epoch time when Kalman filter state was last propagated.
    • running

      private boolean running
      Indicates whether this estimator is running or not.
  • Constructor Details

    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator()
      Constructor.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config)
      Constructor.
      Parameters:
      config - INS/GNSS Kalman filter configuration parameters (usually obtained through calibration).
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      listener - listener to notify events raised by this instance.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      listener - listener to notify events raised by this instance.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS Kalman filter configuration parameters (usually obtained through calibration).
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      config - INS/GNSS Kalman filter configuration parameters (usually obtained through calibration).
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener)
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS Kalman filter configuration parameters (usually obtained through calibration).
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, double epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
    • INSGNSSTightlyCoupledKalmanFilteredEstimator

      public INSGNSSTightlyCoupledKalmanFilteredEstimator(INSTightlyCoupledKalmanConfig config, com.irurueta.units.Time epochInterval, INSTightlyCoupledKalmanInitializerConfig initialConfig, com.irurueta.navigation.frames.CoordinateTransformation c, INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      config - INS/GNSS tightly coupled Kalman filter configuration parameters (usually obtained through calibration).
      epochInterval - minimum epoch interval between consecutive propagations or measurements.
      initialConfig - initial INS tightly coupled Kalman configuration to set proper initial covariance during filter initialization.
      c - body-to-ECEF coordinate transformation defining the initial body attitude.
      listener - listener to notify events raised by this instance.
      Throws:
      IllegalArgumentException - if provided epoch interval is negative.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid.
  • Method Details

    • getListener

      Gets listener to notify events raised by this instance.
      Returns:
      listener to notify events raised by this instance.
    • setListener

      public void setListener(INSGNSSTightlyCoupledKalmanFilteredEstimatorListener listener) throws com.irurueta.navigation.LockedException
      Sets listener to notify events raised by this instance.
      Parameters:
      listener - listener to notify events raised by this instance.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
    • getEpochInterval

      public double getEpochInterval()
      Gets minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements expressed in seconds. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
      Returns:
      minimum epoch interval between consecutive propagations or measurements.
    • setEpochInterval

      public void setEpochInterval(double epochInterval) throws com.irurueta.navigation.LockedException
      Sets minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements expressed in seconds. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
      Parameters:
      epochInterval - minimum epoch interval expressed in seconds (s) between consecutive propagations or measurements.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      IllegalArgumentException - if provided epoch interval is negative.
    • getEpochIntervalAsTime

      public void getEpochIntervalAsTime(com.irurueta.units.Time result)
      Gets minimum epoch interval between consecutive propagations or measurements. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
      Parameters:
      result - instance where minimum epoch interval will be stored.
    • getEpochIntervalAsTime

      public com.irurueta.units.Time getEpochIntervalAsTime()
      Gets minimum epoch interval between consecutive propagations or measurements. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
      Returns:
      minimum epoch interval.
    • setEpochInterval

      public void setEpochInterval(com.irurueta.units.Time epochInterval) throws com.irurueta.navigation.LockedException
      Sets minimum epoch interval between consecutive propagations or measurements. Attempting to propagate results using Kalman filter or updating measurements when intervals are less than this value, will be ignored.
      Parameters:
      epochInterval - minimum epoch interval.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      IllegalArgumentException - if provided epoch interval is negative.
    • getConfig

      public boolean getConfig(INSTightlyCoupledKalmanConfig result)
      Gets INS/GNSS tightly coupled Kalman configuration parameters (usually obtained through calibration).
      Parameters:
      result - instance where INS/GNSS tightly coupled Kalman configuration parameters will be stored.
      Returns:
      true if result instance is updated, false otherwise.
    • getConfig

      public INSTightlyCoupledKalmanConfig getConfig()
      Gets INS/GNSS tightly coupled Kalman configuration parameters (usually obtained through calibration).
      Returns:
      INS/GNSS tightly coupled Kalman configuration parameters.
    • setConfig

      public void setConfig(INSTightlyCoupledKalmanConfig config) throws com.irurueta.navigation.LockedException
      Sets INS/GNSS tightly coupled Kalman configuration parameters (usually obtained through calibration).
      Parameters:
      config - INS/GNSS tightly coupled Kalman configuration parameters to be set.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
    • getCoordinateTransformation

      public com.irurueta.navigation.frames.CoordinateTransformation getCoordinateTransformation()
      Gets body-to-ECEF coordinate transformation defining the body attitude. This can be used to set the initial body attitude before starting the estimator, or to update body attitude between INS/GNSS measurement updates.
      Returns:
      body-to-ECEF coordinate transformation.
    • getCoordinateTransformation

      public boolean getCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation result)
      Gets body-to-ECEF coordinate transformation defining the body attitude. This can be used to set the initial body attitude before starting the estimator, or to update body attitude between INS/GNSS measurement updates.
      Parameters:
      result - instance where body-to-ECEF data will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • setCoordinateTransformation

      public void setCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation c) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets body-to-ECEF coordinate transformation defining the body attitude. This can be used to set the initial body attitude before starting the estimator, or to update body attitude between INS/GNSS measurement updates.
      Parameters:
      c - body-to-ECEF coordinate transformation to be set.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not valid (is not a body-to-ECEF transformation).
      com.irurueta.navigation.LockedException - if this estimator is already running.
    • getInitialConfig

      public boolean getInitialConfig(INSTightlyCoupledKalmanInitializerConfig result)
      Gets initial INS tightly coupled Kalman configuration to set a proper initial covariance matrix during the first Kalman filter propagation. Once this estimator is initialized, covariance will be updated with new provided GNSS and INS measurements until convergence is reached.
      Parameters:
      result - instance where configuration data will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • getInitialConfig

      public INSTightlyCoupledKalmanInitializerConfig getInitialConfig()
      Gets initial INS tightly coupled Kalman configuration to set a proper initial covariance matrix during the first Kalman filter propagation. Once this estimator is initialized, covariance will be updated with new provided GNSS and INS measurements until convergence is reached.
      Returns:
      initial INS tightly coupled Kalman configuration.
    • setInitialConfig

      public void setInitialConfig(INSTightlyCoupledKalmanInitializerConfig initialConfig) throws com.irurueta.navigation.LockedException
      Sets initial INS tightly coupled Kalman configuration to set a proper initial covariance matrix during the first Kalman filter propagation. Once this estimator is initialized, covariance will be updated with new provided GNSS and INS measurements until convergence is reached.
      Parameters:
      initialConfig - initial configuration to be set.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
    • getMeasurements

      public Collection<com.irurueta.navigation.gnss.GNSSMeasurement> getMeasurements()
      Gets last updated GNSS measurements of a collection of satellites.
      Returns:
      last updated GNSS measurements of a collection of satellites.
    • getKinematics

      public BodyKinematics getKinematics()
      Gets last provided user kinematics containing applied specific force and angular rates resolved in body axes.
      Returns:
      last provided user kinematics.
    • getKinematics

      public boolean getKinematics(BodyKinematics result)
      Gets last provided user kinematics containing applied specific force and angular rates resolved in body axes.
      Parameters:
      result - instance where last provided body kinematics will be stored.
      Returns:
      true if provided result instance was updated, false otherwise.
    • getCorrectedKinematics

      public BodyKinematics getCorrectedKinematics()
      Gets corrected kinematics which are the last provided user kinematics after removal of the biases estimated by the Kalman filter.
      Returns:
      corrected kinematics.
      See Also:
    • getCorrectedKinematics

      public boolean getCorrectedKinematics(BodyKinematics result)
      Gets corrected kinematics which are the last provided user kinematics after removal of the biases estimated by the Kalman filter.
      Parameters:
      result - instance where corrected body kinematics will be stored.
      Returns:
      true if provided result instance was updated, false otherwise.
    • getEstimation

      public com.irurueta.navigation.gnss.GNSSEstimation getEstimation()
      Gets current estimation containing user ECEF position, user ECEF velocity, clock offset and clock drift.
      Returns:
      current estimation containing user ECEF position, user ECEF velocity, clock offset and clock drift.
    • getEstimation

      public boolean getEstimation(com.irurueta.navigation.gnss.GNSSEstimation result)
      Gets current estimation containing user ECEF position, user ECEF velocity, clock offset and clock drift. This method does not update result instance if no estimation is available.
      Parameters:
      result - instance where estimation will be stored.
      Returns:
      true if result estimation was updated, false otherwise.
    • getState

      public INSTightlyCoupledKalmanState getState()
      Gets current Kalman filter state containing current INS/GNSS estimation along with Kalman filter covariance error matrix.
      Returns:
      current Kalman filter state containing current INS/GNSS estimation along with Kalman filter covariance error matrix.
    • getState

      public boolean getState(INSTightlyCoupledKalmanState result)
      Gets current Kalman filter state containing current INS/GNSS estimation along with Kalman filter covariance error matrix. This method does not update result instance if no state is available.
      Parameters:
      result - instance where state will be stored.
      Returns:
      true if result state was updated, false otherwise.
    • getLastStateTimestamp

      public Double getLastStateTimestamp()
      Gets timestamp expressed in seconds since epoch time when Kalman filter state was last propagated.
      Returns:
      timestamp expressed in seconds since epoch time when Kalman filter state was last propagated.
    • getLastStateTimestampAsTime

      public boolean getLastStateTimestampAsTime(com.irurueta.units.Time result)
      Gets timestamp since epoch time when Kalman filter state was last propagated.
      Parameters:
      result - instance where timestamp since epoch time when Kalman filter state was last propagated will be stored.
      Returns:
      true if result instance is updated, false otherwise.
    • getLastStateTimestampAsTime

      public com.irurueta.units.Time getLastStateTimestampAsTime()
      Gets timestamp since epoch time when Kalman filter state was last propagated.
      Returns:
      timestamp since epoch time when Kalman filter state was last propagated.
    • isRunning

      public boolean isRunning()
      Indicates whether this estimator is running or not.
      Returns:
      true if this estimator is running, false otherwise.
    • isUpdateMeasurementsReady

      public static boolean isUpdateMeasurementsReady(Collection<com.irurueta.navigation.gnss.GNSSMeasurement> measurements)
      Indicates whether provided measurements are ready to be used for an update.
      Parameters:
      measurements - measurements to be checked.
      Returns:
      true if estimator is ready, false otherwise.
    • updateMeasurements

      public boolean updateMeasurements(Collection<com.irurueta.navigation.gnss.GNSSMeasurement> measurements, com.irurueta.units.Time timestamp) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, INSGNSSException
      Updates GNSS measurements of this estimator when new satellite measurements are available. Calls to this method will be ignored if interval between provided timestamp and last timestamp when Kalman filter was updated is less than epoch interval.
      Parameters:
      measurements - GNSS measurements to be updated.
      timestamp - timestamp since epoch time when GNSS measurements were updated.
      Returns:
      true if measurements were updated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      com.irurueta.navigation.NotReadyException - if estimator is not ready for measurements updates.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • updateMeasurements

      public boolean updateMeasurements(Collection<com.irurueta.navigation.gnss.GNSSMeasurement> measurements, double timestamp) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, INSGNSSException
      Updates GNSS measurements of this estimator when new satellite measurements are available. Call to this method will be ignored if interval between provided timestamp and last timestamp when Kalman filter was updated is less than epoch interval.
      Parameters:
      measurements - GNSS measurements to be updated.
      timestamp - timestamp expressed in seconds since epoch time when GNSS measurements were updated.
      Returns:
      true if measurements were updated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      com.irurueta.navigation.NotReadyException - if estimator is not ready for measurements updates.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • updateBodyKinematics

      public boolean updateBodyKinematics(BodyKinematics kinematics, com.irurueta.units.Time timestamp) throws com.irurueta.navigation.LockedException, INSGNSSException
      Updates specific force and angular rate applied to the user's body expressed in coordinates resolved along body-frame axes.
      Parameters:
      kinematics - kinematics applied to body (specific force and angular rate) during last period of time. These measures are obtained from an inertial unit (IMU).
      timestamp - timestamp since epoch time when specific force and angular rate values were updated.
      Returns:
      true if body kinematics values were updated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • updateBodyKinematics

      public boolean updateBodyKinematics(BodyKinematics kinematics, double timestamp) throws com.irurueta.navigation.LockedException, INSGNSSException
      Updates specific force and angular rate applied to the user's body expressed in coordinates resolved along body-frame axes.
      Parameters:
      kinematics - kinematics applied to body (specific force and angular rate) during last period of time. These measures are obtained from an inertial unit (IMU).
      timestamp - timestamp expressed in seconds since epoch time when specific force and angular rate values were updated.
      Returns:
      true if body kinematics values were updated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • isPropagateReady

      public boolean isPropagateReady()
      Indicates whether this estimator is ready for state propagations.
      Returns:
      true if estimator is ready, false otherwise.
    • propagate

      public boolean propagate(com.irurueta.units.Time timestamp) throws com.irurueta.navigation.LockedException, INSGNSSException
      Propagates Kalman filter state held by this estimator at provided timestamp. Call to this method will be ignored if interval between provided timestamp and last timestamp when Kalman filter was updated is less than epoch interval.
      Parameters:
      timestamp - timestamp since epoch to propagate state.
      Returns:
      true if state was propagated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • propagate

      public boolean propagate(double timestamp) throws com.irurueta.navigation.LockedException, INSGNSSException
      Propagates Kalman filter state held by this estimator at provided timestamp. Call to this method will be ignored if interval between provided timestamp and last timestamp when Kalman filter was updated is less than epoch interval.
      Parameters:
      timestamp - timestamp expressed in seconds since epoch to propagate state.
      Returns:
      true if state was propagated, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
      INSGNSSException - if estimation fails due to numerical instabilities.
    • reset

      public void reset() throws com.irurueta.navigation.LockedException
      Resets this estimator.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is already running.
    • initFrame

      private boolean initFrame()
      Initializes current ECEF frame containing user position, velocity and orientation expressed an resolved in ECEF coordinates. This method makes no action if an initial frame already exists.
      Returns:
      true if frame was initialized, false otherwise.
    • initInitialConfig

      private void initInitialConfig()
      Initializes initial INS tightly coupled Kalman configuration to set a proper initial covariance matrix. This method makes no action if an initial configuration already exists.
    • correctKinematics

      private void correctKinematics(BodyKinematics kinematics)
      Corrects provided kinematics by taking into account currently estimated specific force and angular rate biases. This method stores the result into the variable member containing corrected kinematics values.
      Parameters:
      kinematics - kinematics instance to be corrected.