Class BracketedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.BracketedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerTest
All Implemented Interfaces:
IntervalDetectorThresholdFactorOptimizerListener<TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>

  • Field Details

  • Constructor Details

    • BracketedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerTest

      BracketedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerTest()
  • Method Details

    • testConstructor1

      @Test void testConstructor1()
    • testConstructor2

      @Test void testConstructor2()
    • testConstructor3

      @Test void testConstructor3()
    • testConstructor4

      @Test void testConstructor4()
    • testConstructor5

      @Test void testConstructor5()
    • testConstructor6

      @Test void testConstructor6()
    • testConstructor7

      @Test void testConstructor7()
    • testConstructor8

      @Test void testConstructor8()
    • testGetSetMseOptimizer

      @Test void testGetSetMseOptimizer() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetAccelerometerCalibrator

      @Test void testGetSetAccelerometerCalibrator() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetGyroscopeCalibrator

      @Test void testGetSetGyroscopeCalibrator() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMagnetometerCalibrator

      @Test void testGetSetMagnetometerCalibrator() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetAccelerometerQualityScoreMapper

      @Test void testGetSetAccelerometerQualityScoreMapper() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetGyroscopeQualityScoreMapper

      @Test void testGetSetGyroscopeQualityScoreMapper() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMagnetometerQualityScoreMapper

      @Test void testGetSetMagnetometerQualityScoreMapper() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetMseRule

      @Test void testGetSetMseRule() 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
    • testOptimizeMaCommonAxisWithNoise

      @Test void testOptimizeMaCommonAxisWithNoise() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, IntervalDetectorThresholdFactorOptimizerException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      IntervalDetectorThresholdFactorOptimizerException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeGeneralNoGDependentCrossBiasesWithSmallNoise

      @Disabled("too slow") @Test void testOptimizeGeneralNoGDependentCrossBiasesWithSmallNoise() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeCommonAxisNoGDependentCrossBiasesWithSmallNoise

      @Test void testOptimizeCommonAxisNoGDependentCrossBiasesWithSmallNoise() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeGeneralGDependentCrossBiasesWithSmallNoise

      @Test void testOptimizeGeneralGDependentCrossBiasesWithSmallNoise() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, IntervalDetectorThresholdFactorOptimizerException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      IntervalDetectorThresholdFactorOptimizerException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeCommonAxisGDependentCrossBiasesWithSmallNoise

      @Disabled("too slow") @Test void testOptimizeCommonAxisGDependentCrossBiasesWithSmallNoise() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeCommonAxisNoGDependentCrossBiasesWithSmallNoiseRotationAndPositionChange

      @Disabled("too slow") @Test void testOptimizeCommonAxisNoGDependentCrossBiasesWithSmallNoiseRotationAndPositionChange() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testOptimizeRobustCalibrators

      @Test void testOptimizeRobustCalibrators() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, IntervalDetectorThresholdFactorOptimizerException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.navigation.NotReadyException
      IntervalDetectorThresholdFactorOptimizerException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • onOptimizeStart

      Specified by:
      onOptimizeStart in interface IntervalDetectorThresholdFactorOptimizerListener<TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • onOptimizeEnd

      Specified by:
      onOptimizeEnd in interface IntervalDetectorThresholdFactorOptimizerListener<TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • onOptimizeProgressChange

      Specified by:
      onOptimizeProgressChange in interface IntervalDetectorThresholdFactorOptimizerListener<TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
    • checkLocked

    • generateTimedBodyKinematicsAndMagneticFluxDensity

      private void generateTimedBodyKinematicsAndMagneticFluxDensity(com.irurueta.navigation.frames.NEDFrame nedFrame, com.irurueta.navigation.frames.ECEFFrame ecefFrame, boolean changePosition, com.irurueta.algebra.Matrix ma, double accelNoiseRootPSD, double gyroNoiseRootPSD, int numSequences, int numMeasurements, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, double magnetometerNoiseStd) throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.geometry.InvalidRotationMatrixException, IOException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • 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)
    • 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)
    • generateFrame

      private static com.irurueta.navigation.frames.NEDFrame generateFrame() throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
    • 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
    • generateMaGeneral

      private static com.irurueta.algebra.Matrix generateMaGeneral() 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(int numSamples, com.irurueta.navigation.inertial.BodyKinematics trueKinematics, IMUErrors errors, Random random, int startSample, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, com.irurueta.navigation.inertial.wmm.WMMEarthMagneticFluxDensityEstimator wmmEstimator, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer)
    • generateDynamicSamples

      private void generateDynamicSamples(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, Random random, int startSample, boolean changePosition, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, com.irurueta.navigation.inertial.wmm.WMMEarthMagneticFluxDensityEstimator wmmEstimator, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.geometry.InvalidRotationMatrixException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.geometry.InvalidRotationMatrixException
      com.irurueta.geometry.RotationException
    • interpolate

      private static double interpolate(double value, double progress)
    • reset

      private void reset()