Class BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
java.lang.Object
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.calibration.TimedBodyKinematics,AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource>
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.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 Summary
FieldsModifier and TypeFieldDescriptionprivate com.irurueta.numerical.optimization.OnIterationCompletedListener
Iteration listener forBracketedSingleOptimizer
.private com.irurueta.numerical.optimization.BracketedSingleOptimizer
A bracketed single optimizer to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.private com.irurueta.numerical.SingleDimensionFunctionEvaluatorListener
Listener for optimizer.Fields inherited from class com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
DEFAULT_MAX_THRESHOLD_FACTOR, DEFAULT_MIN_THRESHOLD_FACTOR, maxThresholdFactor, minThresholdFactor
Fields inherited from class com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.IntervalDetectorThresholdFactorOptimizer
dataSource, DEFAULT_PROGRESS_DELTA, listener, MAX_PROGRESS_DELTA, MIN_PROGRESS_DELTA, minMse, optimalThresholdFactor, previousProgress, progress, progressDelta, running
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator) Constructor.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator, com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer) Constructor.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource) Constructor.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator) Constructor.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.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer) Constructor.BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
(com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizer) Constructor. -
Method Summary
Modifier and TypeMethodDescriptioncom.irurueta.numerical.optimization.BracketedSingleOptimizer
Gets the bracketed single optimizer used to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.private void
Initializes optimizer listeners.boolean
isReady()
Indicates whether this optimizer is ready to start optimization.double
optimize()
Optimizes the threshold factor for a static interval detector or measurement generator to minimize MSE (Minimum Squared Error) of estimated calibration parameters.void
setMseOptimizer
(com.irurueta.numerical.optimization.BracketedSingleOptimizer optimizer) Sets the bracketed single optimizer used to find the threshold factor value that minimizes the Mean Square Error (MSE) for calibration parameters.Methods inherited from class com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.AccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
evaluateForThresholdFactor, getAccelerometerBaseNoiseLevel, getAccelerometerBaseNoiseLevelAsMeasurement, getAccelerometerBaseNoiseLevelAsMeasurement, getAccelerometerBaseNoiseLevelPsd, getAccelerometerBaseNoiseLevelRootPsd, getAccelerometerCalibrator, getAccelerometerQualityScoreMapper, getBaseNoiseLevelAbsoluteThreshold, getBaseNoiseLevelAbsoluteThresholdAsMeasurement, getBaseNoiseLevelAbsoluteThresholdAsMeasurement, getEstimatedAccelerometerBiases, getEstimatedAccelerometerBiasFxVariance, getEstimatedAccelerometerBiasFyVariance, getEstimatedAccelerometerBiasFzVariance, getEstimatedAccelerometerBiasStandardDeviationNorm, getEstimatedAccelerometerMa, getEstimatedGyroscopeBiases, getEstimatedGyroscopeBiasStandardDeviationNorm, getEstimatedGyroscopeBiasXVariance, getEstimatedGyroscopeBiasYVariance, getEstimatedGyroscopeBiasZVariance, getEstimatedGyroscopeGg, getEstimatedGyroscopeMg, getGyroscopeBaseNoiseLevelPsd, getGyroscopeBaseNoiseLevelRootPsd, getGyroscopeCalibrator, getGyroscopeQualityScoreMapper, getInitialStaticSamples, getInstantaneousNoiseLevelFactor, getMaxDynamicSamples, getMaxThresholdFactor, getMinStaticSamples, getMinThresholdFactor, getMseRule, getThreshold, getThresholdAsMeasurement, getThresholdAsMeasurement, getTimeInterval, getTimeIntervalAsTime, getTimeIntervalAsTime, getWindowSize, setAccelerometerCalibrator, setAccelerometerQualityScoreMapper, setBaseNoiseLevelAbsoluteThreshold, setBaseNoiseLevelAbsoluteThreshold, setGyroscopeCalibrator, setGyroscopeQualityScoreMapper, setInitialStaticSamples, setInstantaneousNoiseLevelFactor, setMaxDynamicSamples, setMinStaticSamples, setMseRule, setThresholdFactorRange, setTimeInterval, setTimeInterval, setWindowSize
Methods inherited from class com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.IntervalDetectorThresholdFactorOptimizer
checkAndNotifyProgress, getDataSource, getListener, getMinMse, getOptimalThresholdFactor, getProgressDelta, initProgress, isRunning, setDataSource, setListener, setProgressDelta
-
Field Details
-
mseOptimizer
private com.irurueta.numerical.optimization.BracketedSingleOptimizer mseOptimizerA 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 optimizerListenerListener for optimizer. -
iterationCompletedListener
private com.irurueta.numerical.optimization.OnIterationCompletedListener iterationCompletedListenerIteration listener forBracketedSingleOptimizer
.
-
-
Constructor Details
-
BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
public BracketedAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer()Constructor. -
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.
-
-
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 classAccelerometerAndGyroscopeIntervalDetectorThresholdFactorOptimizer
- Returns:
- true if this optimizer is ready, false otherwise.
-
optimize
public double optimize() throws com.irurueta.navigation.NotReadyException, com.irurueta.navigation.LockedException, IntervalDetectorThresholdFactorOptimizerExceptionOptimizes 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 classIntervalDetectorThresholdFactorOptimizer<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.
-