Class DriftEstimator

java.lang.Object
com.irurueta.navigation.inertial.calibration.DriftEstimator
Direct Known Subclasses:
KalmanDriftEstimator

public class DriftEstimator extends Object
Estimates accumulated drift in body orientation, position and velocity per unit of time. This estimator must be executed while the body where the IMU is placed remains static.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected com.irurueta.algebra.Matrix
    Contains current orientation expressed as a 3D rotation matrix.
    protected double
    Current orientation drift expressed in radians (rad).
    protected final com.irurueta.navigation.frames.ECEFPosition
    Contains current position drift.
    protected double
    Current position drift expressed in meters (m).
    protected final com.irurueta.navigation.frames.ECEFVelocity
    Contains current velocity drift.
    protected double
    Current velocity drift expressed in meters per second (m/s).
    static final double
    Default time interval between kinematics samples expressed in seconds (s).
    protected final com.irurueta.navigation.inertial.BodyKinematics
    Instance containing the last fixed body kinematics to be reused.
    protected final com.irurueta.navigation.inertial.calibration.BodyKinematicsFixer
    Fixes body kinematics measurements using accelerometer and gyroscope calibration data to fix measurements.
    protected boolean
    Indicates whether measured kinematics must be fixed or not.
    protected final com.irurueta.navigation.frames.ECEFFrame
    Contains the current frame after one navigation step.
    protected final com.irurueta.geometry.Quaternion
    Contains orientation inverse of the reference frame.
    Listener to handle events raised by this estimator.
    protected int
    Number of processed body kinematics samples.
    protected final com.irurueta.geometry.Quaternion
    Contains current frame orientation drift.
    protected com.irurueta.navigation.frames.ECEFFrame
    Initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
    protected final com.irurueta.geometry.Quaternion
    Contains orientation of a reference frame.
    protected boolean
    Indicates whether this estimator is running.
    protected double
    Time interval expressed in seconds (s) between body kinematics samples.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
    DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg)
    Constructor.
    DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener)
    Constructor.
    DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener)
    Constructor.
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addBodyKinematics(com.irurueta.navigation.inertial.BodyKinematics kinematics)
    Adds a sample of measured body kinematics (accelerometer and gyroscope readings) obtained from an IMU, fixes their values and uses fixed values to estimate current drift and their average values.
    protected void
    Computes current orientation drift.
    protected void
    Computes current position drift.
    protected void
    Computes current velocity drift.
    private static double
    convertTime(com.irurueta.units.Time time)
    Converts the provided time instance to seconds.
    com.irurueta.algebra.Matrix
    Gets acceleration bias values expressed in meters per squared second (m/s^2).
    void
    getAccelerationBias(com.irurueta.algebra.Matrix result)
    Gets acceleration bias values expressed in meters per squared second (m/s^2).
    double[]
    Gets acceleration bias values expressed in meters per squared second (m/s^2).
    void
    getAccelerationBiasArray(double[] result)
    Gets acceleration bias values expressed in meters per squared second (m/s^2).
    com.irurueta.navigation.inertial.calibration.AccelerationTriad
    Gets acceleration bias.
    void
    getAccelerationBiasAsTriad(com.irurueta.navigation.inertial.calibration.AccelerationTriad result)
    Gets acceleration bias.
    double
    Gets acceleration x-coordinate of bias expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets acceleration x-coordinate of bias.
    void
    getAccelerationBiasXAsAcceleration(com.irurueta.units.Acceleration result)
    Gets acceleration x-coordinate of bias.
    double
    Gets acceleration y-coordinate of bias expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets acceleration y-coordinate of bias.
    void
    getAccelerationBiasYAsAcceleration(com.irurueta.units.Acceleration result)
    Gets acceleration y-coordinate of bias.
    double
    Gets acceleration z-coordinate of bias expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets acceleration z-coordinate of bias.
    void
    getAccelerationBiasZAsAcceleration(com.irurueta.units.Acceleration result)
    Gets acceleration z-coordinate of bias.
    com.irurueta.algebra.Matrix
    Gets acceleration cross-coupling errors matrix.
    void
    getAccelerationCrossCouplingErrors(com.irurueta.algebra.Matrix result)
    Gets acceleration cross-coupling errors matrix.
    double
    Gets acceleration x-y cross-coupling error.
    double
    Gets acceleration x-z cross-coupling error.
    double
    Gets acceleration y-x cross-coupling error.
    double
    Gets acceleration y-z cross-coupling error.
    double
    Gets acceleration z-x cross-coupling error.
    double
    Gets acceleration z-y cross-coupling error.
    double
    Gets acceleration x scaling factor.
    double
    Gets acceleration y scaling factor.
    double
    Gets acceleration z scaling factor.
    com.irurueta.algebra.Matrix
    Gets angular speed bias values expressed in radians per second (rad/s).
    void
    getAngularSpeedBias(com.irurueta.algebra.Matrix result)
    Gets angular speed bias values expressed in radians per second (rad/s).
    double[]
    Gets angular speed bias values expressed in radians per second (rad/s).
    void
    getAngularSpeedBiasArray(double[] result)
    Gets angular speed bias values expressed in radians per second (rad/s).
    com.irurueta.navigation.inertial.calibration.AngularSpeedTriad
    Gets angular speed bias.
    void
    getAngularSpeedBiasAsTriad(com.irurueta.navigation.inertial.calibration.AngularSpeedTriad result)
    Gets angular speed bias.
    double
    Gets angular speed x-coordinate of bias expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets angular speed x-coordinate of bias.
    void
    getAngularSpeedBiasXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets angular speed x-coordinate of bias.
    double
    Gets angular speed y-coordinate of bias expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets angular speed y-coordinate of bias.
    void
    getAngularSpeedBiasYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets angular speed y-coordinate of bias.
    double
    Gets angular speed z-coordinate of bias expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets angular speed z-coordinate of bias.
    void
    getAngularSpeedBiasZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets angular speed z-coordinate of bias.
    com.irurueta.algebra.Matrix
    Gets angular speed cross-coupling errors matrix.
    void
    getAngularSpeedCrossCouplingErrors(com.irurueta.algebra.Matrix result)
    Gets angular speed cross-coupling errors matrix.
    com.irurueta.algebra.Matrix
    Gets angular speed g-dependant cross biases matrix.
    void
    getAngularSpeedGDependantCrossBias(com.irurueta.algebra.Matrix result)
    Gets angular speed g-dependant cross biases matrix.
    double
    Gets angular speed x-y cross-coupling error.
    double
    Gets angular speed x-z cross-coupling error.
    double
    Gets angular speed y-x cross-coupling error.
    double
    Gets angular speed y-z cross-coupling error.
    double
    Gets angular speed z-x cross-coupling error.
    double
    Gets angular speed z-y cross-coupling error.
    double
    Gets angular speed x scaling factor.
    double
    Gets angular speed y scaling factor.
    double
    Gets angular speed z scaling factor.
    com.irurueta.geometry.Rotation3D
    Gets current orientation drift as a 3D rotation for the last processed body kinematics measurement respect ECEF coordinates.
    boolean
    getCurrentOrientationDrift(com.irurueta.geometry.Rotation3D result)
    Gets current orientation drift as a 3D rotation for the last processed body kinematics measurement respect ECEF coordinates.
    com.irurueta.units.Angle
    Gets current amount of orientation drift for last processed body kinematics measurement.
    boolean
    getCurrentOrientationDriftAngle(com.irurueta.units.Angle result)
    Gets current amount of orientation drift for last processed body kinematics measurement.
    Gets the current amount of orientation drift per time unit expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets the current amount of orientation drift per time unit.
    boolean
    getCurrentOrientationDriftPerTimeUnitAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets the current amount of orientation drift per time unit.
    Gets current amount of orientation drift for last processed body kinematics measurement expressed in radians (rad).
    com.irurueta.navigation.frames.ECEFPosition
    Gets current position drift for last processed body kinematics measurement expressed in meters (m) respect ECEF coordinates.
    boolean
    getCurrentPositionDrift(com.irurueta.navigation.frames.ECEFPosition result)
    Gets current position drift for last processed body kinematics measurement expressed in meters (m) respect ECEF coordinates.
    com.irurueta.units.Distance
    Gets current amount of position drift for last processed body kinematics measurement.
    boolean
    getCurrentPositionDriftNorm(com.irurueta.units.Distance result)
    Gets current amount of position drift for last processed body kinematics measurement.
    Gets current amount of position drift for last processed body kinematics measurement expressed in meters (m).
    Gets the current amount of position drift per time unit expressed in meters per second (m/s).
    com.irurueta.units.Speed
    Gets the current amount of position drift per time unit.
    boolean
    getCurrentPositionDriftPerTimeUnitAsSpeed(com.irurueta.units.Speed result)
    Gets the current amount of position drift per time unit.
    com.irurueta.navigation.frames.ECEFVelocity
    Gets current velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s) respect ECEF coordinates.
    boolean
    getCurrentVelocityDrift(com.irurueta.navigation.frames.ECEFVelocity result)
    Gets current velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s) respect ECEF coordinates.
    com.irurueta.units.Speed
    Gets current amount of velocity drift for last processed body kinematics measurement.
    boolean
    getCurrentVelocityDriftNorm(com.irurueta.units.Speed result)
    Gets current amount of velocity drift for last processed body kinematics measurement.
    Gets current amount of velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s).
    Gets the current amount of velocity drift per time unit expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets the current amount of velocity drift per time unit.
    boolean
    getCurrentVelocityDriftPerTimeUnitAsAcceleration(com.irurueta.units.Acceleration result)
    Gets the current amount of velocity drift per time unit.
    com.irurueta.units.Time
    Gets elapsed time since the first processed measurement.
    boolean
    getElapsedTime(com.irurueta.units.Time result)
    Gets elapsed time since the first processed measurement.
    double
    Gets elapsed time since the first processed measurement expressed in seconds.
    Gets listener to handle events raised by this estimator.
    int
    Gets the number of samples that have been processed so far.
    com.irurueta.navigation.frames.CoordinateTransformation
    Gets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
    boolean
    getReferenceEcefCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation result)
    Gets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
    com.irurueta.navigation.frames.ECEFPosition
    Gets initial body position, expressed in ECEF coordinates, before starting drift estimation.
    boolean
    getReferenceEcefPosition(com.irurueta.navigation.frames.ECEFPosition result)
    Gets initial body position, expressed in ECEF coordinates, before starting drift estimation.
    com.irurueta.navigation.frames.ECEFVelocity
    Gets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
    boolean
    getReferenceEcefVelocity(com.irurueta.navigation.frames.ECEFVelocity result)
    Gets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
    com.irurueta.navigation.frames.ECEFFrame
    Gets initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
    com.irurueta.navigation.frames.CoordinateTransformation
    Gets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
    boolean
    getReferenceNedCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation result)
    Gets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
    com.irurueta.navigation.frames.NEDFrame
    Gets initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
    boolean
    getReferenceNedFrame(com.irurueta.navigation.frames.NEDFrame result)
    Gets initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
    com.irurueta.navigation.frames.NEDPosition
    Gets initial body position, expressed in NED coordinates, before starting drift estimation.
    boolean
    getReferenceNedPosition(com.irurueta.navigation.frames.NEDPosition result)
    Gets initial body position, expressed in NED coordinates, before starting drift estimation.
    com.irurueta.navigation.frames.NEDVelocity
    Gets initial body velocity, expressed in NED coordinates, before starting drift estimation.
    boolean
    getReferenceNedVelocity(com.irurueta.navigation.frames.NEDVelocity result)
    Gets initial body velocity, expressed in NED coordinates, before starting drift estimation.
    double
    Gets the time interval between body kinematics (IMU acceleration and gyroscope) samples expressed in seconds (s).
    com.irurueta.units.Time
    Gets time interval between body kinematics (IMU acceleration and gyroscope) samples.
    void
    getTimeIntervalAsTime(com.irurueta.units.Time result)
    Gets time interval between body kinematics (IMU acceleration and gyroscope) samples.
    boolean
    Indicates whether measured kinematics must be fixed or not.
    boolean
    Indicates if estimator is ready to start processing additional kinematics measurements.
    boolean
    Indicates whether this estimator is running.
    void
    Resets this estimator to its initial state.
    void
    setAccelerationBias(double[] bias)
    Sets acceleration bias values expressed in meters per squared second (m/s^2).
    void
    setAccelerationBias(double biasX, double biasY, double biasZ)
    Sets acceleration coordinates of bias expressed in meters per squared second (m/s^2).
    void
    setAccelerationBias(com.irurueta.algebra.Matrix bias)
    Sets acceleration bias values expressed in meters per squared second (m/s^2).
    void
    setAccelerationBias(com.irurueta.navigation.inertial.calibration.AccelerationTriad bias)
    Sets acceleration bias.
    void
    setAccelerationBias(com.irurueta.units.Acceleration biasX, com.irurueta.units.Acceleration biasY, com.irurueta.units.Acceleration biasZ)
    Sets acceleration coordinates of bias.
    void
    setAccelerationBiasX(double biasX)
    Sets acceleration x-coordinate of bias expressed in meters per squared second (m/s^2).
    void
    setAccelerationBiasX(com.irurueta.units.Acceleration biasX)
    Sets acceleration x-coordinate of bias.
    void
    setAccelerationBiasY(double biasY)
    Sets acceleration y-coordinate of bias expressed in meters per squared second (m/s^2).
    void
    setAccelerationBiasY(com.irurueta.units.Acceleration biasY)
    Sets acceleration y-coordinate of bias.
    void
    setAccelerationBiasZ(double biasZ)
    Sets acceleration z-coordinate of bias expressed in meters per squared second (m/s^2).
    void
    setAccelerationBiasZ(com.irurueta.units.Acceleration biasZ)
    Sets acceleration z-coordinate of bias.
    void
    setAccelerationCrossCouplingErrors(double mxy, double mxz, double myx, double myz, double mzx, double mzy)
    Sets acceleration cross-coupling errors.
    void
    setAccelerationCrossCouplingErrors(com.irurueta.algebra.Matrix crossCouplingErrors)
    Sets acceleration cross-coupling errors matrix.
    void
    setAccelerationMxy(double mxy)
    Sets acceleration x-y cross-coupling error.
    void
    setAccelerationMxz(double mxz)
    Sets acceleration x-z cross-coupling error.
    void
    setAccelerationMyx(double myx)
    Sets acceleration y-x cross-coupling error.
    void
    setAccelerationMyz(double myz)
    Sets acceleration y-z cross-coupling error.
    void
    setAccelerationMzx(double mzx)
    Sets acceleration z-x cross coupling error.
    void
    setAccelerationMzy(double mzy)
    Sets acceleration z-y cross-coupling error.
    void
    setAccelerationScalingFactors(double sx, double sy, double sz)
    Sets acceleration scaling factors.
    void
    setAccelerationScalingFactorsAndCrossCouplingErrors(double sx, double sy, double sz, double mxy, double mxz, double myx, double myz, double mzx, double mzy)
    Sets acceleration scaling factors and cross-coupling errors.
    void
    setAccelerationSx(double sx)
    Sets acceleration x scaling factor.
    void
    setAccelerationSy(double sy)
    Sets acceleration y scaling factor.
    void
    setAccelerationSz(double sz)
    Sets acceleration z scaling factor.
    void
    setAngularSpeedBias(double[] bias)
    Sets angular speed bias values expressed in radians per second (rad/s).
    void
    setAngularSpeedBias(double biasX, double biasY, double biasZ)
    Sets angular speed coordinates of bias expressed in radians per second (rad/s).
    void
    setAngularSpeedBias(com.irurueta.algebra.Matrix bias)
    Sets angular speed bias values expressed in radians per second (rad/s).
    void
    setAngularSpeedBias(com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bias)
    Sets angular speed bias.
    void
    setAngularSpeedBias(com.irurueta.units.AngularSpeed biasX, com.irurueta.units.AngularSpeed biasY, com.irurueta.units.AngularSpeed biasZ)
    Sets angular speed coordinates of bias.
    void
    setAngularSpeedBiasX(double biasX)
    Sets angular speed x-coordinate of bias expressed in radians per second (rad/s).
    void
    setAngularSpeedBiasX(com.irurueta.units.AngularSpeed biasX)
    Sets angular speed x-coordinate of bias.
    void
    setAngularSpeedBiasY(double biasY)
    Sets angular speed y-coordinate of bias expressed in radians per second (rad/s).
    void
    setAngularSpeedBiasY(com.irurueta.units.AngularSpeed biasY)
    Sets angular speed y-coordinate of bias.
    void
    setAngularSpeedBiasZ(double biasZ)
    Sets angular speed z-coordinate of bias expressed in radians per second (rad/s).
    void
    setAngularSpeedBiasZ(com.irurueta.units.AngularSpeed biasZ)
    Sets angular speed z-coordinate of bias.
    void
    setAngularSpeedCrossCouplingErrors(double mxy, double mxz, double myx, double myz, double mzx, double mzy)
    Sets angular speed cross-coupling errors.
    void
    setAngularSpeedCrossCouplingErrors(com.irurueta.algebra.Matrix crossCouplingErrors)
    Sets angular speed cross-coupling errors matrix.
    void
    setAngularSpeedGDependantCrossBias(com.irurueta.algebra.Matrix gDependantCrossBias)
    Sets angular speed g-dependant cross biases matrix.
    void
    setAngularSpeedMxy(double mxy)
    Sets angular speed x-y cross-coupling error.
    void
    setAngularSpeedMxz(double mxz)
    Sets angular speed x-z cross-coupling error.
    void
    setAngularSpeedMyx(double myx)
    Sets angular speed y-x cross-coupling error.
    void
    setAngularSpeedMyz(double myz)
    Sets angular speed y-z cross-coupling error.
    void
    setAngularSpeedMzx(double mzx)
    Sets angular speed z-x cross-coupling error.
    void
    setAngularSpeedMzy(double mzy)
    Sets angular speed z-y cross-coupling error.
    void
    setAngularSpeedScalingFactors(double sx, double sy, double sz)
    Sets angular speed scaling factors.
    void
    setAngularSpeedScalingFactorsAndCrossCouplingErrors(double sx, double sy, double sz, double mxy, double mxz, double myx, double myz, double mzx, double mzy)
    Sets angular speed scaling factors and cross-coupling errors.
    void
    setAngularSpeedSx(double sx)
    Sets angular speed x scaling factor.
    void
    setAngularSpeedSy(double sy)
    Sets angular speed y-scaling factor.
    void
    setAngularSpeedSz(double sz)
    Sets angular speed z scaling factor.
    void
    setFixKinematicsEnabled(boolean fixKinematics)
    Specifies whether measured kinematics must be fixed or not.
    void
    Sets listener to handle events raised by this estimator.
    void
    setReferenceEcefCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation referenceEcefCoordinateTransformation)
    Sets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
    void
    setReferenceEcefPosition(com.irurueta.navigation.frames.ECEFPosition referenceEcefPosition)
    Sets initial body position, expressed in ECEF coordinates, before starting drift estimation.
    void
    setReferenceEcefVelocity(com.irurueta.navigation.frames.ECEFVelocity referenceEcefVelocity)
    Sets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
    void
    setReferenceFrame(com.irurueta.navigation.frames.ECEFFrame referenceFrame)
    Sets initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
    void
    setReferenceNedCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation referenceNedCoordinateTransformation)
    Sets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
    void
    setReferenceNedFrame(com.irurueta.navigation.frames.NEDFrame referenceNedFrame)
    Sets an initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
    void
    setReferenceNedPosition(com.irurueta.navigation.frames.NEDPosition referenceNedPosition)
    Sets initial body position, expressed in NED coordinates, before starting drift estimation.
    void
    setReferenceNedVelocity(com.irurueta.navigation.frames.NEDVelocity referenceNedVelocity)
    Sets initial body velocity, expressed in NED coordinates, before starting drift estimation.
    void
    setTimeInterval(double timeInterval)
    Sets a time interval between body kinematics (IMU acceleration and gyroscope) samples expressed in seconds (s).
    void
    setTimeInterval(com.irurueta.units.Time timeInterval)
    Sets time interval between body kinematics (IMU acceleration and gyroscope) samples.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEFAULT_TIME_INTERVAL_SECONDS

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

      protected boolean running
      Indicates whether this estimator is running.
    • numberOfProcessedSamples

      protected int numberOfProcessedSamples
      Number of processed body kinematics samples.
    • timeInterval

      protected double timeInterval
      Time interval expressed in seconds (s) between body kinematics samples.
    • fixer

      protected final com.irurueta.navigation.inertial.calibration.BodyKinematicsFixer fixer
      Fixes body kinematics measurements using accelerometer and gyroscope calibration data to fix measurements.
    • fixedKinematics

      protected final com.irurueta.navigation.inertial.BodyKinematics fixedKinematics
      Instance containing the last fixed body kinematics to be reused.
    • fixKinematics

      protected boolean fixKinematics
      Indicates whether measured kinematics must be fixed or not. When enabled, provided calibration data is used; otherwise it is ignored. By default, this is enabled.
    • listener

      protected DriftEstimatorListener listener
      Listener to handle events raised by this estimator.
    • referenceFrame

      protected com.irurueta.navigation.frames.ECEFFrame referenceFrame
      Initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
    • frame

      protected final com.irurueta.navigation.frames.ECEFFrame frame
      Contains the current frame after one navigation step. This is reused for efficiency.
    • refQ

      protected final com.irurueta.geometry.Quaternion refQ
      Contains orientation of a reference frame. This is reused for efficiency.
    • invRefQ

      protected final com.irurueta.geometry.Quaternion invRefQ
      Contains orientation inverse of the reference frame. This is reused for efficiency.
    • q

      protected final com.irurueta.geometry.Quaternion q
      Contains current frame orientation drift. This is reused for efficiency.
    • currentPositionDrift

      protected final com.irurueta.navigation.frames.ECEFPosition currentPositionDrift
      Contains current position drift.
    • currentVelocityDrift

      protected final com.irurueta.navigation.frames.ECEFVelocity currentVelocityDrift
      Contains current velocity drift.
    • currentC

      protected com.irurueta.algebra.Matrix currentC
      Contains current orientation expressed as a 3D rotation matrix.
    • currentPositionDriftMeters

      protected double currentPositionDriftMeters
      Current position drift expressed in meters (m).
    • currentVelocityDriftMetersPerSecond

      protected double currentVelocityDriftMetersPerSecond
      Current velocity drift expressed in meters per second (m/s).
    • currentOrientationDriftRadians

      protected double currentOrientationDriftRadians
      Current orientation drift expressed in radians (rad).
  • Constructor Details

    • DriftEstimator

      public DriftEstimator()
      Constructor.
    • DriftEstimator

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

      public DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.frames.ECEFFrame referenceFrame, DriftEstimatorListener listener)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in ECEF coordinates.
      listener - listener to handle events.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.frames.NEDFrame referenceFrame, DriftEstimatorListener listener)
      Constructor.
      Parameters:
      referenceFrame - initial frame containing body position, velocity and orientation expressed in NED coordinates.
      listener - listener to handle events.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.navigation.inertial.calibration.AccelerationTriad ba, com.irurueta.algebra.Matrix ma, com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

      public DriftEstimator(com.irurueta.algebra.Matrix ba, com.irurueta.algebra.Matrix ma, com.irurueta.algebra.Matrix bg, com.irurueta.algebra.Matrix mg, com.irurueta.algebra.Matrix gg, DriftEstimatorListener listener) throws com.irurueta.algebra.AlgebraException
      Constructor.
      Parameters:
      ba - acceleration bias to be set expressed in meters per squared second (m/s`2). Must be 3x1.
      ma - acceleration cross-coupling errors matrix. Must be 3x3.
      bg - angular speed bias to be set expressed in radians per second (rad/s). Must be 3x1.
      mg - angular speed cross-coupling errors matrix. Must be 3x3.
      gg - angular speed g-dependent cross-biases matrix. Must be 3x3.
      listener - listener to handle events.
      Throws:
      com.irurueta.algebra.AlgebraException - if provided cross-coupling matrices cannot be inverted.
      IllegalArgumentException - if any provided matrices are not 3x3.
    • DriftEstimator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • getListener

      public DriftEstimatorListener getListener()
      Gets listener to handle events raised by this estimator.
      Returns:
      listener to handle events raised by this estimator.
    • setListener

      public void setListener(DriftEstimatorListener 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 estimator is running.
    • getReferenceFrame

      public com.irurueta.navigation.frames.ECEFFrame getReferenceFrame()
      Gets initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
      Returns:
      initial body frame or null.
    • setReferenceFrame

      public void setReferenceFrame(com.irurueta.navigation.frames.ECEFFrame referenceFrame) throws com.irurueta.navigation.LockedException
      Sets initial frame containing body position, velocity and orientation expressed in ECEF coordinates before starting drift estimation.
      Parameters:
      referenceFrame - initial frame or null.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
    • getReferenceNedFrame

      public com.irurueta.navigation.frames.NEDFrame getReferenceNedFrame()
      Gets initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
      Returns:
      initial body frame or null.
    • getReferenceNedFrame

      public boolean getReferenceNedFrame(com.irurueta.navigation.frames.NEDFrame result)
      Gets initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the initial frame was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceNedFrame

      public void setReferenceNedFrame(com.irurueta.navigation.frames.NEDFrame referenceNedFrame) throws com.irurueta.navigation.LockedException
      Sets an initial frame containing body position, velocity and orientation expressed in NED coordinates before starting drift estimation.
      Parameters:
      referenceNedFrame - initial body frame or null.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
    • getReferenceEcefPosition

      public com.irurueta.navigation.frames.ECEFPosition getReferenceEcefPosition()
      Gets initial body position, expressed in ECEF coordinates, before starting drift estimation.
      Returns:
      initial body position or null.
    • getReferenceEcefPosition

      public boolean getReferenceEcefPosition(com.irurueta.navigation.frames.ECEFPosition result)
      Gets initial body position, expressed in ECEF coordinates, before starting drift estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the initial body position was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceEcefPosition

      public void setReferenceEcefPosition(com.irurueta.navigation.frames.ECEFPosition referenceEcefPosition) throws com.irurueta.navigation.LockedException
      Sets initial body position, expressed in ECEF coordinates, before starting drift estimation.
      Parameters:
      referenceEcefPosition - initial body position.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      NullPointerException - if provided position is null.
    • getReferenceEcefVelocity

      public com.irurueta.navigation.frames.ECEFVelocity getReferenceEcefVelocity()
      Gets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
      Returns:
      initial body velocity or null.
    • getReferenceEcefVelocity

      public boolean getReferenceEcefVelocity(com.irurueta.navigation.frames.ECEFVelocity result)
      Gets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if initial body velocity was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceEcefVelocity

      public void setReferenceEcefVelocity(com.irurueta.navigation.frames.ECEFVelocity referenceEcefVelocity) throws com.irurueta.navigation.LockedException
      Sets initial body velocity, expressed in ECEF coordinates, before starting drift estimation.
      Parameters:
      referenceEcefVelocity - initial body velocity.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      NullPointerException - if velocity is null.
    • getReferenceEcefCoordinateTransformation

      public com.irurueta.navigation.frames.CoordinateTransformation getReferenceEcefCoordinateTransformation()
      Gets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
      Returns:
      initial body orientation or null.
    • getReferenceEcefCoordinateTransformation

      public boolean getReferenceEcefCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation result)
      Gets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if initial body orientation was available and a result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceEcefCoordinateTransformation

      public void setReferenceEcefCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation referenceEcefCoordinateTransformation) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Sets initial body coordinate transformation, containing body orientation expressed in ECEF coordinates, before starting estimation.
      Parameters:
      referenceEcefCoordinateTransformation - initial body orientation.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if source and destination types are invalid. Source type must be FrameType.BODY_FRAME and the destination type must be FrameType.EARTH_CENTERED_EARTH_FIXED_FRAME indicating that body orientation is expressed respect ECEF coordinates.
      NullPointerException - if orientation is null.
    • getReferenceNedPosition

      public com.irurueta.navigation.frames.NEDPosition getReferenceNedPosition()
      Gets initial body position, expressed in NED coordinates, before starting drift estimation.
      Returns:
      initial body position or null.
    • getReferenceNedPosition

      public boolean getReferenceNedPosition(com.irurueta.navigation.frames.NEDPosition result)
      Gets initial body position, expressed in NED coordinates, before starting drift estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the initial body position was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceNedPosition

      public void setReferenceNedPosition(com.irurueta.navigation.frames.NEDPosition referenceNedPosition) throws com.irurueta.navigation.LockedException
      Sets initial body position, expressed in NED coordinates, before starting drift estimation.
      Parameters:
      referenceNedPosition - initial body position.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      NullPointerException - if provided position is null.
    • getReferenceNedVelocity

      public com.irurueta.navigation.frames.NEDVelocity getReferenceNedVelocity()
      Gets initial body velocity, expressed in NED coordinates, before starting drift estimation.
      Returns:
      initial body velocity or null.
    • getReferenceNedVelocity

      public boolean getReferenceNedVelocity(com.irurueta.navigation.frames.NEDVelocity result)
      Gets initial body velocity, expressed in NED coordinates, before starting drift estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if initial body velocity was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceNedVelocity

      public void setReferenceNedVelocity(com.irurueta.navigation.frames.NEDVelocity referenceNedVelocity) throws com.irurueta.navigation.LockedException
      Sets initial body velocity, expressed in NED coordinates, before starting drift estimation.
      Parameters:
      referenceNedVelocity - initial body velocity.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      NullPointerException - if velocity is null.
    • getReferenceNedCoordinateTransformation

      public com.irurueta.navigation.frames.CoordinateTransformation getReferenceNedCoordinateTransformation()
      Gets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
      Returns:
      initial body orientation or null.
    • getReferenceNedCoordinateTransformation

      public boolean getReferenceNedCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation result)
      Gets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if initial body orientation was available and the result was updated, false otherwise.
      Throws:
      NullPointerException - if provided result instance is null.
    • setReferenceNedCoordinateTransformation

      public void setReferenceNedCoordinateTransformation(com.irurueta.navigation.frames.CoordinateTransformation referenceNedCoordinateTransformation) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Sets initial body coordinate transformation, containing body orientation expressed in NED coordinates, before starting estimation.
      Parameters:
      referenceNedCoordinateTransformation - initial body orientation.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is already running.
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if source and destination types are invalid. Source type must be FrameType.BODY_FRAME and the destination type must be FrameType.LOCAL_NAVIGATION_FRAME indicating that body orientation is expressed respect NED coordinates.
      NullPointerException - if orientation is null.
    • getAccelerationBias

      public com.irurueta.algebra.Matrix getAccelerationBias()
      Gets acceleration bias values expressed in meters per squared second (m/s^2).
      Returns:
      bias values expressed in meters per squared second.
    • getAccelerationBias

      public void getAccelerationBias(com.irurueta.algebra.Matrix result)
      Gets acceleration bias values expressed in meters per squared second (m/s^2).
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationBias

      public void setAccelerationBias(com.irurueta.algebra.Matrix bias) throws com.irurueta.navigation.LockedException
      Sets acceleration bias values expressed in meters per squared second (m/s^2).
      Parameters:
      bias - bias values expressed in meters per squared second. Must be 3x1.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      IllegalArgumentException - if any provided matrix is not 3x1.
    • getAccelerationBiasArray

      public double[] getAccelerationBiasArray()
      Gets acceleration bias values expressed in meters per squared second (m/s^2).
      Returns:
      bias values expressed in meters per squared second.
    • getAccelerationBiasArray

      public void getAccelerationBiasArray(double[] result)
      Gets acceleration bias values expressed in meters per squared second (m/s^2).
      Parameters:
      result - instance where result data will be stored.
      Throws:
      IllegalArgumentException - if provided array does not have length 3.
    • setAccelerationBias

      public void setAccelerationBias(double[] bias) throws com.irurueta.navigation.LockedException
      Sets acceleration bias values expressed in meters per squared second (m/s^2).
      Parameters:
      bias - bias values expressed in meters per squared second (m/s^2). Must have length 3.
      Throws:
      IllegalArgumentException - if provided array does not have length 3.
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasAsTriad

      public com.irurueta.navigation.inertial.calibration.AccelerationTriad getAccelerationBiasAsTriad()
      Gets acceleration bias.
      Returns:
      acceleration bias.
    • getAccelerationBiasAsTriad

      public void getAccelerationBiasAsTriad(com.irurueta.navigation.inertial.calibration.AccelerationTriad result)
      Gets acceleration bias.
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationBias

      public void setAccelerationBias(com.irurueta.navigation.inertial.calibration.AccelerationTriad bias) throws com.irurueta.navigation.LockedException
      Sets acceleration bias.
      Parameters:
      bias - acceleration bias to be set.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasX

      public double getAccelerationBiasX()
      Gets acceleration x-coordinate of bias expressed in meters per squared second (m/s^2).
      Returns:
      x-coordinate of bias expressed in meters per squared second (m/s^2).
    • setAccelerationBiasX

      public void setAccelerationBiasX(double biasX) throws com.irurueta.navigation.LockedException
      Sets acceleration x-coordinate of bias expressed in meters per squared second (m/s^2).
      Parameters:
      biasX - x-coordinate of bias expressed in meters per squared second (m/s^2).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasY

      public double getAccelerationBiasY()
      Gets acceleration y-coordinate of bias expressed in meters per squared second (m/s^2).
      Returns:
      y-coordinate of bias expressed in meters per squared second (m/s^2).
    • setAccelerationBiasY

      public void setAccelerationBiasY(double biasY) throws com.irurueta.navigation.LockedException
      Sets acceleration y-coordinate of bias expressed in meters per squared second (m/s^2).
      Parameters:
      biasY - y-coordinate of bias expressed in meters per squared second (m/s^2).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasZ

      public double getAccelerationBiasZ()
      Gets acceleration z-coordinate of bias expressed in meters per squared second (m/s^2).
      Returns:
      z-coordinate of bias expressed in meters per squared second (m/s^2).
    • setAccelerationBiasZ

      public void setAccelerationBiasZ(double biasZ) throws com.irurueta.navigation.LockedException
      Sets acceleration z-coordinate of bias expressed in meters per squared second (m/s^2).
      Parameters:
      biasZ - z-coordinate of bias expressed in meters per squared second (m/s^2).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setAccelerationBias

      public void setAccelerationBias(double biasX, double biasY, double biasZ) throws com.irurueta.navigation.LockedException
      Sets acceleration coordinates of bias expressed in meters per squared second (m/s^2).
      Parameters:
      biasX - x-coordinate of bias.
      biasY - y-coordinate of bias.
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasXAsAcceleration

      public com.irurueta.units.Acceleration getAccelerationBiasXAsAcceleration()
      Gets acceleration x-coordinate of bias.
      Returns:
      acceleration x-coordinate of bias.
    • getAccelerationBiasXAsAcceleration

      public void getAccelerationBiasXAsAcceleration(com.irurueta.units.Acceleration result)
      Gets acceleration x-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationBiasX

      public void setAccelerationBiasX(com.irurueta.units.Acceleration biasX) throws com.irurueta.navigation.LockedException
      Sets acceleration x-coordinate of bias.
      Parameters:
      biasX - acceleration x-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasYAsAcceleration

      public com.irurueta.units.Acceleration getAccelerationBiasYAsAcceleration()
      Gets acceleration y-coordinate of bias.
      Returns:
      acceleration y-coordinate of bias.
    • getAccelerationBiasYAsAcceleration

      public void getAccelerationBiasYAsAcceleration(com.irurueta.units.Acceleration result)
      Gets acceleration y-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationBiasY

      public void setAccelerationBiasY(com.irurueta.units.Acceleration biasY) throws com.irurueta.navigation.LockedException
      Sets acceleration y-coordinate of bias.
      Parameters:
      biasY - acceleration y-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationBiasZAsAcceleration

      public com.irurueta.units.Acceleration getAccelerationBiasZAsAcceleration()
      Gets acceleration z-coordinate of bias.
      Returns:
      acceleration z-coordinate of bias.
    • getAccelerationBiasZAsAcceleration

      public void getAccelerationBiasZAsAcceleration(com.irurueta.units.Acceleration result)
      Gets acceleration z-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationBiasZ

      public void setAccelerationBiasZ(com.irurueta.units.Acceleration biasZ) throws com.irurueta.navigation.LockedException
      Sets acceleration z-coordinate of bias.
      Parameters:
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setAccelerationBias

      public void setAccelerationBias(com.irurueta.units.Acceleration biasX, com.irurueta.units.Acceleration biasY, com.irurueta.units.Acceleration biasZ) throws com.irurueta.navigation.LockedException
      Sets acceleration coordinates of bias.
      Parameters:
      biasX - x-coordinate of bias.
      biasY - y-coordinate of bias.
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAccelerationCrossCouplingErrors

      public com.irurueta.algebra.Matrix getAccelerationCrossCouplingErrors()
      Gets acceleration cross-coupling errors matrix.
      Returns:
      acceleration cross-coupling errors matrix.
    • getAccelerationCrossCouplingErrors

      public void getAccelerationCrossCouplingErrors(com.irurueta.algebra.Matrix result)
      Gets acceleration cross-coupling errors matrix.
      Parameters:
      result - instance where the result will be stored.
    • setAccelerationCrossCouplingErrors

      public void setAccelerationCrossCouplingErrors(com.irurueta.algebra.Matrix crossCouplingErrors) throws com.irurueta.algebra.AlgebraException, com.irurueta.navigation.LockedException
      Sets acceleration cross-coupling errors matrix.
      Parameters:
      crossCouplingErrors - acceleration cross-coupling errors matrix. Must be 3x3.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if matrix cannot be inverted.
      IllegalArgumentException - if matrix is not 3x3.
    • getAccelerationSx

      public double getAccelerationSx()
      Gets acceleration x scaling factor.
      Returns:
      x scaling factor.
    • setAccelerationSx

      public void setAccelerationSx(double sx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration x scaling factor.
      Parameters:
      sx - x scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationSy

      public double getAccelerationSy()
      Gets acceleration y scaling factor.
      Returns:
      y scaling factor.
    • setAccelerationSy

      public void setAccelerationSy(double sy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration y scaling factor.
      Parameters:
      sy - y scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationSz

      public double getAccelerationSz()
      Gets acceleration z scaling factor.
      Returns:
      z scaling factor.
    • setAccelerationSz

      public void setAccelerationSz(double sz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration z scaling factor.
      Parameters:
      sz - z scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMxy

      public double getAccelerationMxy()
      Gets acceleration x-y cross-coupling error.
      Returns:
      acceleration x-y cross-coupling error.
    • setAccelerationMxy

      public void setAccelerationMxy(double mxy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration x-y cross-coupling error.
      Parameters:
      mxy - acceleration x-y cross-coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMxz

      public double getAccelerationMxz()
      Gets acceleration x-z cross-coupling error.
      Returns:
      acceleration x-z cross-coupling error.
    • setAccelerationMxz

      public void setAccelerationMxz(double mxz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration x-z cross-coupling error.
      Parameters:
      mxz - acceleration x-z cross-coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMyx

      public double getAccelerationMyx()
      Gets acceleration y-x cross-coupling error.
      Returns:
      acceleration y-x cross-coupling error.
    • setAccelerationMyx

      public void setAccelerationMyx(double myx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration y-x cross-coupling error.
      Parameters:
      myx - acceleration y-x cross-coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMyz

      public double getAccelerationMyz()
      Gets acceleration y-z cross-coupling error.
      Returns:
      y-z cross coupling error.
    • setAccelerationMyz

      public void setAccelerationMyz(double myz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration y-z cross-coupling error.
      Parameters:
      myz - y-z cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMzx

      public double getAccelerationMzx()
      Gets acceleration z-x cross-coupling error.
      Returns:
      acceleration z-x cross-coupling error.
    • setAccelerationMzx

      public void setAccelerationMzx(double mzx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration z-x cross coupling error.
      Parameters:
      mzx - acceleration z-x cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • getAccelerationMzy

      public double getAccelerationMzy()
      Gets acceleration z-y cross-coupling error.
      Returns:
      acceleration z-y cross-coupling error.
    • setAccelerationMzy

      public void setAccelerationMzy(double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration z-y cross-coupling error.
      Parameters:
      mzy - acceleration z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes acceleration cross-coupling matrix non-invertible.
    • setAccelerationScalingFactors

      public void setAccelerationScalingFactors(double sx, double sy, double sz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration scaling factors.
      Parameters:
      sx - x scaling factor.
      sy - y scaling factor.
      sz - z scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make acceleration cross-coupling matrix non-invertible.
    • setAccelerationCrossCouplingErrors

      public void setAccelerationCrossCouplingErrors(double mxy, double mxz, double myx, double myz, double mzx, double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration cross-coupling errors.
      Parameters:
      mxy - x-y cross coupling error.
      mxz - x-z cross coupling error.
      myx - y-x cross coupling error.
      myz - y-z cross coupling error.
      mzx - z-x cross coupling error.
      mzy - z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make acceleration cross-coupling matrix non-invertible.
    • setAccelerationScalingFactorsAndCrossCouplingErrors

      public void setAccelerationScalingFactorsAndCrossCouplingErrors(double sx, double sy, double sz, double mxy, double mxz, double myx, double myz, double mzx, double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets acceleration scaling factors and cross-coupling errors.
      Parameters:
      sx - x scaling factor.
      sy - y scaling factor.
      sz - z scaling factor.
      mxy - x-y cross coupling error.
      mxz - x-z cross coupling error.
      myx - y-x cross coupling error.
      myz - y-z cross coupling error.
      mzx - z-x cross coupling error.
      mzy - z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make acceleration cross-coupling matrix non-invertible.
    • getAngularSpeedBias

      public com.irurueta.algebra.Matrix getAngularSpeedBias()
      Gets angular speed bias values expressed in radians per second (rad/s).
      Returns:
      angular speed bias values expressed in radians per second.
    • getAngularSpeedBias

      public void getAngularSpeedBias(com.irurueta.algebra.Matrix result)
      Gets angular speed bias values expressed in radians per second (rad/s).
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedBias

      public void setAngularSpeedBias(com.irurueta.algebra.Matrix bias) throws com.irurueta.navigation.LockedException
      Sets angular speed bias values expressed in radians per second (rad/s).
      Parameters:
      bias - bias values expressed in radians per second. Must be 3x1.
      Throws:
      IllegalArgumentException - if matrix is not 3x1.
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasArray

      public double[] getAngularSpeedBiasArray()
      Gets angular speed bias values expressed in radians per second (rad/s).
      Returns:
      bias values expressed in radians per second.
    • getAngularSpeedBiasArray

      public void getAngularSpeedBiasArray(double[] result)
      Gets angular speed bias values expressed in radians per second (rad/s).
      Parameters:
      result - instance where result data will be stored.
      Throws:
      IllegalArgumentException - if provided array does not have length 3.
    • setAngularSpeedBias

      public void setAngularSpeedBias(double[] bias) throws com.irurueta.navigation.LockedException
      Sets angular speed bias values expressed in radians per second (rad/s).
      Parameters:
      bias - bias values expressed in radians per second (rad/s). Must have length 3.
      Throws:
      IllegalArgumentException - if provided array does not have length 3.
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasAsTriad

      public com.irurueta.navigation.inertial.calibration.AngularSpeedTriad getAngularSpeedBiasAsTriad()
      Gets angular speed bias.
      Returns:
      angular speed bias.
    • getAngularSpeedBiasAsTriad

      public void getAngularSpeedBiasAsTriad(com.irurueta.navigation.inertial.calibration.AngularSpeedTriad result)
      Gets angular speed bias.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedBias

      public void setAngularSpeedBias(com.irurueta.navigation.inertial.calibration.AngularSpeedTriad bias) throws com.irurueta.navigation.LockedException
      Sets angular speed bias.
      Parameters:
      bias - angular speed bias to be set.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasX

      public double getAngularSpeedBiasX()
      Gets angular speed x-coordinate of bias expressed in radians per second (rad/s).
      Returns:
      x-coordinate of bias expressed in radians per second (rad/s).
    • setAngularSpeedBiasX

      public void setAngularSpeedBiasX(double biasX) throws com.irurueta.navigation.LockedException
      Sets angular speed x-coordinate of bias expressed in radians per second (rad/s).
      Parameters:
      biasX - x-coordinate of bias expressed in radians per second (rad/s).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasY

      public double getAngularSpeedBiasY()
      Gets angular speed y-coordinate of bias expressed in radians per second (rad/s).
      Returns:
      y-coordinate of bias expressed in radians per second (rad/s).
    • setAngularSpeedBiasY

      public void setAngularSpeedBiasY(double biasY) throws com.irurueta.navigation.LockedException
      Sets angular speed y-coordinate of bias expressed in radians per second (rad/s).
      Parameters:
      biasY - y-coordinate of bias expressed in radians per second (rad/s).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasZ

      public double getAngularSpeedBiasZ()
      Gets angular speed z-coordinate of bias expressed in radians per second (rad/s).
      Returns:
      z-coordinate of bias expressed in radians per second (rad/s).
    • setAngularSpeedBiasZ

      public void setAngularSpeedBiasZ(double biasZ) throws com.irurueta.navigation.LockedException
      Sets angular speed z-coordinate of bias expressed in radians per second (rad/s).
      Parameters:
      biasZ - z-coordinate of bias expressed in radians per second (rad/s).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setAngularSpeedBias

      public void setAngularSpeedBias(double biasX, double biasY, double biasZ) throws com.irurueta.navigation.LockedException
      Sets angular speed coordinates of bias expressed in radians per second (rad/s).
      Parameters:
      biasX - x-coordinate of bias.
      biasY - y-coordinate of bias.
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasXAsAngularSpeed

      public com.irurueta.units.AngularSpeed getAngularSpeedBiasXAsAngularSpeed()
      Gets angular speed x-coordinate of bias.
      Returns:
      x-coordinate of bias.
    • getAngularSpeedBiasXAsAngularSpeed

      public void getAngularSpeedBiasXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets angular speed x-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedBiasX

      public void setAngularSpeedBiasX(com.irurueta.units.AngularSpeed biasX) throws com.irurueta.navigation.LockedException
      Sets angular speed x-coordinate of bias.
      Parameters:
      biasX - x-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasYAsAngularSpeed

      public com.irurueta.units.AngularSpeed getAngularSpeedBiasYAsAngularSpeed()
      Gets angular speed y-coordinate of bias.
      Returns:
      y-coordinate of bias.
    • getAngularSpeedBiasYAsAngularSpeed

      public void getAngularSpeedBiasYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets angular speed y-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedBiasY

      public void setAngularSpeedBiasY(com.irurueta.units.AngularSpeed biasY) throws com.irurueta.navigation.LockedException
      Sets angular speed y-coordinate of bias.
      Parameters:
      biasY - y-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedBiasZAsAngularSpeed

      public com.irurueta.units.AngularSpeed getAngularSpeedBiasZAsAngularSpeed()
      Gets angular speed z-coordinate of bias.
      Returns:
      z-coordinate of bias.
    • getAngularSpeedBiasZAsAngularSpeed

      public void getAngularSpeedBiasZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets angular speed z-coordinate of bias.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedBiasZ

      public void setAngularSpeedBiasZ(com.irurueta.units.AngularSpeed biasZ) throws com.irurueta.navigation.LockedException
      Sets angular speed z-coordinate of bias.
      Parameters:
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setAngularSpeedBias

      public void setAngularSpeedBias(com.irurueta.units.AngularSpeed biasX, com.irurueta.units.AngularSpeed biasY, com.irurueta.units.AngularSpeed biasZ) throws com.irurueta.navigation.LockedException
      Sets angular speed coordinates of bias.
      Parameters:
      biasX - x-coordinate of bias.
      biasY - y-coordinate of bias.
      biasZ - z-coordinate of bias.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedCrossCouplingErrors

      public com.irurueta.algebra.Matrix getAngularSpeedCrossCouplingErrors()
      Gets angular speed cross-coupling errors matrix.
      Returns:
      cross coupling errors matrix.
    • getAngularSpeedCrossCouplingErrors

      public void getAngularSpeedCrossCouplingErrors(com.irurueta.algebra.Matrix result)
      Gets angular speed cross-coupling errors matrix.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedCrossCouplingErrors

      public void setAngularSpeedCrossCouplingErrors(com.irurueta.algebra.Matrix crossCouplingErrors) throws com.irurueta.algebra.AlgebraException, com.irurueta.navigation.LockedException
      Sets angular speed cross-coupling errors matrix.
      Parameters:
      crossCouplingErrors - cross-coupling errors matrix. Must be 3x3.
      Throws:
      com.irurueta.algebra.AlgebraException - if matrix cannot be inverted.
      IllegalArgumentException - if matrix is not 3x3.
      com.irurueta.navigation.LockedException - if estimator is running.
    • getAngularSpeedSx

      public double getAngularSpeedSx()
      Gets angular speed x scaling factor.
      Returns:
      x scaling factor.
    • setAngularSpeedSx

      public void setAngularSpeedSx(double sx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed x scaling factor.
      Parameters:
      sx - x scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedSy

      public double getAngularSpeedSy()
      Gets angular speed y scaling factor.
      Returns:
      y scaling factor.
    • setAngularSpeedSy

      public void setAngularSpeedSy(double sy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed y-scaling factor.
      Parameters:
      sy - y scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedSz

      public double getAngularSpeedSz()
      Gets angular speed z scaling factor.
      Returns:
      z scaling factor.
    • setAngularSpeedSz

      public void setAngularSpeedSz(double sz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed z scaling factor.
      Parameters:
      sz - z scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMxy

      public double getAngularSpeedMxy()
      Gets angular speed x-y cross-coupling error.
      Returns:
      x-y cross coupling error.
    • setAngularSpeedMxy

      public void setAngularSpeedMxy(double mxy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed x-y cross-coupling error.
      Parameters:
      mxy - x-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMxz

      public double getAngularSpeedMxz()
      Gets angular speed x-z cross-coupling error.
      Returns:
      x-z cross coupling error.
    • setAngularSpeedMxz

      public void setAngularSpeedMxz(double mxz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed x-z cross-coupling error.
      Parameters:
      mxz - x-z cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMyx

      public double getAngularSpeedMyx()
      Gets angular speed y-x cross-coupling error.
      Returns:
      y-x cross coupling error.
    • setAngularSpeedMyx

      public void setAngularSpeedMyx(double myx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed y-x cross-coupling error.
      Parameters:
      myx - y-x cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMyz

      public double getAngularSpeedMyz()
      Gets angular speed y-z cross-coupling error.
      Returns:
      y-z cross coupling error.
    • setAngularSpeedMyz

      public void setAngularSpeedMyz(double myz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed y-z cross-coupling error.
      Parameters:
      myz - y-z cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMzx

      public double getAngularSpeedMzx()
      Gets angular speed z-x cross-coupling error.
      Returns:
      z-x cross coupling error.
    • setAngularSpeedMzx

      public void setAngularSpeedMzx(double mzx) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed z-x cross-coupling error.
      Parameters:
      mzx - z-x cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedMzy

      public double getAngularSpeedMzy()
      Gets angular speed z-y cross-coupling error.
      Returns:
      z-y cross coupling error.
    • setAngularSpeedMzy

      public void setAngularSpeedMzy(double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed z-y cross-coupling error.
      Parameters:
      mzy - z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided value makes angular speed cross-coupling matrix non-invertible.
    • setAngularSpeedScalingFactors

      public void setAngularSpeedScalingFactors(double sx, double sy, double sz) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed scaling factors.
      Parameters:
      sx - x scaling factor.
      sy - y scaling factor.
      sz - z scaling factor.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make angular speed cross-coupling matrix non-invertible.
    • setAngularSpeedCrossCouplingErrors

      public void setAngularSpeedCrossCouplingErrors(double mxy, double mxz, double myx, double myz, double mzx, double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed cross-coupling errors.
      Parameters:
      mxy - x-y cross coupling error.
      mxz - x-z cross coupling error.
      myx - y-x cross coupling error.
      myz - y-z cross coupling error.
      mzx - z-x cross coupling error.
      mzy - z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make angular speed cross-coupling matrix non-invertible.
    • setAngularSpeedScalingFactorsAndCrossCouplingErrors

      public void setAngularSpeedScalingFactorsAndCrossCouplingErrors(double sx, double sy, double sz, double mxy, double mxz, double myx, double myz, double mzx, double mzy) throws com.irurueta.navigation.LockedException, com.irurueta.algebra.AlgebraException
      Sets angular speed scaling factors and cross-coupling errors.
      Parameters:
      sx - x scaling factor.
      sy - y scaling factor.
      sz - z scaling factor.
      mxy - x-y cross coupling error.
      mxz - x-z cross coupling error.
      myx - y-x cross coupling error.
      myz - y-z cross coupling error.
      mzx - z-x cross coupling error.
      mzy - z-y cross coupling error.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
      com.irurueta.algebra.AlgebraException - if provided values make angular speed cross-coupling matrix non-invertible.
    • getAngularSpeedGDependantCrossBias

      public com.irurueta.algebra.Matrix getAngularSpeedGDependantCrossBias()
      Gets angular speed g-dependant cross biases matrix.
      Returns:
      g-dependant cross biases matrix.
    • getAngularSpeedGDependantCrossBias

      public void getAngularSpeedGDependantCrossBias(com.irurueta.algebra.Matrix result)
      Gets angular speed g-dependant cross biases matrix.
      Parameters:
      result - instance where the result will be stored.
    • setAngularSpeedGDependantCrossBias

      public void setAngularSpeedGDependantCrossBias(com.irurueta.algebra.Matrix gDependantCrossBias) throws com.irurueta.navigation.LockedException
      Sets angular speed g-dependant cross biases matrix.
      Parameters:
      gDependantCrossBias - g-dependant cross biases matrix.
      Throws:
      IllegalArgumentException - if matrix is not 3x3.
      com.irurueta.navigation.LockedException - if estimator is running.
    • isFixKinematicsEnabled

      public boolean isFixKinematicsEnabled()
      Indicates whether measured kinematics must be fixed or not. When enabled, provided calibration data is used; otherwise it is ignored. By default, this is enabled.
      Returns:
      indicates whether measured kinematics must be fixed or not.
    • setFixKinematicsEnabled

      public void setFixKinematicsEnabled(boolean fixKinematics) throws com.irurueta.navigation.LockedException
      Specifies whether measured kinematics must be fixed or not. When enabled, provided calibration data is used; otherwise it is ignored.
      Parameters:
      fixKinematics - true if measured kinematics must be fixed or not.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getTimeInterval

      public double getTimeInterval()
      Gets the time interval between body kinematics (IMU acceleration and gyroscope) samples expressed in seconds (s).
      Returns:
      time interval between body kinematics samples.
    • setTimeInterval

      public void setTimeInterval(double timeInterval) throws com.irurueta.navigation.LockedException
      Sets a time interval between body kinematics (IMU acceleration and gyroscope) samples expressed in seconds (s).
      Parameters:
      timeInterval - time interval between body kinematics samples.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getTimeIntervalAsTime

      public com.irurueta.units.Time getTimeIntervalAsTime()
      Gets time interval between body kinematics (IMU acceleration and gyroscope) samples.
      Returns:
      time interval between body kinematics samples.
    • getTimeIntervalAsTime

      public void getTimeIntervalAsTime(com.irurueta.units.Time result)
      Gets time interval between body kinematics (IMU acceleration and gyroscope) samples.
      Parameters:
      result - instance where the 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 (IMU acceleration and gyroscope) samples.
      Parameters:
      timeInterval - time interval between body kinematics samples.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • isReady

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

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

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

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

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

      public double getElapsedTimeSeconds()
      Gets elapsed time since the first processed measurement expressed in seconds.
      Returns:
      elapsed time.
    • getElapsedTime

      public com.irurueta.units.Time getElapsedTime()
      Gets elapsed time since the first processed measurement.
      Returns:
      elapsed time.
    • getElapsedTime

      public boolean getElapsedTime(com.irurueta.units.Time result)
      Gets elapsed time since the first processed measurement.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if elapsed time is available and the result is updated, false otherwise.
    • getCurrentPositionDrift

      public com.irurueta.navigation.frames.ECEFPosition getCurrentPositionDrift()
      Gets current position drift for last processed body kinematics measurement expressed in meters (m) respect ECEF coordinates.
      Returns:
      current position drift or null.
    • getCurrentPositionDrift

      public boolean getCurrentPositionDrift(com.irurueta.navigation.frames.ECEFPosition result)
      Gets current position drift for last processed body kinematics measurement expressed in meters (m) respect ECEF coordinates.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current position drift is available and the result is updated, false otherwise.
    • getCurrentVelocityDrift

      public com.irurueta.navigation.frames.ECEFVelocity getCurrentVelocityDrift()
      Gets current velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s) respect ECEF coordinates.
      Returns:
      current velocity drift or null.
    • getCurrentVelocityDrift

      public boolean getCurrentVelocityDrift(com.irurueta.navigation.frames.ECEFVelocity result)
      Gets current velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s) respect ECEF coordinates.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current velocity drift is available and the result is updated, false otherwise.
    • getCurrentOrientationDrift

      public com.irurueta.geometry.Rotation3D getCurrentOrientationDrift()
      Gets current orientation drift as a 3D rotation for the last processed body kinematics measurement respect ECEF coordinates.
      Returns:
      current orientation drift or null.
    • getCurrentOrientationDrift

      public boolean getCurrentOrientationDrift(com.irurueta.geometry.Rotation3D result)
      Gets current orientation drift as a 3D rotation for the last processed body kinematics measurement respect ECEF coordinates.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current orientation drift is available and the result is updated, false otherwise.
    • getCurrentPositionDriftNormMeters

      public Double getCurrentPositionDriftNormMeters()
      Gets current amount of position drift for last processed body kinematics measurement expressed in meters (m).
      Returns:
      the current amount of position drift or null.
    • getCurrentPositionDriftNorm

      public com.irurueta.units.Distance getCurrentPositionDriftNorm()
      Gets current amount of position drift for last processed body kinematics measurement.
      Returns:
      the current amount of position drift or null.
    • getCurrentPositionDriftNorm

      public boolean getCurrentPositionDriftNorm(com.irurueta.units.Distance result)
      Gets current amount of position drift for last processed body kinematics measurement.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current position drift is available and the result is updated, false otherwise.
    • getCurrentVelocityDriftNormMetersPerSecond

      public Double getCurrentVelocityDriftNormMetersPerSecond()
      Gets current amount of velocity drift for the last processed body kinematics measurement expressed in meters per second (m/s).
      Returns:
      current amount of velocity drift or null.
    • getCurrentVelocityDriftNorm

      public com.irurueta.units.Speed getCurrentVelocityDriftNorm()
      Gets current amount of velocity drift for last processed body kinematics measurement.
      Returns:
      current amount of velocity drift or null.
    • getCurrentVelocityDriftNorm

      public boolean getCurrentVelocityDriftNorm(com.irurueta.units.Speed result)
      Gets current amount of velocity drift for last processed body kinematics measurement.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current velocity drift is available and the result is updated, false otherwise.
    • getCurrentOrientationDriftRadians

      public Double getCurrentOrientationDriftRadians()
      Gets current amount of orientation drift for last processed body kinematics measurement expressed in radians (rad).
      Returns:
      current amount of orientation drift or null.
    • getCurrentOrientationDriftAngle

      public com.irurueta.units.Angle getCurrentOrientationDriftAngle()
      Gets current amount of orientation drift for last processed body kinematics measurement.
      Returns:
      current amount of orientation drift or null.
    • getCurrentOrientationDriftAngle

      public boolean getCurrentOrientationDriftAngle(com.irurueta.units.Angle result)
      Gets current amount of orientation drift for last processed body kinematics measurement.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current orientation drift is available and the result is updated, false otherwise.
    • getCurrentPositionDriftPerTimeUnit

      public Double getCurrentPositionDriftPerTimeUnit()
      Gets the current amount of position drift per time unit expressed in meters per second (m/s).
      Returns:
      current amount of position drift per time unit or null.
    • getCurrentPositionDriftPerTimeUnitAsSpeed

      public com.irurueta.units.Speed getCurrentPositionDriftPerTimeUnitAsSpeed()
      Gets the current amount of position drift per time unit.
      Returns:
      current amount of position drift per time unit or null.
    • getCurrentPositionDriftPerTimeUnitAsSpeed

      public boolean getCurrentPositionDriftPerTimeUnitAsSpeed(com.irurueta.units.Speed result)
      Gets the current amount of position drift per time unit.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current amount of position drift per time unit is available and the result is updated, false otherwise.
    • getCurrentVelocityDriftPerTimeUnit

      public Double getCurrentVelocityDriftPerTimeUnit()
      Gets the current amount of velocity drift per time unit expressed in meters per squared second (m/s^2).
      Returns:
      the current amount of velocity drift per time unit or null.
    • getCurrentVelocityDriftPerTimeUnitAsAcceleration

      public com.irurueta.units.Acceleration getCurrentVelocityDriftPerTimeUnitAsAcceleration()
      Gets the current amount of velocity drift per time unit.
      Returns:
      the current amount of velocity drift per time unit or null.
    • getCurrentVelocityDriftPerTimeUnitAsAcceleration

      public boolean getCurrentVelocityDriftPerTimeUnitAsAcceleration(com.irurueta.units.Acceleration result)
      Gets the current amount of velocity drift per time unit.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current amount of velocity drift per time unit is available and the result is updated, false otherwise.
    • getCurrentOrientationDriftPerTimeUnit

      public Double getCurrentOrientationDriftPerTimeUnit()
      Gets the current amount of orientation drift per time unit expressed in radians per second (rad/s).
      Returns:
      amount of orientation drift per time unit or null.
    • getCurrentOrientationDriftPerTimeUnitAsAngularSpeed

      public com.irurueta.units.AngularSpeed getCurrentOrientationDriftPerTimeUnitAsAngularSpeed()
      Gets the current amount of orientation drift per time unit.
      Returns:
      amount of orientation drift per time unit or null.
    • getCurrentOrientationDriftPerTimeUnitAsAngularSpeed

      public boolean getCurrentOrientationDriftPerTimeUnitAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets the current amount of orientation drift per time unit.
      Parameters:
      result - instance where the result will be stored.
      Returns:
      true if the current amount of orientation drift is available and the result is updated, false otherwise.
    • computeCurrentPositionDrift

      protected void computeCurrentPositionDrift()
      Computes current position drift.
    • computeCurrentVelocityDrift

      protected void computeCurrentVelocityDrift()
      Computes current velocity drift.
    • computeCurrentOrientationDrift

      protected void computeCurrentOrientationDrift() throws com.irurueta.algebra.AlgebraException, com.irurueta.geometry.InvalidRotationMatrixException
      Computes current orientation drift.
      Throws:
      com.irurueta.algebra.AlgebraException - if there are numerical instabilities.
      com.irurueta.geometry.InvalidRotationMatrixException - if rotation cannot be accurately estimated.
    • convertTime

      private static double convertTime(com.irurueta.units.Time time)
      Converts the provided time instance to seconds.
      Parameters:
      time - instance to be converted.
      Returns:
      conversion in seconds.