Interface MagnetometerCalibrator

All Known Subinterfaces:
KnownFrameMagnetometerCalibrator<T,L>, KnownHardIronAndFrameMagnetometerCalibrator<T,L>, MagnetometerNonLinearCalibrator, OrderedStandardDeviationBodyMagneticFluxDensityMagnetometerCalibrator, OrderedStandardDeviationFrameBodyMagneticFluxDensityMagnetometerCalibrator, QualityScoredMagnetometerCalibrator, UnorderedFrameBodyMagneticFluxDensityMagnetometerCalibrator, UnorderedStandardDeviationBodyMagneticFluxDensityMagnetometerCalibrator, UnorderedStandardDeviationFrameBodyMagneticFluxDensityMagnetometerCalibrator
All Known Implementing Classes:
BaseKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, BaseMagneticFluxDensityNormMagnetometerCalibrator, KnownFrameMagnetometerLinearLeastSquaresCalibrator, KnownFrameMagnetometerNonLinearLeastSquaresCalibrator, KnownHardIronAndFrameMagnetometerLinearLeastSquaresCalibrator, KnownHardIronAndFrameMagnetometerNonLinearLeastSquaresCalibrator, KnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, KnownHardIronPositionAndInstantMagnetometerCalibrator, KnownMagneticFluxDensityNormMagnetometerCalibrator, KnownPositionAndInstantMagnetometerCalibrator, LMedSRobustKnownFrameMagnetometerCalibrator, LMedSRobustKnownHardIronAndFrameMagnetometerCalibrator, LMedSRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, LMedSRobustKnownHardIronPositionAndInstantMagnetometerCalibrator, LMedSRobustKnownMagneticFluxDensityNormMagnetometerCalibrator, LMedSRobustKnownPositionAndInstantMagnetometerCalibrator, MSACRobustKnownFrameMagnetometerCalibrator, MSACRobustKnownHardIronAndFrameMagnetometerCalibrator, MSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, MSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator, MSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator, MSACRobustKnownPositionAndInstantMagnetometerCalibrator, PROMedSRobustKnownFrameMagnetometerCalibrator, PROMedSRobustKnownHardIronAndFrameMagnetometerCalibrator, PROMedSRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, PROMedSRobustKnownHardIronPositionAndInstantMagnetometerCalibrator, PROMedSRobustKnownMagneticFluxDensityNormMagnetometerCalibrator, PROMedSRobustKnownPositionAndInstantMagnetometerCalibrator, PROSACRobustKnownFrameMagnetometerCalibrator, PROSACRobustKnownHardIronAndFrameMagnetometerCalibrator, PROSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, PROSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator, PROSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator, PROSACRobustKnownPositionAndInstantMagnetometerCalibrator, RANSACRobustKnownFrameMagnetometerCalibrator, RANSACRobustKnownHardIronAndFrameMagnetometerCalibrator, RANSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, RANSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator, RANSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator, RANSACRobustKnownPositionAndInstantMagnetometerCalibrator, RobustKnownFrameMagnetometerCalibrator, RobustKnownHardIronAndFrameMagnetometerCalibrator, RobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator, RobustKnownHardIronPositionAndInstantMagnetometerCalibrator, RobustKnownMagneticFluxDensityNormMagnetometerCalibrator, RobustKnownPositionAndInstantMagnetometerCalibrator

public interface MagnetometerCalibrator
Interface for magnetometer calibrators.
  • Method Details

    • getMeasurementType

      Indicates the type of measurement used by this calibrator.
      Returns:
      type of measurement used by this calibrator.
    • isOrderedMeasurementsRequired

      boolean isOrderedMeasurementsRequired()
      Indicates whether this calibrator requires ordered measurements in a list or not.
      Returns:
      true if measurements must be ordered, false otherwise.
    • isQualityScoresRequired

      boolean isQualityScoresRequired()
      Indicates whether this calibrator requires quality scores for each measurement or not.
      Returns:
      true if quality scores are required, false otherwise.
    • isCommonAxisUsed

      boolean isCommonAxisUsed()
      Indicates whether z-axis is assumed to be common for accelerometer, gyroscope and magnetometer. When enabled, this eliminates 3 variables from Mm (soft-iron) matrix.
      Returns:
      true if z-axis is assumed to be common for accelerometer, gyroscope and magnetometer, false otherwise.
    • setCommonAxisUsed

      void setCommonAxisUsed(boolean commonAxisUsed) throws com.irurueta.navigation.LockedException
      Specifies whether z-axis is assumed to be common for accelerometer and gyroscope. When enabled, this eliminates 3 variables from Mm matrix.
      Parameters:
      commonAxisUsed - true if z-axis is assumed to be common for accelerometer, gyroscope and magnetometer, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is currently running.
    • getMinimumRequiredMeasurements

      int getMinimumRequiredMeasurements()
      Gets minimum number of required measurements.
      Returns:
      minimum number of required measurements.
    • isReady

      boolean isReady()
      Indicates whether calibrator is ready to start the estimator.
      Returns:
      true if calibrator is ready, false otherwise.
    • isRunning

      boolean isRunning()
      Indicates whether calibrator is currently running or no.
      Returns:
      true if calibrator is running, false otherwise.
    • calibrate

      void calibrate() throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, CalibrationException
      Estimates accelerometer calibration parameters containing scale factors and cross-coupling errors.
      Throws:
      com.irurueta.navigation.LockedException - if calibrator is currently running.
      com.irurueta.navigation.NotReadyException - if calibrator is not ready.
      CalibrationException - if calibration fails for numerical reasons.
    • getEstimatedMm

      com.irurueta.algebra.Matrix getEstimatedMm()
      Gets estimated magnetometer soft-iron matrix containing scale factors and cross coupling errors. This is the product of matrix Tm containing cross coupling errors and Km containing scaling factors. So tat:
           Mm = [sx    mxy  mxz] = Tm*Km
                [myx   sy   myz]
                [mzx   mzy  sz ]
       
      Where:
           Km = [sx 0   0 ]
                [0  sy  0 ]
                [0  0   sz]
       
      and
           Tm = [1          -alphaXy    alphaXz ]
                [alphaYx    1           -alphaYz]
                [-alphaZx   alphaZy     1       ]
       
      Hence:
           Mm = [sx    mxy  mxz] = Tm*Km =  [sx             -sy * alphaXy   sz * alphaXz ]
                [myx   sy   myz]            [sx * alphaYx   sy              -sz * alphaYz]
                [mzx   mzy  sz ]            [-sx * alphaZx  sy * alphaZy    sz           ]
       
      This instance allows any 3x3 matrix however, typically alphaYx, alphaZx and alphaZy are considered to be zero if the accelerometer z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Mm matrix becomes upper diagonal:
           Mm = [sx    mxy  mxz]
                [0     sy   myz]
                [0     0    sz ]
       
      Values of this matrix are unit-less.
      Returns:
      estimated magnetometer soft-iron scale factors and cross coupling errors, or null if not available.
    • getEstimatedSx

      Double getEstimatedSx()
      Gets estimated x-axis scale factor.
      Returns:
      estimated x-axis scale factor or null if not available.
    • getEstimatedSy

      Double getEstimatedSy()
      Gets estimated y-axis scale factor.
      Returns:
      estimated y-axis scale factor or null if not available.
    • getEstimatedSz

      Double getEstimatedSz()
      Gets estimated z-axis scale factor.
      Returns:
      estimated z-axis scale factor or null if not available.
    • getEstimatedMxy

      Double getEstimatedMxy()
      Gets estimated x-y cross-coupling error.
      Returns:
      estimated x-y cross-coupling error or null if not available.
    • getEstimatedMxz

      Double getEstimatedMxz()
      Gets estimated x-z cross-coupling error.
      Returns:
      estimated x-z cross-coupling error or null if not available.
    • getEstimatedMyx

      Double getEstimatedMyx()
      Gets estimated y-x cross-coupling error.
      Returns:
      estimated y-x cross-coupling error or null if not available.
    • getEstimatedMyz

      Double getEstimatedMyz()
      Gets estimated y-z cross-coupling error.
      Returns:
      estimated y-z cross-coupling error or null if not available.
    • getEstimatedMzx

      Double getEstimatedMzx()
      Gets estimated z-x cross-coupling error.
      Returns:
      estimated z-x cross-coupling error or null if not available.
    • getEstimatedMzy

      Double getEstimatedMzy()
      Gets estimated z-y cross-coupling error.
      Returns:
      estimated z-y cross-coupling error or null if not available.