Class BodyMagneticFluxDensityBiasEstimator

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

public class BodyMagneticFluxDensityBiasEstimator extends Object
Approximately estimated magnetometer biases (hard iron) and noise PSD's by averaging all provided samples when instant, body position and orientation is known while assuming that any soft iron cross coupling errors can be neglected.

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

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

Notice that in order to compute magnetometer biases (hard iron), instant, body position and orientation must be known to account for expected magnetic field to be sensed.

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, by using bias values as initial hard iron values. Such calibrators are: - com.irurueta.navigation.inertial.calibration.magnetometer.KnownFrameMagnetometerNonLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.magnetometer.KnownPositionAndInstantMagnetometerCalibrator - com.irurueta.navigation.inertial.calibration.magnetometer.RobustKnownFrameMagnetometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.magnetometer.RobustKnownPositionAndInstantMagnetometerCalibrator 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 Details

    • DEFAULT_TIME_INTERVAL_SECONDS

      public static final double DEFAULT_TIME_INTERVAL_SECONDS
      Default time interval between accelerometer 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.
    • year

      private double year
      Contains year expressed in decimal format.
    • listener

      Listener to handle events raised by this estimator.
    • magneticModel

      private WorldMagneticModel magneticModel
      Contains Earth's magnetic model.
    • wmmEstimator

      World Magnetic Model of Earth.
    • lastBodyMagneticFluxDensity

      private BodyMagneticFluxDensity lastBodyMagneticFluxDensity
      Last provided body magnetic flux density values.
    • biasX

      private double biasX
      Contains estimated bias of x coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
    • biasY

      private double biasY
      Contains estimated bias of y coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
    • biasZ

      private double biasZ
      Contains estimated bias of z coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
    • varianceX

      private double varianceX
      Contains estimated variance of x coordinate of body magnetic flux density expressed in squared Teslas (T^2).
    • varianceY

      private double varianceY
      Contains estimated variance of y coordinate of body magnetic flux density expressed in squared Teslas (T^2).
    • varianceZ

      private double varianceZ
      Contains estimated variance of z coordinate of body magnetic flux density expressed in squared Teslas (T^2).
    • numberOfProcessedSamples

      private int numberOfProcessedSamples
      Number of processed magnetometer samples.
    • numberOfProcessedSamplesPlusOne

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

      private boolean running
      Indicates that estimator is running.
    • expectedBodyMagneticFluxDensity

      private BodyMagneticFluxDensity expectedBodyMagneticFluxDensity
      Theoretical expected body magnetic flux density for provided instant, body position and orientation, assuming that body remains at the same position (zero velocity). When body remains static, sensed magnetic flux density will remain constant for a few minutes respect to provided time instant.
  • Constructor Details

    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator() throws IOException
      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. This constructor assumes that time is current time instant.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation. This constructor assumes that time is current time instant.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      latitude - latitude expressed in radians (rad).
      longitude - longitude expressed in radians (rad).
      height - height expressed in meters (m).
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      Constructor. This constructor assumes that time is current time instant.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      Constructor. This constructor assumes that time is current time instant.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0, and height = 0) with provided orientation. This constructor assumes that time is current time instant.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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. This constructor assumes that time is current time instant.
      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.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height expressed in meters (m).
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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. This constructor assumes that time is current time instant.
      Parameters:
      latitude - latitude.
      longitude - longitude.
      height - height.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      Constructor. This constructor assumes that time is current time instant.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double year) throws IOException
      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:
      year - time expressed as decimal year.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double year) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, double year) throws IOException
      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).
      year - time expressed as decimal year.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double year) throws IOException
      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).
      year - time expressed as decimal year.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double year) throws IOException
      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.
      year - time expressed as decimal year.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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:
      year - time expressed as decimal year.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      year - time expressed as decimal year.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      year - time expressed as decimal year.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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.
      year - time expressed as decimal year.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(Date date) throws IOException
      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:
      date - a time instance to be converted.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, Date date) throws IOException
      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).
      date - a time instance to be converted.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, Date date) throws IOException
      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).
      date - a time instance to be converted.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, Date date) throws IOException
      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.
      date - a time instance to be converted.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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:
      date - a time instance to be converted.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      date - a time instance to be converted.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      date - a time instance to be converted.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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.
      date - a time instance to be converted.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double year, WorldMagneticModel magneticModel) throws IOException
      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:
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, double year, WorldMagneticModel magneticModel) throws IOException
      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).
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double year, WorldMagneticModel magneticModel) throws IOException
      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).
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double year, WorldMagneticModel magneticModel) throws IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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:
      year - time expressed as decimal year.
      listener - listener to handle events raised by this estimator.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double year, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      year - time expressed as decimal year.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(Date date, WorldMagneticModel magneticModel) throws IOException
      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:
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, Date date, WorldMagneticModel magneticModel) throws IOException
      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).
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, Date date, WorldMagneticModel magneticModel) throws IOException
      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).
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, Date date, WorldMagneticModel magneticModel) throws IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException - if provided coordinate transformation is not from body to local navigation coordinates.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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:
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(double latitude, double longitude, double height, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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).
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      listener - listener to handle events raised by this estimator.
      Throws:
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
    • BodyMagneticFluxDensityBiasEstimator

      public BodyMagneticFluxDensityBiasEstimator(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, Date date, WorldMagneticModel magneticModel, BodyMagneticFluxDensityBiasEstimatorListener listener) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, IOException
      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.
      date - a time instance to be converted.
      magneticModel - world magnetic model of Earth or null if default model is used.
      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.
      IOException - if initialization of world magnetic model fails.
  • 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:
    • getYear

      public double getYear()
      Gets year expressed in decimal format.
      Returns:
      year expressed in decimal format.
    • setYear

      public void setYear(double year) throws com.irurueta.navigation.LockedException
      Sets year expressed in decimal format.
      Parameters:
      year - year expressed in decimal format.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setTime

      public void setTime(Date date) throws com.irurueta.navigation.LockedException
      Sets decimal year from provided date instance.
      Parameters:
      date - a date instance containing a timestamp.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • setTime

      public void setTime(GregorianCalendar calendar) throws com.irurueta.navigation.LockedException
      Sets decimal year from provided calendar instance.
      Parameters:
      calendar - a calendar instance containing a timestamp.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is running.
    • getMagneticModel

      public WorldMagneticModel getMagneticModel()
      Gets Earth's magnetic model.
      Returns:
      Earth's magnetic model or null if not provided.
    • setMagneticModel

      public void setMagneticModel(WorldMagneticModel magneticModel) throws com.irurueta.navigation.LockedException, IOException
      Sets Earth's magnetic model. If not provided a default model will be loaded internally.
      Parameters:
      magneticModel - Earth's magnetic model to be set.
      Throws:
      com.irurueta.navigation.LockedException - if calibrator is currently running.
      IOException - if initialization of world magnetic model fails.
    • getListener

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

      public void setListener(BodyMagneticFluxDensityBiasEstimatorListener 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.
    • getLastBodyMagneticFluxDensity

      public BodyMagneticFluxDensity getLastBodyMagneticFluxDensity()
      Gets last provided body magnetic flux density values or null if not available.
      Returns:
      last provided body magnetic flux density values or null.
    • getLastBodyMagneticFluxDensity

      public boolean getLastBodyMagneticFluxDensity(BodyMagneticFluxDensity result)
      Gets last provided body magnetic flux density values.
      Parameters:
      result - instance where last provided body magnetic flux density will be stored.
      Returns:
      true if result instance was updated, false otherwise.
    • getBiasX

      public double getBiasX()
      Gets estimated bias of x coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of x coordinate of body magnetic flux density.
    • getBiasXAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getBiasXAsMagneticFluxDensity()
      Gets estimated bias of x coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of x coordinate of body magnetic flux density.
    • getBiasXAsMagneticFluxDensity

      public void getBiasXAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated bias of x coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Parameters:
      result - instance where bias of x coordinate of body magnetic flux density will be stored.
    • getBiasY

      public double getBiasY()
      Gets estimated bias of y coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of y coordinate of body magnetic flux density.
    • getBiasYAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getBiasYAsMagneticFluxDensity()
      Gets estimated bias of y coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of y coordinate of body magnetic flux density.
    • getBiasYAsMagneticFluxDensity

      public void getBiasYAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated bias of y coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Parameters:
      result - instance where bias of y coordinate of body magnetic flux density will be stored.
    • getBiasZ

      public double getBiasZ()
      Gets estimated bias of z coordinate of body magnetic flux density expressed in Teslas (T). Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of z coordinate of body magnetic flux density.
    • getBiasZAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getBiasZAsMagneticFluxDensity()
      Gets estimated bias of z coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Returns:
      bias of z coordinate of body magnetic flux density.
    • getBiasZAsMagneticFluxDensity

      public void getBiasZAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated bias of z coordinate of body magnetic flux density. Notice that bias is equivalent to hard iron component on a magnetometer calibrator.
      Parameters:
      result - instance where bias of z coordinate of body magnetic flux density will be stored.
    • getBiasTriad

      public MagneticFluxDensityTriad getBiasTriad()
      Gets estimated bias of body magnetic flux density.
      Returns:
      estimated bias of magnetic flux density.
    • getBiasTriad

      public void getBiasTriad(MagneticFluxDensityTriad result)
      Gets estimated bias of body magnetic flux density.
      Parameters:
      result - instance where bias of body magnetic flux density will be stored.
    • getVarianceX

      public double getVarianceX()
      Gets estimated variance of x coordinate of body magnetic flux density expressed in squared Teslas (T^2).
      Returns:
      estimated variance of x coordinate of body magnetic flux density.
    • getVarianceY

      public double getVarianceY()
      Gets estimated variance of y coordinate of body magnetic flux density expressed in squared Teslas (T^2).
      Returns:
      estimated variance of y coordinate of body magnetic flux density.
    • getVarianceZ

      public double getVarianceZ()
      Gets estimated variance of z coordinate of body magnetic flux density expressed in squared Teslas (T^2).
      Returns:
      estimated variance of z coordinate of body magnetic flux density.
    • getStandardDeviationX

      public double getStandardDeviationX()
      Gets estimated standard deviation of x coordinate of body magnetic flux density expressed in Teslas (T).
      Returns:
      estimated standard deviation of x coordinate of body magnetic flux density.
    • getStandardDeviationXAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getStandardDeviationXAsMagneticFluxDensity()
      Gets estimated standard deviation of x coordinate of body magnetic flux density.
      Returns:
      estimated standard deviation of x coordinate of body magnetic flux density.
    • getStandardDeviationXAsMagneticFluxDensity

      public void getStandardDeviationXAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated standard deviation of x coordinate of body magnetic flux density.
      Parameters:
      result - instance where estimated standard deviation of x coordinate of body magnetic flux density will be stored.
    • getStandardDeviationY

      public double getStandardDeviationY()
      Gets estimated standard deviation of y coordinate of body magnetic flux density expressed in Teslas (T).
      Returns:
      estimated standard deviation of y coordinate of body magnetic flux density.
    • getStandardDeviationYAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getStandardDeviationYAsMagneticFluxDensity()
      Gets estimated standard deviation of y coordinate of body magnetic flux density.
      Returns:
      estimated standard deviation of y coordinate of body magnetic flux density.
    • getStandardDeviationYAsMagneticFluxDensity

      public void getStandardDeviationYAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated standard deviation of y coordinate of body magnetic flux density.
      Parameters:
      result - instance where estimated standard deviation of y coordinate of body magnetic flux density will be stored.
    • getStandardDeviationZ

      public double getStandardDeviationZ()
      Gets estimated standard deviation of z coordinate of body magnetic flux density expressed in Teslas (T).
      Returns:
      estimated standard deviation of z coordinate of body magnetic flux density.
    • getStandardDeviationZAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getStandardDeviationZAsMagneticFluxDensity()
      Gets estimated standard deviation of z coordinate of body magnetic flux density.
      Returns:
      estimated standard deviation of z coordinate of body magnetic flux density.
    • getStandardDeviationZAsMagneticFluxDensity

      public void getStandardDeviationZAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets estimated standard deviation of z coordinate of body magnetic flux density.
      Parameters:
      result - instance where estimated standard deviation of z coordinate of body magnetic flux density will be stored.
    • getStandardDeviationTriad

      public MagneticFluxDensityTriad getStandardDeviationTriad()
      Gets estimated standard deviation of body magnetic flux density.
      Returns:
      estimated standard deviation of body magnetic flux density.
    • getStandardDeviationTriad

      public void getStandardDeviationTriad(MagneticFluxDensityTriad result)
      Gets estimated standard deviation of body magnetic flux density.
      Parameters:
      result - instance where estimated standard deviation of body magnetic flux density will be stored.
    • getAverageStandardDeviation

      public double getAverageStandardDeviation()
      Gets average of estimated standard deviation of body magnetic flux density expressed in Teslas (T).
      Returns:
      average of estimated standard deviation of body magnetic flux density.
    • getAverageStandardDeviationAsMagneticFluxDensity

      public com.irurueta.units.MagneticFluxDensity getAverageStandardDeviationAsMagneticFluxDensity()
      Gets average of estimated standard deviation of body magnetic flux density.
      Returns:
      average of estimated standard deviation of body magnetic flux density.
    • getAverageStandardDeviationAsMagneticFluxDensity

      public void getAverageStandardDeviationAsMagneticFluxDensity(com.irurueta.units.MagneticFluxDensity result)
      Gets average of estimated standard deviation of body magnetic flux density.
      Parameters:
      result - instance where average of estimated standard deviation of body magnetic flux density will be stored.
    • getPsdX

      public double getPsdX()
      Gets magnetometer noise PSD (Power Spectral Density) on x axis expressed in (T^2 * s).
      Returns:
      magnetometer noise PSD on x axis.
    • getPsdY

      public double getPsdY()
      Gets magnetometer noise PSD (Power Spectral Density) on y axis expressed in (T^2 * s).
      Returns:
      magnetometer noise PSD on y axis.
    • getPsdZ

      public double getPsdZ()
      Gets magnetometer noise PSD (Power Spectral Density) on z axis expressed in (T^2 * s).
      Returns:
      magnetometer noise PSD on z axis.
    • getRootPsdX

      public double getRootPsdX()
      Gets magnetometer noise root PSD (Power Spectral Density) on x axis expressed in (T * s^0.5).
      Returns:
      magnetometer noise root PSD on x axis.
    • getRootPsdY

      public double getRootPsdY()
      Gets magnetometer noise root PSD (Power Spectral Density) on y axis expressed in (T * s^0.5).
      Returns:
      magnetometer noise root PSD on y axis.
    • getRootPsdZ

      public double getRootPsdZ()
      Gets magnetometer noise root PSD (Power Spectral Density) on z axis expressed in (T * s^0.5).
      Returns:
      magnetometer noise root PSD on z axis.
    • getAvgPsd

      public double getAvgPsd()
      Gets average magnetometer noise PSD (Power Spectral Density) among x,y,z components expressed as (T^2 * s).
      Returns:
      average magnetometer noise PSD.
    • getRootPsd

      public double getRootPsd()
      Gets magnetometer root noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed as (T * s^0.5).
      Returns:
      average magnetometer noise root PSD.
    • getNumberOfProcessedSamples

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

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

      public BodyMagneticFluxDensity getExpectedBodyMagneticFluxDensity()
      Gets theoretically expected body magnetic flux density for provided instant, body position and orientation, assuming that body remains at the same position (zero velocity). When body remains static, sensed magnetic flux density will remain constant for a few minutes respect to provided time instant.
      Returns:
      expected body magnetic flux density.
    • getExpectedBodyMagneticFluxDensity

      public void getExpectedBodyMagneticFluxDensity(BodyMagneticFluxDensity result)
      Gets theoretically expected body magnetic flux density for provided instant, body position and orientation, assuming that body remains at the same position (zero velocity). When body remains static, sensed magnetic flux density will remain constant for a few minutes respect to provided time instant.
      Parameters:
      result - instance where expected body magnetic flux density will be stored.
    • addBodyMagneticFluxDensity

      public void addBodyMagneticFluxDensity(BodyMagneticFluxDensity bodyMagneticFluxDensity) throws com.irurueta.navigation.LockedException
      Adds a sample of body magnetic flux density. If estimator is already
      Parameters:
      bodyMagneticFluxDensity - body magnetic flux density 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

      public static double convertTime(Date date)
      Converts a time instant contained ina date object to a decimal year.
      Parameters:
      date - a time instance to be converted.
      Returns:
      converted value expressed in decimal years.
    • convertTime

      public static double convertTime(GregorianCalendar calendar)
      Converts a time instant contained in a gregorian calendar to a decimal year.
      Parameters:
      calendar - calendar containing a specific instant to be converted.
      Returns:
      converted value expressed in decimal years.
    • 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.
    • initialize

      private void initialize() throws IOException
      Initializes world magnetic model and estimates expected body magnetic flux density.
      Throws:
      IOException - if world magnetic model loading fails.
    • rebuildExpectedBodyMagneticFluxDensity

      private void rebuildExpectedBodyMagneticFluxDensity()
      Rebuilds expected body magnetic flux density based on current instant, location and body orientation.