Class KnownFrameMagnetometerLinearLeastSquaresCalibratorTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.magnetometer.KnownFrameMagnetometerLinearLeastSquaresCalibratorTest
All Implemented Interfaces:
KnownFrameMagnetometerCalibratorListener<KnownFrameMagnetometerLinearLeastSquaresCalibrator>, KnownFrameMagnetometerLinearLeastSquaresCalibratorListener

class KnownFrameMagnetometerLinearLeastSquaresCalibratorTest extends Object implements KnownFrameMagnetometerLinearLeastSquaresCalibratorListener
  • 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:
    • SMALL_MEASUREMENT_NUMBER

      private static final int SMALL_MEASUREMENT_NUMBER
      See Also:
    • LARGE_MEASUREMENT_NUMBER

      private static final int LARGE_MEASUREMENT_NUMBER
      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:
    • 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
  • Constructor Details

    • KnownFrameMagnetometerLinearLeastSquaresCalibratorTest

      KnownFrameMagnetometerLinearLeastSquaresCalibratorTest()
  • 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
    • testConstructor9

      @Test void testConstructor9() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor10

      @Test void testConstructor10() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor11

      @Test void testConstructor11() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor12

      @Test void testConstructor12() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor13

      @Test void testConstructor13() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor14

      @Test void testConstructor14() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor15

      @Test void testConstructor15() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • testConstructor16

      @Test void testConstructor16() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • 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
    • testGetSetListener

      @Test void testGetSetListener() 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
    • testCalibrateMultipleOrientationsForGeneralCaseWithMinimumMeasuresNoNoiseAndNoMagneticModel

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

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

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

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

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

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

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

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

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

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

      public void onCalibrateStart(KnownFrameMagnetometerLinearLeastSquaresCalibrator calibrator)
      Specified by:
      onCalibrateStart in interface KnownFrameMagnetometerCalibratorListener<KnownFrameMagnetometerLinearLeastSquaresCalibrator>
    • onCalibrateEnd

      public void onCalibrateEnd(KnownFrameMagnetometerLinearLeastSquaresCalibrator calibrator)
      Specified by:
      onCalibrateEnd in interface KnownFrameMagnetometerCalibratorListener<KnownFrameMagnetometerLinearLeastSquaresCalibrator>
    • reset

      private void reset()
    • checkLocked

      private void checkLocked(KnownFrameMagnetometerLinearLeastSquaresCalibrator calibrator)
    • assertEstimatedResult

      private static void assertEstimatedResult(com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, KnownFrameMagnetometerLinearLeastSquaresCalibrator calibrator) throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • generateMeasurementsMultipleOrientationsWithSamePosition

      private static List<FrameBodyMagneticFluxDensity> generateMeasurementsMultipleOrientationsWithSamePosition(double[] hardIron, com.irurueta.algebra.Matrix softIron, int numberOfMeasurements, WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.statistics.GaussianRandomizer noiseRandomizer) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • generateMeasurementsMultiplePositionsWithSameOrientation

      private static List<FrameBodyMagneticFluxDensity> generateMeasurementsMultiplePositionsWithSameOrientation(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
    • generateMeasureAtOrientation

      private static FrameBodyMagneticFluxDensity generateMeasureAtOrientation(double[] hardIron, com.irurueta.algebra.Matrix softIron, WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.navigation.frames.CoordinateTransformation cnb) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • generateMeasureAtPosition

      private static FrameBodyMagneticFluxDensity 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 FrameBodyMagneticFluxDensity 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)