Class ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizerTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizerTest
All Implemented Interfaces:
IntervalDetectorThresholdFactorOptimizerListener<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>

class ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizerTest extends Object implements IntervalDetectorThresholdFactorOptimizerListener<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
  • Field Details

    • TIME_INTERVAL_SECONDS

      private static final double TIME_INTERVAL_SECONDS
      See Also:
    • MICRO_G_TO_METERS_PER_SECOND_SQUARED

      private static final double MICRO_G_TO_METERS_PER_SECOND_SQUARED
      See Also:
    • DEG_TO_RAD

      private static final double DEG_TO_RAD
      See Also:
    • 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_MAGNETOMETER_NOISE_STD

      private static final double SMALL_MAGNETOMETER_NOISE_STD
      See Also:
    • MAGNETOMETER_NOISE_STD

      private static final double MAGNETOMETER_NOISE_STD
      See Also:
    • MIN_DELTA_POS_METERS

      private static final double MIN_DELTA_POS_METERS
      See Also:
    • MAX_DELTA_POS_METERS

      private static final double MAX_DELTA_POS_METERS
      See Also:
    • MIN_DELTA_ANGLE_DEGREES

      private static final double MIN_DELTA_ANGLE_DEGREES
      See Also:
    • MAX_DELTA_ANGLE_DEGREES

      private static final double MAX_DELTA_ANGLE_DEGREES
      See Also:
    • TIMES

      private static final int TIMES
      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:
    • 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
    • bodyKinematicsAndMagneticFluxDensities

      private final List<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity> bodyKinematicsAndMagneticFluxDensities
    • dataSource

    • generatorListener

      private final com.irurueta.navigation.inertial.calibration.generators.MagnetometerMeasurementsGeneratorListener generatorListener
    • generatorMeasurements

      private final List<StandardDeviationBodyMagneticFluxDensity> generatorMeasurements
    • start

      private int start
    • end

      private int end
    • progress

      private float progress
  • Constructor Details

    • ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizerTest

      ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizerTest()
  • Method Details

    • testConstructor1

      @Test void testConstructor1()
    • testConstructor2

      @Test void testConstructor2()
    • testConstructor3

      @Test void testConstructor3()
    • testConstructor4

      @Test void testConstructor4()
    • testGetSetThresholdFactorStep

      @Test void testGetSetThresholdFactorStep() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetCalibrator

      @Test void testGetSetCalibrator() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetQualityScoreMapper

      @Test void testGetSetQualityScoreMapper() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetThresholdFactorRange

      @Test void testGetSetThresholdFactorRange() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetDataSource

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

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

      @Test void testGetSetTimeInterval() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetTimeIntervalAsTime

      @Test void testGetSetTimeIntervalAsTime() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMinStaticSamples

      @Test void testGetSetMinStaticSamples() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMaxDynamicSamples

      @Test void testGetSetMaxDynamicSamples() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetWindowSize

      @Test void testGetSetWindowSize() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInitialStaticSamples

      @Test void testGetSetInitialStaticSamples() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetInstantaneousNoiseLevelFactor

      @Test void testGetSetInstantaneousNoiseLevelFactor() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetBaseNoiseLevelAbsoluteThreshold

      @Test void testGetSetBaseNoiseLevelAbsoluteThreshold() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetBaseNoiseLevelAbsoluteThresholdAsMeasurement

      @Test void testGetSetBaseNoiseLevelAbsoluteThresholdAsMeasurement() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetListener

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

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

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

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

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

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

      public void onOptimizeStart(IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource> optimizer)
      Specified by:
      onOptimizeStart in interface IntervalDetectorThresholdFactorOptimizerListener<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • onOptimizeEnd

      public void onOptimizeEnd(IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource> optimizer)
      Specified by:
      onOptimizeEnd in interface IntervalDetectorThresholdFactorOptimizerListener<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • onOptimizeProgressChange

      public void onOptimizeProgressChange(IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource> optimizer, float progress)
      Specified by:
      onOptimizeProgressChange in interface IntervalDetectorThresholdFactorOptimizerListener<com.irurueta.navigation.inertial.BodyKinematicsAndMagneticFluxDensity,MagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • checkLocked

      private static void checkLocked(ExhaustiveMagnetometerIntervalDetectorThresholdFactorOptimizer optimizer)
    • reset

      private void reset()
    • generateBodyKinematicsAndMagneticFluxDensity

      private boolean generateBodyKinematicsAndMagneticFluxDensity(boolean changePosition, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, double accelNoiseRootPSD, double gyroNoiseRootPSD, int numMeasurements, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, double magnetometerNoiseStd) throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, IOException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      IOException
    • generateB

      private static com.irurueta.navigation.inertial.BodyMagneticFluxDensity generateB(double[] hardIron, com.irurueta.algebra.Matrix softIron, com.irurueta.navigation.inertial.wmm.WMMEarthMagneticFluxDensityEstimator wmmEstimator, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, Date timestamp, com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation cnb)
    • generateBodyC

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

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

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

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

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

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

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

      private static com.irurueta.algebra.Matrix generateBa()
    • generateBg

      private static com.irurueta.algebra.Matrix generateBg()
    • generateMaCommonAxis

      private static com.irurueta.algebra.Matrix generateMaCommonAxis() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • generateMg

      private static com.irurueta.algebra.Matrix generateMg() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • generateGg

      private static com.irurueta.algebra.Matrix generateGg() throws com.irurueta.algebra.WrongSizeException
      Throws:
      com.irurueta.algebra.WrongSizeException
    • getAccelNoiseRootPSD

      private static double getAccelNoiseRootPSD()
    • getGyroNoiseRootPSD

      private static double getGyroNoiseRootPSD()
    • generateStaticSamples

      private void generateStaticSamples(com.irurueta.navigation.inertial.calibration.generators.MagnetometerMeasurementsGenerator generator, int numSamples, com.irurueta.navigation.inertial.BodyKinematics trueKinematics, IMUErrors errors, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, com.irurueta.navigation.inertial.wmm.WMMEarthMagneticFluxDensityEstimator wmmEstimator, Random random, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer) throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • generateDynamicSamples

      private void generateDynamicSamples(com.irurueta.navigation.inertial.calibration.generators.MagnetometerMeasurementsGenerator generator, int numSamples, com.irurueta.navigation.inertial.BodyKinematics trueKinematics, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.navigation.frames.ECEFFrame ecefFrame, com.irurueta.navigation.frames.NEDFrame nedFrame, IMUErrors errors, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, com.irurueta.navigation.inertial.wmm.WMMEarthMagneticFluxDensityEstimator wmmEstimator, Random random, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, boolean changePosition) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException