Class AccelerometerAndGyroscopeMeasurementsGeneratorTest

java.lang.Object
com.irurueta.navigation.inertial.calibration.generators.AccelerometerAndGyroscopeMeasurementsGeneratorTest
All Implemented Interfaces:
AccelerometerAndGyroscopeMeasurementsGeneratorListener

class AccelerometerAndGyroscopeMeasurementsGeneratorTest extends Object implements AccelerometerAndGyroscopeMeasurementsGeneratorListener
  • 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_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:
    • 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:
    • 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
    • reset

      private int reset
    • gyroscopeMeasurements

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

      private final List<StandardDeviationBodyKinematics> accelerometerMeasurements
  • Constructor Details

    • AccelerometerAndGyroscopeMeasurementsGeneratorTest

      AccelerometerAndGyroscopeMeasurementsGeneratorTest()
  • 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, 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
      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, 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
      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, 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
      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, 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
      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, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.geometry.InvalidRotationMatrixException
      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, com.irurueta.geometry.RotationException
      Throws:
      com.irurueta.algebra.WrongSizeException
      com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException
      com.irurueta.navigation.LockedException
      com.irurueta.geometry.InvalidRotationMatrixException
      com.irurueta.geometry.RotationException
    • testProcessErrorWithExcessiveOverallNoise

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

      public void onInitializationStarted(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onInitializationStarted in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onInitializationCompleted

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

      Specified by:
      onError in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onStaticIntervalDetected

      public void onStaticIntervalDetected(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onStaticIntervalDetected in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onDynamicIntervalDetected

      public void onDynamicIntervalDetected(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onDynamicIntervalDetected in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onStaticIntervalSkipped

      public void onStaticIntervalSkipped(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onStaticIntervalSkipped in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onDynamicIntervalSkipped

      public void onDynamicIntervalSkipped(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onDynamicIntervalSkipped in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onGeneratedAccelerometerMeasurement

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

      public void onGeneratedGyroscopeMeasurement(AccelerometerAndGyroscopeMeasurementsGenerator generator, BodyKinematicsSequence<StandardDeviationTimedBodyKinematics> measurement)
      Specified by:
      onGeneratedGyroscopeMeasurement in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • onReset

      public void onReset(AccelerometerAndGyroscopeMeasurementsGenerator generator)
      Specified by:
      onReset in interface AccelerometerAndGyroscopeMeasurementsGeneratorListener
    • reset

      private void reset()
    • checkLocked

      private void checkLocked(AccelerometerAndGyroscopeMeasurementsGenerator generator)
    • 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(AccelerometerAndGyroscopeMeasurementsGenerator generator, int numSamples, BodyKinematics trueKinematics, IMUErrors errors, int startSample) throws com.irurueta.navigation.LockedException
      Throws:
      com.irurueta.navigation.LockedException
    • generateDynamicSamples

      private static BodyKinematicsSequence<StandardDeviationTimedBodyKinematics> generateDynamicSamples(AccelerometerAndGyroscopeMeasurementsGenerator generator, int numSamples, BodyKinematics trueKinematics, com.irurueta.statistics.UniformRandomizer randomizer, com.irurueta.navigation.frames.ECEFFrame ecefFrame, com.irurueta.navigation.frames.NEDFrame nedFrame, IMUErrors errors, 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)