Class MSACRobustKnownHardIronAndFrameMagnetometerCalibratorTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.magnetometer.MSACRobustKnownHardIronAndFrameMagnetometerCalibratorTest
All Implemented Interfaces:
RobustKnownHardIronAndFrameMagnetometerCalibratorListener

class MSACRobustKnownHardIronAndFrameMagnetometerCalibratorTest extends Object implements RobustKnownHardIronAndFrameMagnetometerCalibratorListener
  • Field Details

    • MIN_HARD_IRON

      private static final double MIN_HARD_IRON
      See Also:
    • MAX_HARD_IRON

      private static final double MAX_HARD_IRON
      See Also:
    • MIN_SOFT_IRON

      private static final double MIN_SOFT_IRON
      See Also:
    • MAX_SOFT_IRON

      private static final double MAX_SOFT_IRON
      See Also:
    • MIN_ANGLE_DEGREES

      private static final double MIN_ANGLE_DEGREES
      See Also:
    • MAX_ANGLE_DEGREES

      private static final double MAX_ANGLE_DEGREES
      See Also:
    • MIN_LATITUDE_DEGREES

      private static final double MIN_LATITUDE_DEGREES
      See Also:
    • MAX_LATITUDE_DEGREES

      private static final double MAX_LATITUDE_DEGREES
      See Also:
    • MIN_LONGITUDE_DEGREES

      private static final double MIN_LONGITUDE_DEGREES
      See Also:
    • MAX_LONGITUDE_DEGREES

      private static final double MAX_LONGITUDE_DEGREES
      See Also:
    • MIN_HEIGHT_METERS

      private static final double MIN_HEIGHT_METERS
      See Also:
    • MAX_HEIGHT_METERS

      private static final double MAX_HEIGHT_METERS
      See Also:
    • MAGNETOMETER_NOISE_STD

      private static final double MAGNETOMETER_NOISE_STD
      See Also:
    • ABSOLUTE_ERROR

      private static final double ABSOLUTE_ERROR
      See Also:
    • VERY_LARGE_ABSOLUTE_ERROR

      private static final double VERY_LARGE_ABSOLUTE_ERROR
      See Also:
    • MEASUREMENT_NUMBER

      private static final int MEASUREMENT_NUMBER
      See Also:
    • OUTLIER_PERCENTAGE

      private static final int OUTLIER_PERCENTAGE
      See Also:
    • THRESHOLD

      private static final double THRESHOLD
      See Also:
    • LARGE_THRESHOLD

      private static final double LARGE_THRESHOLD
      See Also:
    • OUTLIER_ERROR_FACTOR

      private static final double OUTLIER_ERROR_FACTOR
      See Also:
    • TIMES

      private static final int TIMES
      See Also:
    • START_CALENDAR

      private static final Calendar START_CALENDAR
    • END_CALENDAR

      private static final Calendar END_CALENDAR
    • START_TIMESTAMP_MILLIS

      private static final long START_TIMESTAMP_MILLIS
    • END_TIMESTAMP_MILLIS

      private static final long END_TIMESTAMP_MILLIS
    • calibrateStart

      private int calibrateStart
    • calibrateEnd

      private int calibrateEnd
    • calibrateNextIteration

      private int calibrateNextIteration
    • calibrateProgressChange

      private int calibrateProgressChange
  • Constructor Details

    • MSACRobustKnownHardIronAndFrameMagnetometerCalibratorTest

      MSACRobustKnownHardIronAndFrameMagnetometerCalibratorTest()
  • Method Details

    • testConstructor1

      @Test void testConstructor1() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor2

      @Test void testConstructor2() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor3

      @Test void testConstructor3() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor4

      @Test void testConstructor4() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor5

      @Test void testConstructor5() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor6

      @Test void testConstructor6() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor7

      @Test void testConstructor7() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor8

      @Test void testConstructor8() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testGetSetThreshold

      @Test void testGetSetThreshold() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronX

      @Test void testGetSetHardIronX() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronY

      @Test void testGetSetHardIronY() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronZ

      @Test void testGetSetHardIronZ() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronXAsMagneticFluxDensity

      @Test void testGetSetHardIronXAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronYAsMagneticFluxDensity

      @Test void testGetSetHardIronYAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronZAsMagneticFluxDensity

      @Test void testGetSetHardIronZAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetHardIronCoordinates1

      @Test void testSetHardIronCoordinates1() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetHardIronCoordinates2

      @Test void testSetHardIronCoordinates2() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetHardIronAsTriad

      @Test void testGetSetHardIronAsTriad() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialSx

      @Test void testGetSetInitialSx() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialSy

      @Test void testGetSetInitialSy() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialSz

      @Test void testGetSetInitialSz() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMxy

      @Test void testGetSetInitialMxy() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMxz

      @Test void testGetSetInitialMxz() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMyx

      @Test void testGetSetInitialMyx() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMyz

      @Test void testGetSetInitialMyz() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMzx

      @Test void testGetSetInitialMzx() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialMzy

      @Test void testGetSetInitialMzy() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetInitialScalingFactors

      @Test void testSetInitialScalingFactors() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetInitialCrossCouplingErrors

      @Test void testSetInitialCrossCouplingErrors() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetInitialScalingFactorsAndCrossCouplingErrors

      @Test void testSetInitialScalingFactorsAndCrossCouplingErrors() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetHardIronAsArray

      @Test void testGetHardIronAsArray() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetHardIronAsMatrix

      @Test void testGetHardIronAsMatrix() throws com.irurueta.navigation.LockedException, com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.navigation.LockedException
      com.irurueta.algebra.WrongSizeException
    • testGetSetInitialMm

      @Test void testGetSetInitialMm() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.LockedException
    • testGetSetMeasurements

      @Test void testGetSetMeasurements() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetCommonAxisUsed

      @Test void testIsSetCommonAxisUsed() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetListener

      @Test void testGetListener() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsReady

      @Test void testIsReady() throws com.irurueta.navigation.LockedException, IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.LockedException
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • testGetSetMagneticModel

      @Test void testGetSetMagneticModel() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetLinearCalibratorUsed

      @Test void testIsSetLinearCalibratorUsed() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetPreliminarySolutionRefined

      @Test void testIsSetPreliminarySolutionRefined() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetProgressDelta

      @Test void testGetSetProgressDelta() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetConfidence

      @Test void testGetSetConfidence() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMaxIterations

      @Test void testGetSetMaxIterations() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetResultRefined

      @Test void testIsSetResultRefined() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetCovarianceKept

      @Test void testIsSetCovarianceKept() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetQualityScores

      @Test void testGetSetQualityScores() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetPreliminarySubsetSize

      @Test void testGetSetPreliminarySubsetSize() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testCalibrateGeneralNoNoiseInlier

      @Test void testCalibrateGeneralNoNoiseInlier() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • testCalibrateCommonAxisNoNoiseInlier

      @Test void testCalibrateCommonAxisNoNoiseInlier() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • testCalibrateGeneralWithInlierNoise

      @Test void testCalibrateGeneralWithInlierNoise() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • testCalibrateCommonAxisWithInlierNoise

      @Test void testCalibrateCommonAxisWithInlierNoise() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • testCalibrateGeneralNoRefinement

      @Test void testCalibrateGeneralNoRefinement() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • testCalibrateGeneralNonLinearWithInitialValue

      @Test void testCalibrateGeneralNonLinearWithInitialValue() throws IOException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, CalibrationException, com.irurueta.navigation.NotReadyException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
    • onCalibrateStart

      public void onCalibrateStart(RobustKnownHardIronAndFrameMagnetometerCalibrator calibrator)
      Specified by:
      onCalibrateStart in interface RobustKnownHardIronAndFrameMagnetometerCalibratorListener
    • onCalibrateEnd

      public void onCalibrateEnd(RobustKnownHardIronAndFrameMagnetometerCalibrator calibrator)
      Specified by:
      onCalibrateEnd in interface RobustKnownHardIronAndFrameMagnetometerCalibratorListener
    • onCalibrateNextIteration

      public void onCalibrateNextIteration(RobustKnownHardIronAndFrameMagnetometerCalibrator calibrator, int iteration)
      Specified by:
      onCalibrateNextIteration in interface RobustKnownHardIronAndFrameMagnetometerCalibratorListener
    • onCalibrateProgressChange

      public void onCalibrateProgressChange(RobustKnownHardIronAndFrameMagnetometerCalibrator calibrator, float progress)
      Specified by:
      onCalibrateProgressChange in interface RobustKnownHardIronAndFrameMagnetometerCalibratorListener
    • reset

      private void reset()
    • checkLocked

      private void checkLocked(MSACRobustKnownHardIronAndFrameMagnetometerCalibrator calibrator)
    • assertEstimatedResult

      private static void assertEstimatedResult(com.irurueta.algebra.Matrix mm, MSACRobustKnownHardIronAndFrameMagnetometerCalibrator calibrator)
    • checkCommonAxisCovariance

      private static void checkCommonAxisCovariance(com.irurueta.algebra.Matrix covariance)
    • checkGeneralCovariance

      private static void checkGeneralCovariance(com.irurueta.algebra.Matrix covariance)
    • generateMeasurementsMultipleOrientationsWithSamePosition

      private static List<StandardDeviationFrameBodyMagneticFluxDensity> generateMeasurementsMultipleOrientationsWithSamePosition(double[] hardIron, com.irurueta.algebra.Matrix softIron, WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.UniformRandomizer randomizer) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • generateMeasureAtPosition

      private static StandardDeviationFrameBodyMagneticFluxDensity generateMeasureAtPosition(double[] hardIron, com.irurueta.algebra.Matrix softIron, WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, com.irurueta.navigation.frames.NEDPosition position) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • generateMeasure

      private static StandardDeviationFrameBodyMagneticFluxDensity generateMeasure(double[] hardIron, com.irurueta.algebra.Matrix softIron, WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation cnb) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • generateBodyC

      private static com.irurueta.navigation.frames.CoordinateTransformation generateBodyC(com.irurueta.statistics.UniformRandomizer randomizer)
    • generateMeasuredMagneticFluxDensity

      private static BodyMagneticFluxDensity generateMeasuredMagneticFluxDensity(BodyMagneticFluxDensity input, double[] hardIron, com.irurueta.algebra.Matrix softIron)
    • generateHardIron

      private static double[] generateHardIron(com.irurueta.statistics.UniformRandomizer randomizer)
    • generateSoftIronGeneral

      private static com.irurueta.algebra.Matrix generateSoftIronGeneral()
    • generateSoftIronCommonAxis

      private static com.irurueta.algebra.Matrix generateSoftIronCommonAxis()
    • createPosition

      private static com.irurueta.navigation.frames.NEDPosition createPosition(com.irurueta.statistics.UniformRandomizer randomizer)
    • createTimestamp

      private static long createTimestamp(com.irurueta.statistics.UniformRandomizer randomizer)