Class RANSACRobustKnownFrameMagnetometerCalibratorTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.magnetometer.RANSACRobustKnownFrameMagnetometerCalibratorTest
All Implemented Interfaces:
RobustKnownFrameMagnetometerCalibratorListener

class RANSACRobustKnownFrameMagnetometerCalibratorTest extends Object implements RobustKnownFrameMagnetometerCalibratorListener
  • 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:
    • LARGE_ABSOLUTE_ERROR

      private static final double LARGE_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

    • RANSACRobustKnownFrameMagnetometerCalibratorTest

      RANSACRobustKnownFrameMagnetometerCalibratorTest()
  • 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
    • testIsSetComputeAndKeepInliersEnabled

      @Test void testIsSetComputeAndKeepInliersEnabled() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testIsSetComputeAndKeepResiduals

      @Test void testIsSetComputeAndKeepResiduals() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronX

      @Test void testGetSetInitialHardIronX() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronY

      @Test void testGetSetInitialHardIronY() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronZ

      @Test void testGetSetInitialHardIronZ() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronXAsMagneticFluxDensity

      @Test void testGetSetInitialHardIronXAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronYAsMagneticFluxDensity

      @Test void testGetSetInitialHardIronYAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronZAsMagneticFluxDensity

      @Test void testGetSetInitialHardIronZAsMagneticFluxDensity() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetInitialHardIron1

      @Test void testSetInitialHardIron1() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testSetInitialHardIron2

      @Test void testSetInitialHardIron2() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialHardIronAsTriad

      @Test void testGetSetInitialHardIronAsTriad() 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
    • testGetInitialHardIronAsArray

      @Test void testGetInitialHardIronAsArray() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetInitialHardIronAsMatrix

      @Test void testGetInitialHardIronAsMatrix() 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, com.irurueta.algebra.WrongSizeException
      Throws:
      IOException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      CalibrationException
      com.irurueta.navigation.NotReadyException
      com.irurueta.algebra.WrongSizeException
    • testCalibrateCommonAxisNoNoiseInlier

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

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

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

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

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

      public void onCalibrateStart(RobustKnownFrameMagnetometerCalibrator calibrator)
      Specified by:
      onCalibrateStart in interface RobustKnownFrameMagnetometerCalibratorListener
    • onCalibrateEnd

      public void onCalibrateEnd(RobustKnownFrameMagnetometerCalibrator calibrator)
      Specified by:
      onCalibrateEnd in interface RobustKnownFrameMagnetometerCalibratorListener
    • onCalibrateNextIteration

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

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

      private void reset()
    • checkLocked

      private void checkLocked(RANSACRobustKnownFrameMagnetometerCalibrator calibrator)
    • assertEstimatedResult

      private static void assertEstimatedResult(com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, RANSACRobustKnownFrameMagnetometerCalibrator calibrator, boolean checkCovariance) throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • assertCovariance

      private static void assertCovariance(RANSACRobustKnownFrameMagnetometerCalibrator 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)