Class AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.generators.AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorTest
All Implemented Interfaces:
AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener

class AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorTest extends Object implements AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
  • 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

      private static final double MIN_HEIGHT
      See Also:
    • MAX_HEIGHT

      private static final double MAX_HEIGHT
      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:
    • VERY_LARGE_ABSOLUTE_ERROR

      private static final double VERY_LARGE_ABSOLUTE_ERROR
      See Also:
    • LARGE_ABSOLUTE_ERROR

      private static final double LARGE_ABSOLUTE_ERROR
      See Also:
    • SMALL_ABSOLUTE_ERROR

      private static final double SMALL_ABSOLUTE_ERROR
      See Also:
    • SMALL_ROOT_PSD

      private static final double SMALL_ROOT_PSD
      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
    • initializationStarted

      private int initializationStarted
    • initializationCompleted

      private int initializationCompleted
    • error

      private int error
    • staticIntervalDetected

      private int staticIntervalDetected
    • dynamicIntervalDetected

      private int dynamicIntervalDetected
    • staticIntervalSkipped

      private int staticIntervalSkipped
    • dynamicIntervalSkipped

      private int dynamicIntervalSkipped
    • generatedAccelerometerMeasurement

      private int generatedAccelerometerMeasurement
    • generatedGyroscopeMeasurement

      private int generatedGyroscopeMeasurement
    • generatedMagnetometerMeasurement

      private int generatedMagnetometerMeasurement
    • reset

      private int reset
    • gyroscopeMeasurements

      private final List<BodyKinematicsSequence<StandardDeviationTimedBodyKinematics>> gyroscopeMeasurements
    • accelerometerMeasurements

      private final List<StandardDeviationBodyKinematics> accelerometerMeasurements
    • magnetometerMeasurements

      private final List<StandardDeviationBodyMagneticFluxDensity> magnetometerMeasurements
  • Constructor Details

    • AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorTest

      AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorTest()
  • Method Details

    • testConstructor1

      @Test void testConstructor1()
    • testConstructor2

      @Test void testConstructor2()
    • testGetSetTimeInterval1

      @Test void testGetSetTimeInterval1() throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • testGetSetTimeInterval2

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

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

      @Test void testGetSetThresholdFactor() 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
    • testProcessCalibrateAndResetWithNoiseMaCommonAxisAndNoGDependentCrossBiases

      @Test void testProcessCalibrateAndResetWithNoiseMaCommonAxisAndNoGDependentCrossBiases() 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
    • testProcessCalibrateAndResetSmallNoiseMaGeneralAndNoGDependentCrossBiases

      @Test void testProcessCalibrateAndResetSmallNoiseMaGeneralAndNoGDependentCrossBiases() 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
    • testProcessCalibrateAndResetSmallNoiseMaCommonAxisAndNoGDependentCrossBiases

      @Test void testProcessCalibrateAndResetSmallNoiseMaCommonAxisAndNoGDependentCrossBiases() 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
    • testProcessCalibrateAndResetSmallNoiseMaGeneralAndWithGDependentCrossBiases

      @Test void testProcessCalibrateAndResetSmallNoiseMaGeneralAndWithGDependentCrossBiases() 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
    • testProcessSkipStaticInterval

      @Test void testProcessSkipStaticInterval() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, 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.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testProcessSkipDynamicInterval

      @Test void testProcessSkipDynamicInterval() throws com.irurueta.algebra.WrongSizeException, com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, 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.geometry.InvalidRotationMatrixException
      IOException
      com.irurueta.geometry.RotationException
    • testProcessErrorWithExcessiveOverallNoise

      @Test void testProcessErrorWithExcessiveOverallNoise() 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
    • testProcessCalibrateAndResetSmallNoiseWithRotationAndPositionChangeMaCommonAxisAndNoGDependentCrossBiases

      @Test void testProcessCalibrateAndResetSmallNoiseWithRotationAndPositionChangeMaCommonAxisAndNoGDependentCrossBiases() 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
    • onInitializationStarted

      public void onInitializationStarted(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
      Specified by:
      onInitializationStarted in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onInitializationCompleted

      public void onInitializationCompleted(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator, double accelerometerBaseNoiseLevel)
      Specified by:
      onInitializationCompleted in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onError

      Specified by:
      onError in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onStaticIntervalDetected

      public void onStaticIntervalDetected(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
      Specified by:
      onStaticIntervalDetected in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onDynamicIntervalDetected

      public void onDynamicIntervalDetected(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
      Specified by:
      onDynamicIntervalDetected in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onStaticIntervalSkipped

      public void onStaticIntervalSkipped(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
      Specified by:
      onStaticIntervalSkipped in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onDynamicIntervalSkipped

      public void onDynamicIntervalSkipped(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
      Specified by:
      onDynamicIntervalSkipped in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onGeneratedAccelerometerMeasurement

      public void onGeneratedAccelerometerMeasurement(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator, StandardDeviationBodyKinematics measurement)
      Specified by:
      onGeneratedAccelerometerMeasurement in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onGeneratedGyroscopeMeasurement

      Specified by:
      onGeneratedGyroscopeMeasurement in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onGeneratedMagnetometerMeasurement

      public void onGeneratedMagnetometerMeasurement(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator, StandardDeviationBodyMagneticFluxDensity measurement)
      Specified by:
      onGeneratedMagnetometerMeasurement in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • onReset

      Specified by:
      onReset in interface AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorListener
    • reset

      private void reset()
    • checkLocked

      private void checkLocked(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator)
    • generateB

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

      private static BodyMagneticFluxDensity generateMeasuredMagneticFluxDensity(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()
    • 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
    • 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 static void generateStaticSamples(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator, int numSamples, BodyKinematics trueKinematics, IMUErrors errors, com.irurueta.algebra.Matrix hardIron, com.irurueta.algebra.Matrix mm, WMMEarthMagneticFluxDensityEstimator wmmEstimator, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, int startSample) throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • generateDynamicSamples

      private static BodyKinematicsSequence<StandardDeviationTimedBodyKinematics> generateDynamicSamples(AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generator, int numSamples, 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, WMMEarthMagneticFluxDensityEstimator wmmEstimator, Date timestamp, com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation cnb, com.irurueta.statistics.GaussianRandomizer noiseRandomizer, int startSample, boolean changePosition) throws com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException, com.irurueta.navigation.LockedException, com.irurueta.geometry.InvalidRotationMatrixException, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.geometry.InvalidRotationMatrixException
      com.irurueta.geometry.RotationException
    • interpolate

      private static double interpolate(double value, double progress)