Class WindowedBodyKinematicsNoiseEstimator

java.lang.Object
com.irurueta.navigation.inertial.calibration.noise.WindowedBodyKinematicsNoiseEstimator
All Implemented Interfaces:
AccelerometerNoiseRootPsdSource, GyroscopeNoiseRootPsdSource

public class WindowedBodyKinematicsNoiseEstimator extends Object implements AccelerometerNoiseRootPsdSource, GyroscopeNoiseRootPsdSource
Estimates accelerometer and angular speed noise variances and PSD's (Power Spectral Densities) along with their average values for a windowed amount of samples. This estimator must be used when the body where the accelerometer and gyroscope are attached remains static on the same position with zero velocity and constant (or zero) angular speed while capturing data. To compute PSD's, this estimator assumes that measurement samples are obtained at a constant provided rate equal to getTimeInterval() seconds. If not available, sampling rate average can be estimated using TimeIntervalEstimator. This estimator does NOT require the knowledge of current location and body orientation. Because body location and orientation is not known, estimated average values cannot be used to determine biases. Only norm of noise estimations (variance or standard deviation) can be safely used.
  • Field Details

    • DEFAULT_WINDOW_SIZE

      public static final int DEFAULT_WINDOW_SIZE
      Number of samples to keep within the window by default. For an accelerometer generating 100 samples/second, this is equivalent to 1 second. For an accelerometer generating 50 samples/second, this is equivalent to 2 seconds.
      See Also:
    • MIN_WINDOW_SIZE

      public static final int MIN_WINDOW_SIZE
      Minimum allowed window size.
      See Also:
    • DEFAULT_TIME_INTERVAL_SECONDS

      public static final double DEFAULT_TIME_INTERVAL_SECONDS
      Default time interval between accelerometer samples expressed in seconds (s).
      See Also:
    • windowSize

      private int windowSize
      Length of number of samples to keep within the window being processed. Window size must always be larger than allowed minimum value.
    • timeInterval

      private double timeInterval
      Time interval expressed in seconds (s) between consecutive accelerometer samples.
    • windowedSamples

      private final LinkedList<BodyKinematics> windowedSamples
      Keeps the list of body kinematics samples that remain within the window.
    • listener

      Listener to handle events raised by this estimator.
    • avgSpecificForceX

      private double avgSpecificForceX
      Estimated average of x coordinate of specific force expressed in meters per squared second (m/s^2).
    • avgSpecificForceY

      private double avgSpecificForceY
      Estimated average of y coordinate of specific force expressed in meters per squared second (m/s^2).
    • avgSpecificForceZ

      private double avgSpecificForceZ
      Estimated average of z coordinate of specific force expressed in meters per squared second (m/s^2).
    • avgAngularRateX

      private double avgAngularRateX
      Estimated average of x coordinate of angular rate expressed in radians per second (rad/s).
    • avgAngularRateY

      private double avgAngularRateY
      Estimated average of y coordinate of angular rate expressed in radians per second (rad/s).
    • avgAngularRateZ

      private double avgAngularRateZ
      Estimated average of z coordinate of angular rate expressed in radians per second (rad/s).
    • varianceSpecificForceX

      private double varianceSpecificForceX
      Estimated variance of x coordinate of specific force expressed in (m^2/s^4).
    • varianceSpecificForceY

      private double varianceSpecificForceY
      Estimated variance of y coordinate of specific force expressed in (m^2/s^4).
    • varianceSpecificForceZ

      private double varianceSpecificForceZ
      Estimated variance of z coordinate of specific force expressed in (m^2/s^4).
    • varianceAngularRateX

      private double varianceAngularRateX
      Estimated variance of x coordinate of angular rate expressed in (rad^2/s^2).
    • varianceAngularRateY

      private double varianceAngularRateY
      Estimated variance of y coordinate of angular rate expressed in (rad^2/s^2).
    • varianceAngularRateZ

      private double varianceAngularRateZ
      Estimated variance of z coordinate of angular rate expressed in (rad^2/s^2).
    • numberOfProcessedSamples

      private int numberOfProcessedSamples
      Number of processed acceleration triad samples.
    • running

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

    • WindowedBodyKinematicsNoiseEstimator

      public WindowedBodyKinematicsNoiseEstimator()
      Constructor.
    • WindowedBodyKinematicsNoiseEstimator

      public WindowedBodyKinematicsNoiseEstimator(WindowedBodyKinematicsNoiseEstimatorListener listener)
      Constructor.
      Parameters:
      listener - listener to handle events raised by this estimator.
  • Method Details

    • getWindowSize

      public int getWindowSize()
      Gets length of number of samples to keep within the window being processed. Window size must always be larger than allowed minimum value.
      Returns:
      length of number of samples to keep within the window.
    • setWindowSize

      public void setWindowSize(int windowSize) throws com.irurueta.navigation.LockedException
      Sets length of number of samples to keep within the window being processed. Window size must always be larger than allowed minimum value. When window size is modified, instance state is reset.
      Parameters:
      windowSize - length of number of samples to keep within the window.
      Throws:
      IllegalArgumentException - if provided value is not valid.
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getTimeInterval

      public double getTimeInterval()
      Gets time interval between body kinematics samples expressed in seconds (s).
      Returns:
      time interval between accelerometer triad samples.
    • setTimeInterval

      public void setTimeInterval(double timeInterval) throws com.irurueta.navigation.LockedException
      Sets time interval between body kinematics samples expressed in seconds (s).
      Parameters:
      timeInterval - time interval between accelerometer triad samples.
      Throws:
      IllegalArgumentException - if provided value is negative.
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getTimeIntervalAsTime

      public com.irurueta.units.Time getTimeIntervalAsTime()
      Gets time interval between body kinematics samples.
      Returns:
      time interval between accelerometer triad samples.
    • getTimeIntervalAsTime

      public void getTimeIntervalAsTime(com.irurueta.units.Time result)
      Gets time interval between body kinematics samples.
      Parameters:
      result - instance where time interval will be stored.
    • setTimeInterval

      public void setTimeInterval(com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.LockedException
      Sets time interval between body kinematics samples.
      Parameters:
      timeInterval - time interval between accelerometer triad samples.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getListener

      Gets listener to handle events raised by this estimator.
      Returns:
      listener to handle events raised by this estimator.
    • setListener

      public void setListener(WindowedBodyKinematicsNoiseEstimatorListener listener) throws com.irurueta.navigation.LockedException
      Sets listener to handle events raised by this estimator.
      Parameters:
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.LockedException - if this estimator is running.
    • getFirstWindowedBodyKinematics

      public BodyKinematics getFirstWindowedBodyKinematics()
      Gets first provided body kinematics within the window.
      Returns:
      first provided body kinematics within the window or null if not available.
    • getFirstWindowedBodyKinematics

      public boolean getFirstWindowedBodyKinematics(BodyKinematics result)
      Gets first provided body kinematics within the window.
      Parameters:
      result - instance where first provided body kinematics will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • getLastWindowedBodyKinematics

      public BodyKinematics getLastWindowedBodyKinematics()
      Gets last provided body kinematics within the window.
      Returns:
      last provided body kinematics within the window or null if not available.
    • getLastWindowedBodyKinematics

      public boolean getLastWindowedBodyKinematics(BodyKinematics result)
      Gets last provided body kinematics within the window.
      Parameters:
      result - instance where last provided body kinematics will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • getAvgSpecificForceX

      public double getAvgSpecificForceX()
      Gets estimated average of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of x coordinate of sensed specific force.
    • getAvgSpecificForceXAsMeasurement

      public com.irurueta.units.Acceleration getAvgSpecificForceXAsMeasurement()
      Gets estimated average of x coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of x coordinate of sensed specific force.
    • getAvgSpecificForceXAsMeasurement

      public void getAvgSpecificForceXAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated average of x coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of x coordinate of sensed specific force will be stored.
    • getAvgSpecificForceY

      public double getAvgSpecificForceY()
      Gets estimated average of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of y coordinate of sensed specific force.
    • getAvgSpecificForceYAsMeasurement

      public com.irurueta.units.Acceleration getAvgSpecificForceYAsMeasurement()
      Gets estimated average of y coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of y coordinate of sensed specific force.
    • getAvgSpecificForceYAsMeasurement

      public void getAvgSpecificForceYAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated average of y coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of y coordinate of sensed specific force will be stored.
    • getAvgSpecificForceZ

      public double getAvgSpecificForceZ()
      Gets estimated average of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of z coordinate of sensed specific force.
    • getAvgSpecificForceZAsMeasurement

      public com.irurueta.units.Acceleration getAvgSpecificForceZAsMeasurement()
      Gets estimated average of z coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of z coordinate of sensed specific force.
    • getAvgSpecificForceZAsMeasurement

      public void getAvgSpecificForceZAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated average of z coordinate of accelerometer sensed specific force. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of z coordinate of sensed specific force will be stored.
    • getAvgSpecificForceAsTriad

      public AccelerationTriad getAvgSpecificForceAsTriad()
      Gets estimated average of accelerometer sensed specific force as a measurement triad.
      Returns:
      average accelerometer triad.
    • getAvgSpecificForceAsTriad

      public void getAvgSpecificForceAsTriad(AccelerationTriad result)
      Gets estimated average of accelerometer sensed specific force as a measurement triad.
      Parameters:
      result - instance where average accelerometer triad will be stored.
    • getAvgSpecificForceNorm

      public double getAvgSpecificForceNorm()
      Gets norm of estimated average acceleration expressed in meters per squared second (m/s^2). This value is independent of body orientation.
      Returns:
      norm of estimated average acceleration.
    • getAvgSpecificForceNormAsMeasurement

      public com.irurueta.units.Acceleration getAvgSpecificForceNormAsMeasurement()
      Gets norm of estimated average acceleration within current window.
      Returns:
      norm of estimated average acceleration.
    • getAvgSpecificForceNormAsMeasurement

      public void getAvgSpecificForceNormAsMeasurement(com.irurueta.units.Acceleration result)
      Gets norm of estimated average acceleration.
      Parameters:
      result - instance where norm of estimated average acceleration will be stored.
    • getAvgAngularRateX

      public double getAvgAngularRateX()
      Gets estimated average of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of x coordinate of sensed angular rate.
    • getAvgAngularRateXAsMeasurement

      public com.irurueta.units.AngularSpeed getAvgAngularRateXAsMeasurement()
      Gets estimated average of x coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of x coordinate of sensed angular rate.
    • getAvgAngularRateXAsMeasurement

      public void getAvgAngularRateXAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated average of x coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of x coordinate of sensed angular rate will be stored.
    • getAvgAngularRateY

      public double getAvgAngularRateY()
      Gets estimated average of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of y coordinate of sensed angular rate.
    • getAvgAngularRateYAsMeasurement

      public com.irurueta.units.AngularSpeed getAvgAngularRateYAsMeasurement()
      Gets estimated average of y coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of y coordinate of sensed angular rate.
    • getAvgAngularRateYAsMeasurement

      public void getAvgAngularRateYAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated average of y coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of y coordinate of sensed angular rate will be stored.
    • getAvgAngularRateZ

      public double getAvgAngularRateZ()
      Gets estimated average of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of z coordinate of sensed angular rate.
    • getAvgAngularRateZAsMeasurement

      public com.irurueta.units.AngularSpeed getAvgAngularRateZAsMeasurement()
      Gets estimated average of z coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Returns:
      average of z coordinate of sensed angular rate.
    • getAvgAngularRateZAsMeasurement

      public void getAvgAngularRateZAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated average of z coordinate of gyroscope sensed angular rate. This value will depend of body location and orientation, hence it should never be used as a calibration bias.
      Parameters:
      result - instance where average of z coordinate of sensed angular rate will be stored.
    • getAvgAngularRateTriad

      public AngularSpeedTriad getAvgAngularRateTriad()
      Gets estimated average of gyroscope sensed angular speed as a measurement triad.
      Returns:
      average angular speed triad.
    • getAvgAngularRateTriad

      public void getAvgAngularRateTriad(AngularSpeedTriad result)
      Gets estimated average of gyroscope sensed angular speed as a measurement triad.
      Parameters:
      result - instance where average angular speed triad will be stored.
    • getAvgAngularRateNorm

      public double getAvgAngularRateNorm()
      Gets norm of estimated average angular speed expressed in radians per second (rad/s). This value is independent of body orientation.
      Returns:
      norm of estimated average angular speed.
    • getAvgAngularRateNormAsMeasurement

      public com.irurueta.units.AngularSpeed getAvgAngularRateNormAsMeasurement()
      Gets norm of estimated average angular speed. This value is independent of body orientation.
      Returns:
      norm of estimated average angular speed.
    • getAvgAngularRateNormAsMeasurement

      public void getAvgAngularRateNormAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets norm of estimated average angular speed. This value is independent of body orientation.
      Parameters:
      result - instance where norm of estimated average angular speed will be stored.
    • getAvgBodyKinematics

      public BodyKinematics getAvgBodyKinematics()
      Gets estimated average of body kinematics.
      Returns:
      estimated average of body kinematics.
    • getAvgBodyKinematics

      public void getAvgBodyKinematics(BodyKinematics result)
      Gets estimated average of body kinematics.
      Parameters:
      result - instance where estimated average of body kinematics will be stored.
    • getVarianceSpecificForceX

      public double getVarianceSpecificForceX()
      Gets estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
      Returns:
      estimated variance of x coordinate of sensed specific force.
    • getVarianceSpecificForceY

      public double getVarianceSpecificForceY()
      Gets estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
      Returns:
      estimated variance of y coordinate of sensed specific force.
    • getVarianceSpecificForceZ

      public double getVarianceSpecificForceZ()
      Gets estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
      Returns:
      estimated variance of z coordinate of sensed specific force.
    • getVarianceAngularRateX

      public double getVarianceAngularRateX()
      Gets estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
      Returns:
      estimated variance of x coordinate of sensed angular rate.
    • getVarianceAngularRateY

      public double getVarianceAngularRateY()
      Gets estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
      Returns:
      estimated variance of y coordinate of sensed angular rate.
    • getVarianceAngularRateZ

      public double getVarianceAngularRateZ()
      Gets estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
      Returns:
      estimated variance of z coordinate of sensed angular rate.
    • getStandardDeviationSpecificForceX

      public double getStandardDeviationSpecificForceX()
      Gets estimated standard deviation of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
      Returns:
      estimated standard deviation of x coordinate of sensed specific force.
    • getStandardDeviationSpecificForceXAsMeasurement

      public com.irurueta.units.Acceleration getStandardDeviationSpecificForceXAsMeasurement()
      Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.
      Returns:
      estimated standard deviation of x coordinate of sensed specific force.
    • getStandardDeviationSpecificForceXAsMeasurement

      public void getStandardDeviationSpecificForceXAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.
      Parameters:
      result - instance where estimated standard deviation of x coordinate of sensed specific force will be stored.
    • getStandardDeviationSpecificForceY

      public double getStandardDeviationSpecificForceY()
      Gets estimated standard deviation of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
      Returns:
      estimated standard deviation of y coordinate of sensed specific force.
    • getStandardDeviationSpecificForceYAsMeasurement

      public com.irurueta.units.Acceleration getStandardDeviationSpecificForceYAsMeasurement()
      Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.
      Returns:
      estimated standard deviation of y coordinate of sensed specific force.
    • getStandardDeviationSpecificForceYAsMeasurement

      public void getStandardDeviationSpecificForceYAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.
      Parameters:
      result - instance where estimated standard deviation of y coordinate of sensed specific force will be stored.
    • getStandardDeviationSpecificForceZ

      public double getStandardDeviationSpecificForceZ()
      Gets estimated standard deviation of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
      Returns:
      estimated standard deviation of z coordinate of sensed specific force.
    • getStandardDeviationSpecificForceZAsMeasurement

      public com.irurueta.units.Acceleration getStandardDeviationSpecificForceZAsMeasurement()
      Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.
      Returns:
      estimated standard deviation of z coordinate of sensed specific force.
    • getStandardDeviationSpecificForceZAsMeasurement

      public void getStandardDeviationSpecificForceZAsMeasurement(com.irurueta.units.Acceleration result)
      Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.
      Parameters:
      result - instance where estimated standard deviation of z coordinate of sensed specific force will be stored.
    • getStandardDeviationSpecificForceTriad

      public AccelerationTriad getStandardDeviationSpecificForceTriad()
      Gets estimated standard deviation triad of accelerometer measurements.
      Returns:
      estimated standard deviation triad of accelerometer measurements.
    • getStandardDeviationSpecificForceTriad

      public void getStandardDeviationSpecificForceTriad(AccelerationTriad result)
      Gets estimated standard deviation triad of accelerometer measurements.
      Parameters:
      result - instance where estimated standard deviation triad of accelerometer measurements will be stored.
    • getStandardDeviationSpecificForceNorm

      public double getStandardDeviationSpecificForceNorm()
      Gets norm of estimated standard deviation of accelerometer measurements expressed in meters per squared second (m/s^2).
      Returns:
      norm of estimated standard deviation of accelerometer measurements.
    • getStandardDeviationSpecificForceNormAsMeasurement

      public com.irurueta.units.Acceleration getStandardDeviationSpecificForceNormAsMeasurement()
      Gets norm of estimated standard deviation of accelerometer measurements.
      Returns:
      norm of estimated standard deviation of measurements.
    • getStandardDeviationSpecificForceNormAsMeasurement

      public void getStandardDeviationSpecificForceNormAsMeasurement(com.irurueta.units.Acceleration result)
      Gets norm of estimated standard deviation of accelerometer measurements.
      Parameters:
      result - instance where norm of estimated standard deviation will be stored.
    • getAverageStandardDeviationSpecificForce

      public double getAverageStandardDeviationSpecificForce()
      Gets average of estimated standard deviation coordinates of accelerometer measurements expressed in meters per squared second (m/s^2).
      Returns:
      average of estimated standard deviation coordinates.
    • getAverageStandardDeviationSpecificForceAsMeasurement

      public com.irurueta.units.Acceleration getAverageStandardDeviationSpecificForceAsMeasurement()
      Gets average of estimated standard deviation coordinates of accelerometer measurements.
      Returns:
      average of estimated standard deviation coordinates.
    • getAverageStandardDeviationSpecificForceAsMeasurement

      public void getAverageStandardDeviationSpecificForceAsMeasurement(com.irurueta.units.Acceleration result)
      Gets average of estimated standard deviation coordinates of accelerometer measurements.
      Parameters:
      result - instance where average of estimated standard deviation coordinates will be stored.
    • getStandardDeviationAngularRateX

      public double getStandardDeviationAngularRateX()
      Gets estimated standard deviation of x coordinate of gyroscope expressed in radians per second (rad/s).
      Returns:
      estimated standard deviation of x coordinate of gyroscope.
    • getStandardDeviationAngularRateXAsMeasurement

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateXAsMeasurement()
      Gets estimated standard deviation of x coordinate of gyroscope.
      Returns:
      estimated standard deviation of x coordinate of gyroscope.
    • getStandardDeviationAngularRateXAsMeasurement

      public void getStandardDeviationAngularRateXAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of x coordinate of gyroscope.
      Parameters:
      result - estimated standard deviation of x coordinate of gyroscope.
    • getStandardDeviationAngularRateY

      public double getStandardDeviationAngularRateY()
      Gets estimated standard deviation of y coordinate of gyroscope expressed in radians per second (rad/s).
      Returns:
      estimated standard deviation of y coordinate of gyroscope.
    • getStandardDeviationAngularRateYAsMeasurement

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateYAsMeasurement()
      Gets estimated standard deviation of y coordinate of gyroscope.
      Returns:
      estimated standard deviation of y coordinate of gyroscope.
    • getStandardDeviationAngularRateYAsMeasurement

      public void getStandardDeviationAngularRateYAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of y coordinate of gyroscope.
      Parameters:
      result - estimated standard deviation of y coordinate of gyroscope.
    • getStandardDeviationAngularRateZ

      public double getStandardDeviationAngularRateZ()
      Gets estimated standard deviation of z coordinate of gyroscope expressed in radians per second (rad/s).
      Returns:
      estimated standard deviation of z coordinate of gyroscope.
    • getStandardDeviationAngularRateZAsMeasurement

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateZAsMeasurement()
      Gets estimated standard deviation of z coordinate of gyroscope.
      Returns:
      estimated standard deviation of z coordinate of gyroscope.
    • getStandardDeviationAngularRateZAsMeasurement

      public void getStandardDeviationAngularRateZAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of z coordinate of gyroscope.
      Parameters:
      result - estimated standard deviation of z coordinate of gyroscope.
    • getStandardDeviationAngularSpeedTriad

      public AngularSpeedTriad getStandardDeviationAngularSpeedTriad()
      Gets estimated standard deviation triad of angular speed measurements.
      Returns:
      estimated standard deviation triad of angular speed measurements.
    • getStandardDeviationAngularSpeedTriad

      public void getStandardDeviationAngularSpeedTriad(AngularSpeedTriad result)
      Gets estimated standard deviation triad of angular speed measurements.
      Parameters:
      result - instance where estimated standard deviation triad of gyroscope measurements will be stored.
    • getStandardDeviationAngularSpeedNorm

      public double getStandardDeviationAngularSpeedNorm()
      Gets norm of estimated standard deviation of gyroscope measurements expressed in radians per second (rad/s).
      Returns:
      norm of estimated standard deviation of gyroscope measurements.
    • getStandardDeviationAngularSpeedNormAsMeasurement

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularSpeedNormAsMeasurement()
      Gets norm of estimated standard deviation of gyroscope measurements.
      Returns:
      norm of estimated standard deviation of measurements.
    • getStandardDeviationAngularSpeedNormAsMeasurement

      public void getStandardDeviationAngularSpeedNormAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets norm of estimated standard deviation of gyroscope measurements.
      Parameters:
      result - instance where norm of estimated standard deviation will be stored.
    • getAverageStandardDeviationAngularSpeed

      public double getAverageStandardDeviationAngularSpeed()
      Gets average of estimated standard deviation coordinates of gyroscope measurements expressed in radians per second (rad/s).
      Returns:
      average of estimated standard deviation coordinates.
    • getAverageStandardDeviationAngularSpeedAsMeasurement

      public com.irurueta.units.AngularSpeed getAverageStandardDeviationAngularSpeedAsMeasurement()
      Gets average of estimated standard deviation coordinates of gyroscope measurements.
      Returns:
      average of estimated standard deviation coordinates.
    • getAverageStandardDeviationAngularSpeedAsMeasurement

      public void getAverageStandardDeviationAngularSpeedAsMeasurement(com.irurueta.units.AngularSpeed result)
      Gets average of estimated standard deviation coordinates of gyroscope measurements.
      Parameters:
      result - instance where average of estimated standard deviation coordinates will be stored.
    • getStandardDeviationAsBodyKinematics

      public BodyKinematics getStandardDeviationAsBodyKinematics()
      Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.
      Returns:
      a body kinematics instance containing standard deviation values.
    • getStandardDeviationAsBodyKinematics

      public void getStandardDeviationAsBodyKinematics(BodyKinematics result)
      Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.
      Parameters:
      result - instance where data will be stored.
    • getSpecificForcePsdX

      public double getSpecificForcePsdX()
      Gets accelerometer noise PSD (Power Spectral Density) on x axis expressed in (m^2 * s^-3).
      Returns:
      accelerometer noise PSD on x axis.
    • getSpecificForcePsdY

      public double getSpecificForcePsdY()
      Gets accelerometer noise PSD (Power Spectral Density) on y axis expressed in (m^2 * s^-3).
      Returns:
      accelerometer noise PSD on y axis.
    • getSpecificForcePsdZ

      public double getSpecificForcePsdZ()
      Gets accelerometer noise PSD (Power Spectral Density) on z axis expressed in (m^2 * s^-3).
      Returns:
      accelerometer noise PSD on z axis.
    • getAngularRatePsdX

      public double getAngularRatePsdX()
      Gets gyroscope noise PSD (Power Spectral Density) on x axis expressed in (rad^2/s).
      Returns:
      gyroscope noise PSD on x axis.
    • getAngularRatePsdY

      public double getAngularRatePsdY()
      Gets gyroscope noise PSD (Power Spectral Density) on y axis expressed in (rad^2/s).
      Returns:
      gyroscope noise PSD on y axis.
    • getAngularRatePsdZ

      public double getAngularRatePsdZ()
      Gets gyroscope noise PSD (Power Spectral Density) on z axis expressed in (rad^2/s).
      Returns:
      gyroscope noise PSD on z axis.
    • getSpecificForceRootPsdX

      public double getSpecificForceRootPsdX()
      Gets accelerometer noise root PSD (Power Spectral Density) on x axis expressed in (m * s^-1.5).
      Returns:
      accelerometer noise root PSD on x axis.
    • getSpecificForceRootPsdY

      public double getSpecificForceRootPsdY()
      Gets accelerometer noise root PSD (Power Spectral Density) on y axis expressed in (m * s^-1.5).
      Returns:
      accelerometer noise root PSD on y axis.
    • getSpecificForceRootPsdZ

      public double getSpecificForceRootPsdZ()
      Gets accelerometer noise root PSD (Power Spectral Density) on z axis expressed in (m * s^-1.5).
      Returns:
      accelerometer noise root PSD on z axis.
    • getAngularRateRootPsdX

      public double getAngularRateRootPsdX()
      Gets gyroscope noise root PSD (Power Spectral Density) on x axis expressed in (rad * s^-0.5).
      Returns:
      gyroscope noise root PSD on x axis.
    • getAngularRateRootPsdY

      public double getAngularRateRootPsdY()
      Gets gyroscope noise root PSD (Power Spectral Density) on y axis expressed in (rad * s^-0.5).
      Returns:
      gyroscope noise root PSD on y axis.
    • getAngularRateRootPsdZ

      public double getAngularRateRootPsdZ()
      Gets gyroscope noise root PSD (Power Spectral Density) on z axis expressed in (rad * s^-0.5).
      Returns:
      gyroscope noise root PSD on z axis.
    • getAvgSpecificForceNoisePsd

      public double getAvgSpecificForceNoisePsd()
      Gets average accelerometer noise PSD (Power Spectral Density) among x,y,z components expressed as (m^2/s^-3).
      Returns:
      average accelerometer noise PSD.
    • getSpecificForceNoiseRootPsdNorm

      public double getSpecificForceNoiseRootPsdNorm()
      Gets norm of noise root PSD (Power Spectral Density) among x,y,z components expressed as (m * s^-1.5).
      Returns:
      norm of noise root PSD.
    • getAvgAngularRateNoisePsd

      public double getAvgAngularRateNoisePsd()
      Gets average gyroscope noise PSD (Power Spectral Density) among x,y,z components expressed in (rad^2/s).
      Returns:
      average gyroscope noise PSD.
    • getAngularRateNoiseRootPsdNorm

      public double getAngularRateNoiseRootPsdNorm()
      Gets norm of noise root PSD (Power Spectral Density) among x,y,z components expressed as (rad * s^-0.5).
      Returns:
      norm of noise root PSD.
    • getNumberOfProcessedSamples

      public int getNumberOfProcessedSamples()
      Gets number of samples that have been processed so far.
      Returns:
      number of samples that have been processed so far.
    • getNumberOfSamplesInWindow

      public int getNumberOfSamplesInWindow()
      Gets number of currently windowed samples.
      Returns:
      number of samples within the window.
    • isRunning

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

      public boolean isWindowFilled()
      Indicates whether window of samples is filled or not.
      Returns:
      true if window is filled, false otherwise.
    • addBodyKinematicsAndProcess

      public boolean addBodyKinematicsAndProcess(double specificForceX, double specificForceY, double specificForceZ, double angularRateX, double angularRateY, double angularRateZ) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement and processes current window.
      Parameters:
      specificForceX - x coordinate of specific force expressed in meters per squared second (m/s^2).
      specificForceY - y coordinate of specific force expressed in meters per squared second (m/s^2).
      specificForceZ - z coordinate of specific force expressed in meters per squared second (m/s^2).
      angularRateX - x coordinate of angular rate expressed in radians per second (rad/s).
      angularRateY - y coordinate of angular rate expressed in radians per second (rad/s).
      angularRateZ - z coordinate of angular rate expressed in radians per second (rad/s).
      Returns:
      true if provided kinematics instance has been processed, false if it has been ignored.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematicsAndProcess

      public boolean addBodyKinematicsAndProcess(com.irurueta.units.Acceleration specificForceX, com.irurueta.units.Acceleration specificForceY, com.irurueta.units.Acceleration specificForceZ, com.irurueta.units.AngularSpeed angularRateX, com.irurueta.units.AngularSpeed angularRateY, com.irurueta.units.AngularSpeed angularRateZ) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement and processes current window.
      Parameters:
      specificForceX - x coordinate of specific force.
      specificForceY - y coordinate of specific force.
      specificForceZ - z coordinate of specific force.
      angularRateX - x coordinate of angular rate.
      angularRateY - y coordinate of angular rate.
      angularRateZ - z coordinate of angular rate.
      Returns:
      true if provided kinematics instance has been processed, false if it has been ignored.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematicsAndProcess

      public boolean addBodyKinematicsAndProcess(AccelerationTriad specificForce, AngularSpeedTriad angularSpeed) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement and processes current window.
      Parameters:
      specificForce - specific force triad.
      angularSpeed - angular speed triad.
      Returns:
      true if provided kinematics instance has been processed, false if it has been ignored.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematicsAndProcess

      public boolean addBodyKinematicsAndProcess(BodyKinematics kinematics) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement and processes current window.
      Parameters:
      kinematics - body kinematics to be added and processed.
      Returns:
      true if provided kinematics instance has been processed, false if it has been ignored.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematics

      public void addBodyKinematics(double specificForceX, double specificForceY, double specificForceZ, double angularRateX, double angularRateY, double angularRateZ) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement.
      Parameters:
      specificForceX - x coordinate of specific force expressed in meters per squared second (m/s^2).
      specificForceY - y coordinate of specific force expressed in meters per squared second (m/s^2).
      specificForceZ - z coordinate of specific force expressed in meters per squared second (m/s^2).
      angularRateX - x coordinate of angular rate expressed in radians per second (rad/s).
      angularRateY - y coordinate of angular rate expressed in radians per second (rad/s).
      angularRateZ - z coordinate of angular rate expressed in radians per second (rad/s).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematics

      public void addBodyKinematics(com.irurueta.units.Acceleration specificForceX, com.irurueta.units.Acceleration specificForceY, com.irurueta.units.Acceleration specificForceZ, com.irurueta.units.AngularSpeed angularRateX, com.irurueta.units.AngularSpeed angularRateY, com.irurueta.units.AngularSpeed angularRateZ) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement.
      Parameters:
      specificForceX - x coordinate of specific force.
      specificForceY - y coordinate of specific force.
      specificForceZ - z coordinate of specific force.
      angularRateX - x coordinate of angular rate.
      angularRateY - y coordinate of angular rate.
      angularRateZ - z coordinate of angular rate.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematics

      public void addBodyKinematics(AccelerationTriad specificForce, AngularSpeedTriad angularSpeed) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement.
      Parameters:
      specificForce - specific force triad.
      angularSpeed - angular speed triad.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • addBodyKinematics

      public void addBodyKinematics(BodyKinematics kinematics) throws com.irurueta.navigation.LockedException
      Adds a body kinematics measurement.
      Parameters:
      kinematics - body kinematics to be added.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • reset

      public boolean reset() throws com.irurueta.navigation.LockedException
      Resets current estimator.
      Returns:
      true if estimator was successfully reset, false if no reset was needed.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • internalAdd

      private boolean internalAdd(BodyKinematics kinematics, boolean process) throws com.irurueta.navigation.LockedException
      Internally adds a body kinematics measurement and processes current window if indicated.
      Parameters:
      kinematics - body kinematics to be added.
      process - true if window of samples must also be processed, false otherwise.
      Returns:
      true if result values were updated, false if not enough samples are available yet and no average or variance values have been computed yet.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • processWindow

      private boolean processWindow()
      Processes current windowed samples.
      Returns:
      true if sample was processed, false it there are not enough samples to process current window.
    • getAccelerometerBaseNoiseLevelRootPsd

      public double getAccelerometerBaseNoiseLevelRootPsd()
      Gets accelerometer base noise level root PSD (Power Spectral Density) expressed in (m * s^-1.5).
      Specified by:
      getAccelerometerBaseNoiseLevelRootPsd in interface AccelerometerNoiseRootPsdSource
      Returns:
      accelerometer base noise level root PSD.
    • getGyroscopeBaseNoiseLevelRootPsd

      public double getGyroscopeBaseNoiseLevelRootPsd()
      Gets gyroscope base noise level root PSD (Power Spectral Density) expressed in (rad * s^-0.5)
      Specified by:
      getGyroscopeBaseNoiseLevelRootPsd in interface GyroscopeNoiseRootPsdSource
      Returns:
      gyroscope base noise level root PSD.