Class BodyKinematicsBiasEstimator

java.lang.Object
com.irurueta.navigation.inertial.calibration.bias.BodyKinematicsBiasEstimator

public class BodyKinematicsBiasEstimator extends Object
Approximately estimates accelerometer and gyroscope biases and noise PSD's by averaging all provided samples when body position and orientation is known while assuming that any cross coupling errors can be neglected.

This estimator must be used when the body where the accelerometer and gyroscope is attached remains static on the same position with zero velocity and no rotation speed while capturing data.

To compute PSD's this estimator assumes that accelerometer samples are obtained at a constant provided rate equal to getTimeInterval() seconds. If not available, accelerometer and gyroscope sampling rate average can be estimated using TimeIntervalEstimator.

Notice that in order to compute accelerometer and gyroscope biases, body position and orientation must be known to account for gravity and Earth rotation effects.

Even though this estimator obtains approximate bias values, the obtained result can be used to initialize some non-linear calibrators to obtain more accurate results. Such calibrators are: - com.irurueta.navigation.inertial.calibration.accelerometer.KnownFrameAccelerometerNonLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.accelerometer.KnownGravityNormAccelerometerCalibrator - com.irurueta.navigation.inertial.calibration.accelerometer.KnownPositionAccelerometerCalibrator} - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownFrameAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownGravityNormAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownPositionAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasAndFrameGyroscopeLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasAndFrameGyroscopeNonLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasEasyGyroscopeCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasTurntableGyroscopeCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasAndFrameGyroscopeCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasEasyGyroscopeCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasTurntableGyroscopeCalibrator and any of its subclasses.

Even though this estimator can compute noise PSD's, if only noise PSD's levels are required, estimators in com.irurueta.navigation.inertial.calibration.noise package should be used instead.

This estimator does NOT compute average bias values over a period of time, it only computes accumulated averages.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
    Contains estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    private double
    Contains estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    private double
    Contains estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    private double
    Contains estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    private double
    Contains estimated bias of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    private double
    Contains estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    static final double
    Default time interval between kinematics samples expressed in seconds (s).
    Theoretical expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).
    private final com.irurueta.navigation.frames.ECEFFrame
    Contains body position, velocity (which will always be zero) and orientation resolved around ECEF axes.
    Last provided body kinematics values.
    Listener to handle events raised by this estimator.
    private int
    Number of processed body kinematics samples.
    private int
    Number of processed body kinematics samples plus one.
    private boolean
    Indicates that estimator is running.
    private double
    Time interval expressed in seconds (s) between body kinematics samples.
    private double
    Contains estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    private double
    Contains estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    private double
    Contains estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    private double
    Contains estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    private double
    Contains estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    private double
    Contains estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s4).
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
    BodyKinematicsBiasEstimator(double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Time timeInterval)
    Constructor.
    BodyKinematicsBiasEstimator(com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Adds a sample of body kinematics (accelerometer + gyroscope readings) obtained from an IMU.
    private static double
    convertTime(com.irurueta.units.Time time)
    Converts provided time instance to seconds.
    com.irurueta.algebra.Matrix
    Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.
    void
    getAccelerometerBias(com.irurueta.algebra.Matrix result)
    Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.
    double
    Gets average accelerometer noise PSD (Power Spectral Density) among x,y,z components expressed as (m^2/s^3).
    double
    Gets accelerometer noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed as (m * s^-1.5).
    double
    Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.
    void
    getAverageAccelerometerStandardDeviationAsAcceleration(com.irurueta.units.Acceleration result)
    Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.
    double
    Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.
    void
    getAverageGyroscopeStandardDeviationAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.
    Gets estimated bias of gyroscope sensed angular rate.
    void
    Gets estimated bias of gyroscope sensed angular rate.
    double
    Gets estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated bias of x coordinate of gyroscope sensed angular rate.
    void
    getBiasAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated bias of x coordinate of gyroscope sensed angular rate.
    double
    Gets estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated bias of y coordinate of gyroscope sensed angular rate.
    void
    getBiasAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated bias of y coordinate of gyroscope sensed angular rate.
    double
    Gets estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated bias of z coordinate of gyroscope sensed angular rate.
    void
    getBiasAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated bias of z coordinate of gyroscope sensed angular rate.
    Gets body kinematics containing estimated bias values for accelerometer and gyroscope.
    void
    Gets body kinematics containing estimated bias values for accelerometer and gyroscope.
    Gets estimated bias of accelerometer sensed specific force.
    void
    Gets estimated bias of accelerometer sensed specific force.
    double
    Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated bias of x coordinate of accelerometer sensed specific force.
    void
    getBiasFxAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated bias of x coordinate of accelerometer sensed specific force.
    double
    Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated bias of y coordinate of accelerometer sensed specific force.
    void
    getBiasFyAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated bias of y coordinate of accelerometer sensed specific force.
    double
    Gets estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated bias of z coordinate of accelerometer sensed specific force.
    void
    getBiasFzAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated bias of z coordinate of accelerometer sensed specific force.
    com.irurueta.navigation.frames.CoordinateTransformation
    Gets current body orientation as a transformation from body to ECEF coordinates.
    void
    getEcefC(com.irurueta.navigation.frames.CoordinateTransformation result)
    Gets current body orientation as a transformation from body to ECEF coordinates.
    com.irurueta.navigation.frames.ECEFFrame
    Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates.
    void
    getEcefFrame(com.irurueta.navigation.frames.ECEFFrame result)
    Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates.
    com.irurueta.navigation.frames.ECEFPosition
    Gets current body position expressed in ECEF coordinates.
    void
    getEcefPosition(com.irurueta.navigation.frames.ECEFPosition result)
    Gets current body position expressed in ECEF coordinates.
    com.irurueta.units.Time
    Gets amount of total elapsed time since first processed measurement.
    void
    getElapsedTime(com.irurueta.units.Time result)
    Gets amount of total elapsed time since first processed measurement.
    double
    Gets amount of total elapsed time since first processed measurement expressed in seconds (s).
    Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).
    void
    Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).
    com.irurueta.algebra.Matrix
    Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.
    void
    getGyroBias(com.irurueta.algebra.Matrix result)
    Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.
    double
    Gets average gyroscope noise PSD (Power Spectral Density) among x,y,z components expressed in (rad^2/s).
    double
    Gets gyroscope noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed in (rad * s^-0.5).
    Gets last provided body kinematics values or null if not available.
    boolean
    Gets last provided body kinematics values.
    Gets listener to handle events raised by this estimator.
    com.irurueta.navigation.frames.CoordinateTransformation
    Gets current body orientation as a transformation from body to NED coordinates.
    void
    getNedC(com.irurueta.navigation.frames.CoordinateTransformation result)
    Gets current body orientation as a transformation from body to NED coordinates.
    com.irurueta.navigation.frames.NEDFrame
    Gets NED frame containing current body position and orientation expressed in NED coordinates.
    void
    getNedFrame(com.irurueta.navigation.frames.NEDFrame result)
    Gets NED frame containing current body position and orientation expressed in NED coordinates.
    com.irurueta.navigation.frames.NEDPosition
    Gets current body position expressed in NED coordinates.
    void
    getNedPosition(com.irurueta.navigation.frames.NEDPosition result)
    Gets current body position expressed in NED coordinates.
    int
    Gets number of samples that have been processed so far.
    double
    Gets gyroscope noise PSD (Power Spectral Density) on x axis expressed in (rad^2/s).
    double
    Gets gyroscope noise PSD (Power Spectral Density) on y axis expressed in (rad^2/s).
    double
    Gets gyroscope noise PSD (Power Spectral Density) on z axis expressed in (rad^2/s).
    double
    Gets accelerometer noise PSD (Power Spectral Density) on x axis expressed in (m^2 * s^-3).
    double
    Gets accelerometer noise PSD (Power Spectral Density) on y axis expressed in (m^2 * s^-3).
    double
    Gets accelerometer noise PSD (Power Spectral Density) on z axis expressed in (m^2 * s^-3).
    double
    Gets gyroscope noise root PSD (Power Spectral Density) on x axis expressed in (rad * s^-0.5).
    double
    Gets gyroscope noise root PSD (Power Spectral Density) on y axis expressed in (rad * s^-0.5).
    double
    Gets gyroscope noise root PSD (Power Spectral Density) on z axis expressed in (rad * s^-0.5).
    double
    Gets accelerometer noise root PSD (Power Spectral Density) on x axis expressed in (m * s^-1.5).
    double
    Gets accelerometer noise root PSD (Power Spectral Density) on y axis expressed in (m * s^-1.5).
    double
    Gets accelerometer noise root PSD (Power Spectral Density) on z axis expressed in (m * s^-1.5).
    Gets estimated standard deviation of sensed angular rate.
    void
    Gets estimated standard deviation of sensed angular rate.
    double
    Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate expressed in (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.
    void
    getStandardDeviationAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.
    double
    Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate expressed in (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.
    void
    getStandardDeviationAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.
    double
    Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate expressed in (rad/s).
    com.irurueta.units.AngularSpeed
    Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.
    void
    getStandardDeviationAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
    Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.
    Gets estimated standard deviation of accelerometer sensed specific force.
    void
    Gets estimated standard deviation of accelerometer sensed specific force.
    double
    Gets estimated standard deviation of x coordinate of accelerometer sensed specific force expressed in (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.
    void
    getStandardDeviationFxAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.
    double
    Gets estimated standard deviation of y coordinate of accelerometer sensed specific force expressed in (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.
    void
    getStandardDeviationFyAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.
    double
    Gets estimated standard deviation of z coordinate of accelerometer sensed specific force expressed in (m/s^2).
    com.irurueta.units.Acceleration
    Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.
    void
    getStandardDeviationFzAsAcceleration(com.irurueta.units.Acceleration result)
    Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.
    Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.
    void
    Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.
    double
    Gets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
    com.irurueta.units.Time
    Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.
    void
    getTimeIntervalAsTime(com.irurueta.units.Time result)
    Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.
    double
    Gets estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    double
    Gets estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    double
    Gets estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).
    double
    Gets estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    double
    Gets estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    double
    Gets estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    boolean
    Indicates whether estimator is currently running or not.
    private void
    Rebuilds expected theoretical kinematics for provided body position and orientation and provided time interval, assuming that body remains at the same position (zero velocity).
    boolean
    Resets current estimator.
    void
    setEcefC(com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets current body orientation as a transformation from body to ECEF coordinates.
    void
    setEcefPosition(double x, double y, double z)
    Sets current body position expressed in ECEF coordinates.
    void
    setEcefPosition(com.irurueta.geometry.Point3D position)
    Sets current body position expressed in ECEF coordinates.
    void
    setEcefPosition(com.irurueta.navigation.frames.ECEFPosition position)
    Sets current body position expressed in ECEF coordinates.
    void
    setEcefPosition(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z)
    Sets current body position expressed in ECEF coordinates.
    void
    setEcefPositionAndEcefOrientation(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position and orientation both expressed on ECEF coordinates.
    void
    setEcefPositionAndEcefOrientation(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position and orientation both expressed on ECEF coordinates.
    void
    setEcefPositionAndEcefOrientation(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position and orientation both expressed on ECEF coordinates.
    void
    setEcefPositionAndEcefOrientation(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position and orientation both expressed on ECEF coordinates.
    void
    setEcefPositionAndNedOrientation(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position expressed on ECEF coordinates and orientation respect to NED axes.
    void
    setEcefPositionAndNedOrientation(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position expressed on ECEF coordinates and orientation respect to NED axes.
    void
    setEcefPositionAndNedOrientation(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position expressed on ECEF coordinates and orientation respect to NED axes.
    void
    setEcefPositionAndNedOrientation(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position expressed on ECEF coordinates and orientation respect to NED axes.
    void
    Sets listener to handle events raised by this estimator.
    void
    setNedC(com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets current body orientation as a transformation from body to NED coordinates.
    void
    setNedPosition(double latitude, double longitude, double height)
    Sets current body position expressed in NED coordinates.
    void
    setNedPosition(com.irurueta.navigation.frames.NEDPosition position)
    Sets current body position expressed in NED coordinates.
    void
    setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height)
    Sets current body position expressed in NED coordinates.
    void
    setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height)
    Sets current body position expressed in NED coordinates.
    void
    setNedPositionAndEcefOrientation(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position expressed on NED coordinates and orientation respect to ECEF axes.
    void
    setNedPositionAndEcefOrientation(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position expressed on NED coordinates and orientation respect to ECEF axes.
    void
    setNedPositionAndEcefOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position expressed on NED coordinates and orientation respect to ECEF axes.
    void
    setNedPositionAndEcefOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation ecefC)
    Sets position expressed on NED coordinates and orientation respect to ECEF axes.
    void
    setNedPositionAndNedOrientation(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position and orientation both expressed on NED coordinates.
    void
    setNedPositionAndNedOrientation(com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position and orientation both expressed on NED coordinates.
    void
    setNedPositionAndNedOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position and orientation both expressed on NED coordinates.
    void
    setNedPositionAndNedOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation nedC)
    Sets position and orientation both expressed on NED coordinates.
    void
    setTimeInterval(double timeInterval)
    Sets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
    void
    setTimeInterval(com.irurueta.units.Time timeInterval)
    Sets time interval between body kinematics (IMU acceleration + 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:
    • timeInterval

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

      private final com.irurueta.navigation.frames.ECEFFrame frame
      Contains body position, velocity (which will always be zero) and orientation resolved around ECEF axes. By default it is assumed that body is located at zero NED coordinates (latitude, longitude and height) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
    • listener

      Listener to handle events raised by this estimator.
    • lastBodyKinematics

      private BodyKinematics lastBodyKinematics
      Last provided body kinematics values.
    • biasFx

      private double biasFx
      Contains estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    • biasFy

      private double biasFy
      Contains estimated bias of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    • biasFz

      private double biasFz
      Contains estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
    • biasAngularRateX

      private double biasAngularRateX
      Contains estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    • biasAngularRateY

      private double biasAngularRateY
      Contains estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    • biasAngularRateZ

      private double biasAngularRateZ
      Contains estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
    • varianceFx

      private double varianceFx
      Contains estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    • varianceFy

      private double varianceFy
      Contains estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).
    • varianceFz

      private double varianceFz
      Contains estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s4).
    • varianceAngularRateX

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

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

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

      private int numberOfProcessedSamples
      Number of processed body kinematics samples.
    • numberOfProcessedSamplesPlusOne

      private int numberOfProcessedSamplesPlusOne
      Number of processed body kinematics samples plus one.
    • running

      private boolean running
      Indicates that estimator is running.
    • expectedKinematics

      private BodyKinematics expectedKinematics
      Theoretical expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.
  • Constructor Details

    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator()
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      listener - listener to handle events raised by this estimator.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      listener - listener to handle events raised by this estimator.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      listener - listener to handle events raised by this estimator.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      listener - listener to handle events raised by this estimator.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double timeInterval)
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, double timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Time timeInterval)
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation.
      Parameters:
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener)
      Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in NED coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
    • BodyKinematicsBiasEstimator

      public BodyKinematicsBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Constructor.
      Parameters:
      position - body position expressed in ECEF coordinates.
      nedC - coordinate transformation from body to local navigation (NED) coordinates. This contains orientation respect the horizon at current body location.
      timeInterval - time interval between body kinematics (IMU acceleration + gyroscope) samples.
      listener - listener to handle events raised by this estimator.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IllegalArgumentException - if provided time interval is negative.
  • Method Details

    • getTimeInterval

      public double getTimeInterval()
      Gets time interval between body kinematics (IMU acceleration + 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 time interval between body kinematics (IMU acceleration + 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 + 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 + gyroscope) samples.
      Parameters:
      result - instance where time interval will be stored.
    • setTimeInterval

      public void setTimeInterval(com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.LockedException
      Sets time interval between body kinematics (IMU acceleration + gyroscope) samples.
      Parameters:
      timeInterval - time interval between body kinematics samples.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getEcefPosition

      public com.irurueta.navigation.frames.ECEFPosition getEcefPosition()
      Gets current body position expressed in ECEF coordinates.
      Returns:
      current body position expressed in ECEF coordinates.
    • getEcefPosition

      public void getEcefPosition(com.irurueta.navigation.frames.ECEFPosition result)
      Gets current body position expressed in ECEF coordinates.
      Parameters:
      result - instance where current body position will be stored.
    • setEcefPosition

      public void setEcefPosition(com.irurueta.navigation.frames.ECEFPosition position) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in ECEF coordinates.
      Parameters:
      position - current body position to be set.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setEcefPosition

      public void setEcefPosition(double x, double y, double z) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in ECEF coordinates.
      Parameters:
      x - x position resolved around ECEF axes and expressed in meters (m).
      y - y position resolved around ECEF axes and expressed in meters (m).
      z - z position resolved around ECEF axes and expressed in meters (m).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setEcefPosition

      public void setEcefPosition(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in ECEF coordinates.
      Parameters:
      x - x position resolved around ECEF axes.
      y - y position resolved around ECEF axes.
      z - z position resolved around ECEF axes.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setEcefPosition

      public void setEcefPosition(com.irurueta.geometry.Point3D position) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in ECEF coordinates.
      Parameters:
      position - position resolved around ECEF axes and expressed in meters (m).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getEcefFrame

      public com.irurueta.navigation.frames.ECEFFrame getEcefFrame()
      Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.
      Returns:
      ECEF frame containing current body position and orientation resolved around ECEF axes.
    • getEcefFrame

      public void getEcefFrame(com.irurueta.navigation.frames.ECEFFrame result)
      Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.
      Parameters:
      result - instance where ECEF frame containing current body position and orientation resolved around ECEF axes will be stored.
    • getNedFrame

      public com.irurueta.navigation.frames.NEDFrame getNedFrame()
      Gets NED frame containing current body position and orientation expressed in NED coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.
      Returns:
      NED frame containing current body position and orientation resolved around NED axes.
    • getNedFrame

      public void getNedFrame(com.irurueta.navigation.frames.NEDFrame result)
      Gets NED frame containing current body position and orientation expressed in NED coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.
      Parameters:
      result - instance where NED frame containing current body position and orientation resolved around NED axes will be stored.
    • getNedPosition

      public com.irurueta.navigation.frames.NEDPosition getNedPosition()
      Gets current body position expressed in NED coordinates.
      Returns:
      current body position expressed in NED coordinates.
    • getNedPosition

      public void getNedPosition(com.irurueta.navigation.frames.NEDPosition result)
      Gets current body position expressed in NED coordinates.
      Parameters:
      result - instance where current body position will be stored.
    • setNedPosition

      public void setNedPosition(com.irurueta.navigation.frames.NEDPosition position) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in NED coordinates.
      Parameters:
      position - current body position to be set.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setNedPosition

      public void setNedPosition(double latitude, double longitude, double height) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in NED coordinates.
      Parameters:
      latitude - latitude NED coordinate expressed in radians (rad).
      longitude - longitude NED coordinate expressed in radians (rad).
      height - height NED coordinate expressed in meters (m).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setNedPosition

      public void setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in NED coordinates.
      Parameters:
      latitude - latitude NED coordinate.
      longitude - longitude NED coordinate.
      height - height NED coordinate expressed in meters (m).
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setNedPosition

      public void setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) throws com.irurueta.navigation.LockedException
      Sets current body position expressed in NED coordinates.
      Parameters:
      latitude - latitude NED coordinate.
      longitude - longitude NED coordinate.
      height - height NED coordinate.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getEcefC

      public com.irurueta.navigation.frames.CoordinateTransformation getEcefC()
      Gets current body orientation as a transformation from body to ECEF coordinates. Notice that returned orientation refers to ECEF Earth axes, which means that orientation is not relative to the ground or horizon at current body position. Typically it is more convenient to use getNedC() to obtain orientation relative to the ground or horizon at current body position. For instance, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Returns:
      current body orientation resolved on ECEF axes.
    • getEcefC

      public void getEcefC(com.irurueta.navigation.frames.CoordinateTransformation result)
      Gets current body orientation as a transformation from body to ECEF coordinates. Notice that returned orientation refers to ECEF Earth axes, which means that orientation is not relative to the ground or horizon at current body position. Typically it is more convenient to use getNedC() to obtain orientation relative to the ground or horizon at current body position. For instance, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Parameters:
      result - instance where current body orientation resolved on ECEF axes will be stored.
    • setEcefC

      public void setEcefC(com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets current body orientation as a transformation from body to ECEF coordinates. Notice that ECEF orientation refers to ECEF Earth axes, which means that orientation is not relative to the ground or horizon at current body position. Typically it is more convenient to use setNedC(CoordinateTransformation) to specify orientation relative to the ground or horizon at current body position. For instance, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Parameters:
      ecefC - body orientation resolved on ECEF axes to be set.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getNedC

      public com.irurueta.navigation.frames.CoordinateTransformation getNedC()
      Gets current body orientation as a transformation from body to NED coordinates. Notice that returned orientation refers to current local position. This means that two equal NED orientations will transform into different ECEF orientations if the body is located at different positions. As a reference, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Returns:
      current body orientation resolved on NED axes.
    • getNedC

      public void getNedC(com.irurueta.navigation.frames.CoordinateTransformation result)
      Gets current body orientation as a transformation from body to NED coordinates. Notice that returned orientation refers to current local position. This means that two equal NED orientations will transform into different ECEF orientations if the body is located at different positions. As a reference, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Parameters:
      result - instance where current body orientation resolved on NED axes will be stored.
    • setNedC

      public void setNedC(com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets current body orientation as a transformation from body to NED coordinates. Notice that provided orientation refers to current local position. This means that two equal NED orientations will transform into different ECEF orientations if the body is located at different positions. As a reference, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.
      Parameters:
      nedC - orientation resolved on NED axes to be set.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • setNedPositionAndNedOrientation

      public void setNedPositionAndNedOrientation(com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on NED coordinates.
      Parameters:
      nedPosition - position expressed on NED coordinates.
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndNedOrientation

      public void setNedPositionAndNedOrientation(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on NED coordinates.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndNedOrientation

      public void setNedPositionAndNedOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on NED coordinates.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndNedOrientation

      public void setNedPositionAndNedOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on NED coordinates.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndEcefOrientation

      public void setEcefPositionAndEcefOrientation(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on ECEF coordinates.
      Parameters:
      ecefPosition - position expressed on ECEF coordinates.
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndEcefOrientation

      public void setEcefPositionAndEcefOrientation(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on ECEF coordinates.
      Parameters:
      x - x coordinate of ECEF position expressed in meters (m).
      y - y coordinate of ECEF position expressed in meters (m).
      z - z coordinate of ECEF position expressed in meters (m).
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndEcefOrientation

      public void setEcefPositionAndEcefOrientation(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on ECEF coordinates.
      Parameters:
      x - x coordinate of ECEF position.
      y - y coordinate of ECEF position.
      z - z coordinate of ECEF position.
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndEcefOrientation

      public void setEcefPositionAndEcefOrientation(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position and orientation both expressed on ECEF coordinates.
      Parameters:
      position - position resolved around ECEF axes and expressed in meters (m).
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndEcefOrientation

      public void setNedPositionAndEcefOrientation(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on NED coordinates and orientation respect to ECEF axes.
      Parameters:
      position - position expressed on NED coordinates.
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndEcefOrientation

      public void setNedPositionAndEcefOrientation(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on NED coordinates and orientation respect to ECEF axes.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndEcefOrientation

      public void setNedPositionAndEcefOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on NED coordinates and orientation respect to ECEF axes.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setNedPositionAndEcefOrientation

      public void setNedPositionAndEcefOrientation(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on NED coordinates and orientation respect to ECEF axes.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      ecefC - body to ECEF coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to ECEF coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndNedOrientation

      public void setEcefPositionAndNedOrientation(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on ECEF coordinates and orientation respect to NED axes. In order to preserve provided orientation, first position is set and then orientation is applied.
      Parameters:
      ecefPosition - position expressed on ECEF coordinates.
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndNedOrientation

      public void setEcefPositionAndNedOrientation(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on ECEF coordinates and orientation respect to NED axes. In order to preserve provided orientation, first position is set and then orientation is applied.
      Parameters:
      x - x coordinate of ECEF position expressed in meters (m).
      y - y coordinate of ECEF position expressed in meters (m).
      z - z coordinate of ECEF position expressed in meters (m).
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndNedOrientation

      public void setEcefPositionAndNedOrientation(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on ECEF coordinates and orientation respect to NED axes. In order to preserve provided orientation, first position is set and then orientation is applied.
      Parameters:
      x - x coordinate of ECEF position.
      y - y coordinate of ECEF position.
      z - z coordinate of ECEF position.
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • setEcefPositionAndNedOrientation

      public void setEcefPositionAndNedOrientation(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Sets position expressed on ECEF coordinates and orientation respect to NED axes. In order to preserve provided orientation, first position is set and then orientation is applied.
      Parameters:
      position - position resolved around ECEF axes and expressed in meters (m).
      nedC - body to NED coordinate transformation indicating body orientation.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to NED coordinates.
      com.irurueta.navigation.LockedException - if estimator is currently running.
      See Also:
    • getListener

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

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

      public BodyKinematics getLastBodyKinematics()
      Gets last provided body kinematics values or null if not available.
      Returns:
      last provided body kinematics values or null.
    • getLastBodyKinematics

      public boolean getLastBodyKinematics(BodyKinematics result)
      Gets last provided body kinematics values.
      Parameters:
      result - instance where last provided body kinematics will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • getBiasFx

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

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

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

      public double getBiasFy()
      Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).
      Returns:
      bias of y coordinate of sensed specific force.
    • getBiasFyAsAcceleration

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

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

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

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

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

      public double getBiasAngularRateX()
      Gets estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
      Returns:
      bias of x coordinate of sensed angular rate.
    • getBiasAngularRateXAsAngularSpeed

      public com.irurueta.units.AngularSpeed getBiasAngularRateXAsAngularSpeed()
      Gets estimated bias of x coordinate of gyroscope sensed angular rate.
      Returns:
      bias of x coordinate of sensed angular rate.
    • getBiasAngularRateXAsAngularSpeed

      public void getBiasAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated bias of x coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where bias of x coordinate of sensed angular rate will be stored.
    • getBiasAngularRateY

      public double getBiasAngularRateY()
      Gets estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
      Returns:
      bias of y coordinate of sensed angular rate.
    • getBiasAngularRateYAsAngularSpeed

      public com.irurueta.units.AngularSpeed getBiasAngularRateYAsAngularSpeed()
      Gets estimated bias of y coordinate of gyroscope sensed angular rate.
      Returns:
      bias of y coordinate of sensed angular rate.
    • getBiasAngularRateYAsAngularSpeed

      public void getBiasAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated bias of y coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where bias of y coordinate of sensed angular rate will be stored.
    • getBiasAngularRateZ

      public double getBiasAngularRateZ()
      Gets estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).
      Returns:
      bias of z coordinate of sensed angular rate.
    • getBiasAngularRateZAsAngularSpeed

      public com.irurueta.units.AngularSpeed getBiasAngularRateZAsAngularSpeed()
      Gets estimated bias of z coordinate of gyroscope sensed angular rate.
      Returns:
      bias of z coordinate of sensed angular rate.
    • getBiasAngularRateZAsAngularSpeed

      public void getBiasAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated bias of z coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where bias of z coordinate of sensed angular rate will be stored.
    • getBiasF

      public AccelerationTriad getBiasF()
      Gets estimated bias of accelerometer sensed specific force.
      Returns:
      estimated bias of accelerometer sensed specific force.
    • getBiasF

      public void getBiasF(AccelerationTriad result)
      Gets estimated bias of accelerometer sensed specific force.
      Parameters:
      result - instance where bias of sensed specific force will be stored.
    • getBiasAngularRate

      public AngularSpeedTriad getBiasAngularRate()
      Gets estimated bias of gyroscope sensed angular rate.
      Returns:
      estimated bias of gyroscope sensed angular rate.
    • getBiasAngularRate

      public void getBiasAngularRate(AngularSpeedTriad result)
      Gets estimated bias of gyroscope sensed angular rate.
      Parameters:
      result - instance where bias of gyroscope sensed angular rate will be stored.
    • getBiasesAsBodyKinematics

      public BodyKinematics getBiasesAsBodyKinematics()
      Gets body kinematics containing estimated bias values for accelerometer and gyroscope.
      Returns:
      body kinematics containing estimated bias values.
    • getBiasesAsBodyKinematics

      public void getBiasesAsBodyKinematics(BodyKinematics result)
      Gets body kinematics containing estimated bias values for accelerometer and gyroscope.
      Parameters:
      result - instance where body kinematics containing estimated bias values will be stored.
    • getVarianceFx

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

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

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

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

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

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

      public double getStandardDeviationFx()
      Gets estimated standard deviation of x coordinate of accelerometer sensed specific force expressed in (m/s^2).
      Returns:
      estimated standard deviation of x coordinate of sensed specific force.
    • getStandardDeviationFxAsAcceleration

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

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

      public double getStandardDeviationFy()
      Gets estimated standard deviation of y coordinate of accelerometer sensed specific force expressed in (m/s^2).
      Returns:
      estimated standard deviation of y coordinate of sensed specific force.
    • getStandardDeviationFyAsAcceleration

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

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

      public double getStandardDeviationFz()
      Gets estimated standard deviation of z coordinate of accelerometer sensed specific force expressed in (m/s^2).
      Returns:
      estimated standard deviation of z coordinate of sensed specific force.
    • getStandardDeviationFzAsAcceleration

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

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

      public AccelerationTriad getStandardDeviationF()
      Gets estimated standard deviation of accelerometer sensed specific force.
      Returns:
      estimated standard deviation of accelerometer
    • getStandardDeviationF

      public void getStandardDeviationF(AccelerationTriad result)
      Gets estimated standard deviation of accelerometer sensed specific force.
      Parameters:
      result - instance where estimated standard deviation of accelerometer will be stored.
    • getAverageAccelerometerStandardDeviation

      public double getAverageAccelerometerStandardDeviation()
      Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates expressed in meters per squared second (m/s^2).
      Returns:
      average of estimated standard deviation of accelerometer.
    • getAverageAccelerometerStandardDeviationAsAcceleration

      public com.irurueta.units.Acceleration getAverageAccelerometerStandardDeviationAsAcceleration()
      Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.
      Returns:
      average of estimated standard deviation of accelerometer.
    • getAverageAccelerometerStandardDeviationAsAcceleration

      public void getAverageAccelerometerStandardDeviationAsAcceleration(com.irurueta.units.Acceleration result)
      Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.
      Parameters:
      result - instance where result data will be copied to.
    • getStandardDeviationAngularRateX

      public double getStandardDeviationAngularRateX()
      Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate expressed in (rad/s).
      Returns:
      estimated standard deviation of x coordinate of sensed angular rate.
    • getStandardDeviationAngularRateXAsAngularSpeed

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateXAsAngularSpeed()
      Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.
      Returns:
      estimated standard deviation of x coordinate of sensed angular rate.
    • getStandardDeviationAngularRateXAsAngularSpeed

      public void getStandardDeviationAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where estimated standard deviation of x coordinate of sensed angular rate will be stored.
    • getStandardDeviationAngularRateY

      public double getStandardDeviationAngularRateY()
      Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate expressed in (rad/s).
      Returns:
      estimated standard deviation of y coordinate of sensed angular rate.
    • getStandardDeviationAngularRateYAsAngularSpeed

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateYAsAngularSpeed()
      Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.
      Returns:
      estimated standard deviation of y coordinate of sensed angular rate.
    • getStandardDeviationAngularRateYAsAngularSpeed

      public void getStandardDeviationAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where estimated standard deviation of y coordinate of sensed angular rate will be stored.
    • getStandardDeviationAngularRateZ

      public double getStandardDeviationAngularRateZ()
      Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate expressed in (rad/s).
      Returns:
      estimated standard deviation of z coordinate of sensed angular rate.
    • getStandardDeviationAngularRateZAsAngularSpeed

      public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateZAsAngularSpeed()
      Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.
      Returns:
      estimated standard deviation of z coordinate of sensed angular rate.
    • getStandardDeviationAngularRateZAsAngularSpeed

      public void getStandardDeviationAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.
      Parameters:
      result - instance where estimated standard deviation of z coordinate of sensed angular rate will be stored.
    • getStandardDeviationAngularRate

      public AngularSpeedTriad getStandardDeviationAngularRate()
      Gets estimated standard deviation of sensed angular rate.
      Returns:
      estimated standard deviation of sensed angular rate.
    • getStandardDeviationAngularRate

      public void getStandardDeviationAngularRate(AngularSpeedTriad result)
      Gets estimated standard deviation of sensed angular rate.
      Parameters:
      result - instance where estimated standard deviation of sensed angular rate.
    • getAverageGyroscopeStandardDeviation

      public double getAverageGyroscopeStandardDeviation()
      Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates expressed in radians per second (rad/s).
      Returns:
      average of estimated standard deviation of gyroscope.
    • getAverageGyroscopeStandardDeviationAsAngularSpeed

      public com.irurueta.units.AngularSpeed getAverageGyroscopeStandardDeviationAsAngularSpeed()
      Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.
      Returns:
      average of estimated standard deviation of gyroscope.
    • getAverageGyroscopeStandardDeviationAsAngularSpeed

      public void getAverageGyroscopeStandardDeviationAsAngularSpeed(com.irurueta.units.AngularSpeed result)
      Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.
      Parameters:
      result - instance where result data will be copied to.
    • getStandardDeviationsAsBodyKinematics

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      public double getAccelerometerNoiseRootPSD()
      Gets accelerometer noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed as (m * s^-1.5).
      Returns:
      average accelerometer noise root PSD.
    • getGyroNoisePSD

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

      public double getGyroNoiseRootPSD()
      Gets gyroscope noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed in (rad * s^-0.5).
      Returns:
      average gyroscope noise root PSD.
    • getAccelerometerBias

      public com.irurueta.algebra.Matrix getAccelerometerBias()
      Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.
      Returns:
      estimated bias of accelerometer sensed specific force.
    • getAccelerometerBias

      public void getAccelerometerBias(com.irurueta.algebra.Matrix result)
      Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.
      Parameters:
      result - instance where data will be copied to. Must be 3x1.
      Throws:
      IllegalArgumentException - if provided result matrix is not 3x1.
    • getGyroBias

      public com.irurueta.algebra.Matrix getGyroBias()
      Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.
      Returns:
      estimated bias of gyroscope sensed angular rates.
    • getGyroBias

      public void getGyroBias(com.irurueta.algebra.Matrix result)
      Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.
      Parameters:
      result - instance where data will be copied to. Must be 3x1.
      Throws:
      IllegalArgumentException - if provided result matrix is not 3x1.
    • getNumberOfProcessedSamples

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

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

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

      public void getElapsedTime(com.irurueta.units.Time result)
      Gets amount of total elapsed time since first processed measurement.
      Parameters:
      result - instance where result will be stored.
    • isRunning

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

      public BodyKinematics getExpectedKinematics()
      Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.
      Returns:
      expected body kinematics.
    • getExpectedKinematics

      public void getExpectedKinematics(BodyKinematics result)
      Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.
      Parameters:
      result - instance where expected body kinematics will be stored.
    • addBodyKinematics

      public void addBodyKinematics(BodyKinematics kinematics) throws com.irurueta.navigation.LockedException
      Adds a sample of body kinematics (accelerometer + gyroscope readings) obtained from an IMU.
      Parameters:
      kinematics - kinematics instance to be added and processed.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • reset

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

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

      private void rebuildExpectedKinematics()
      Rebuilds expected theoretical kinematics for provided body position and orientation and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.