Class BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

All Implemented Interfaces:
com.irurueta.navigation.inertial.calibration.AccelerometerNoiseRootPsdSource, com.irurueta.navigation.inertial.calibration.GyroscopeNoiseRootPsdSource

public class BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer extends AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
Optimizes the threshold factor for interval detection of accelerometer and gyroscope data based on results of calibration. Only accelerometer calibrators based on unknown orientation are supported (in other terms, calibrators must be AccelerometerNonLinearCalibrator and must support AccelerometerCalibratorMeasurementType.STANDARD_DEVIATION_BODY_KINEMATICS). Only gyroscope calibrators based on unknown orientation are supported (in other terms, calibrators must be GyroscopeNonLinearCalibrator and must support GyroscopeCalibratorMeasurementOrSequenceType.BODY_KINEMATICS_SEQUENCE). This implementation uses a BracketedSingleOptimizer to find the threshold factor value that minimizes Mean Square Error (MSE) for calibration parameters.
  • Field Details

    • mseOptimizer

      private com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer
      A bracketed single optimizer to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.
    • optimizerListener

      private com.irurueta.numerical.SingleDimensionFunctionEvaluatorListener optimizerListener
      Listener for optimizer.
    • iterationCompletedListener

      private com.irurueta.numerical.optimization.OnIterationCompletedListener iterationCompletedListener
      Iteration listener for BracketedSingleOptimizer.
  • Constructor Details

    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer()
      Constructor.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource)
      Constructor.
      Parameters:
      dataSource - instance in charge of retrieving data for this optimizer.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator)
      Constructor.
      Parameters:
      accelerometerCalibrator - an accelerometer calibrator to be used to optimize its Mean Square Error (MSE).
      gyroscopeCalibrator - a gyroscope calibrator to be used to optimize its Mean Square Error (MSE).
      Throws:
      IllegalArgumentException - if accelerometer calibrator does not use StandardDeviationBodyKinematics measurements or if gyroscope calibrator does not use BodyKinematicsSequence sequences of StandardDeviationTimedBodyKinematics.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator)
      Constructor.
      Parameters:
      dataSource - instance in charge of retrieving data for this optimizer.
      accelerometerCalibrator - an accelerometer calibrator to be used to optimize its Mean Square Error (MSE).
      gyroscopeCalibrator - a gyroscope calibrator to be used to optimize its Mean Square Error (MSE).
      Throws:
      IllegalArgumentException - if accelerometer calibrator does not use StandardDeviationBodyKinematics measurements or if gyroscope calibrator does not use BodyKinematicsSequence sequences of StandardDeviationTimedBodyKinematics.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer)
      Constructor.
      Parameters:
      mseOptimizer - optimizer to find the threshold factor value that minimizes MSE for calibration parameters.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer)
      Constructor.
      Parameters:
      dataSource - instance in charge of retrieving data for this optimizer.
      mseOptimizer - optimizer to find the threshold value that minimizes MSE for calibration parameters.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator, com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer)
      Constructor.
      Parameters:
      accelerometerCalibrator - an accelerometer calibrator to be used to optimize its Mean Square Error (MSE).
      gyroscopeCalibrator - a gyroscope calibrator to be used to optimize its Mean Square Error (MSE).
      mseOptimizer - optimizer to find the threshold value that minimizes MSE for calibration parameters.
      Throws:
      IllegalArgumentException - if accelerometer calibrator does not use StandardDeviationBodyKinematics measurements or if gyroscope calibrator does not use BodyKinematicsSequence sequences of StandardDeviationTimedBodyKinematics.
    • BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer

      public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator, com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer)
      Constructor.
      Parameters:
      dataSource - instance in charge of retrieving data for this optimizer.
      accelerometerCalibrator - an accelerometer calibrator to be used to optimize its Mean Square Error (MSE).
      gyroscopeCalibrator - a gyroscope calibrator to be used to optimize its Mean Square Error (MSE).
      mseOptimizer - optimizer to find the threshold value that minimizes MSE for calibration parameters.
      Throws:
      IllegalArgumentException - if accelerometer calibrator does not use StandardDeviationBodyKinematics measurements or if gyroscope calibrator does not use BodyKinematicsSequence sequences of StandardDeviationTimedBodyKinematics.
  • Method Details

    • getMseOptimizer

      public com.irurueta.numerical.optimization.BracketedSingleOptimizer getMseOptimizer()
      Gets the bracketed single optimizer used to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.
      Returns:
      optimizer to find the threshold factor value that minimizes the MSE for calibration parameters.
    • setMseOptimizer

      public void setMseOptimizer(com.irurueta.numerical.optimization.BracketedSingleOptimizer optimizer) throws com.irurueta.navigation.LockedException
      Sets the bracketed single optimizer used to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.
      Parameters:
      optimizer - optimizer to find the threshold factor value that minimizes the MSE for calibration parameters.
      Throws:
      com.irurueta.navigation.LockedException - if optimizer is already running.
    • isReady

      public boolean isReady()
      Indicates whether this optimizer is ready to start optimization.
      Overrides:
      isReady in class AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
      Returns:
      true if this optimizer is ready, false otherwise.
    • optimize

      public double optimize() throws com.irurueta.navigation.NotReadyException, com.irurueta.navigation.LockedException, IntervalDetectorThresholdFactorOptimizerException
      Optimizes the threshold factor for a static interval detector or measurement generator to minimize MSE (Minimum Squared Error) of estimated calibration parameters.
      Specified by:
      optimize in class IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.calibration.TimedBodyKinematics,AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource>
      Returns:
      optimized threshold factor.
      Throws:
      com.irurueta.navigation.NotReadyException - if this optimizer is not ready to start optimization.
      com.irurueta.navigation.LockedException - if optimizer is already running.
      IntervalDetectorThresholdFactorOptimizerException - if optimization fails for some reason.
    • initializeOptimizerListeners

      private void initializeOptimizerListeners()
      Initializes optimizer listeners.