Class AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer
java.lang.Object
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.calibration.TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer
- All Implemented Interfaces:
com.irurueta.navigation.inertial.calibration.AccelerometerNoiseRootPsdSource,com.irurueta.navigation.inertial.calibration.GyroscopeNoiseRootPsdSource
- Direct Known Subclasses:
BracketedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer,ExhaustiveAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer
public abstract class AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer
extends IntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.calibration.TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource>
implements com.irurueta.navigation.inertial.calibration.AccelerometerNoiseRootPsdSource, com.irurueta.navigation.inertial.calibration.GyroscopeNoiseRootPsdSource
Optimizes the threshold factor for interval detection of accelerometer and gyroscope
data based on results of calibration.
Implementations of this class will attempt to find the best threshold factor
between the provided range of values.
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).
Only magnetometer calibrators based on unknown orientation are supported, in other terms,
calibrators must be MagnetometerNonLinearCalibrator and must support
MagnetometerCalibratorMeasurementType.STANDARD_DEVIATION_BODY_MAGNETIC_FLUX_DENSITY.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibratorAccelerometer calibrator.private List<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> Generated measurements to be used for accelerometer calibration.private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> Mapper to convertStandardDeviationBodyKinematicsmeasurements into quality scores.private doubleEstimated norm of gyroscope noise root PSD (Power Spectral Density) expressed as (rad * s^-0.5).private doubleAccelerometer base noise level that has been detected during initialization of the best solution that has been found expressed in meters per squared second (m/s^2).static final doubleDefault maximum threshold factor.static final doubleDefault minimum threshold factor.private double[]Estimated accelerometer biases for each IMU axis expressed in meter per squared second (m/s^2).private com.irurueta.algebra.MatrixEstimated covariance matrix for estimated accelerometer parameters.private com.irurueta.algebra.MatrixEstimated accelerometer scale factors and cross-coupling errors.private double[]Estimated angular rate biases for each IMU axis expressed in radians per second (rad/s).private com.irurueta.algebra.MatrixEstimated covariance matrix for estimated gyroscope parameters.private com.irurueta.algebra.MatrixEstimated G-dependent cross-biases introduced on the gyroscope by the specific forces sensed by the accelerometer.private com.irurueta.algebra.MatrixEstimated gyroscope scale factors and cross-coupling errors.private com.irurueta.algebra.MatrixEstimated covariance matrix for estimated magnetometer parameters.private double[]Estimated magnetometer hard-iron biases for each magnetometer axis expressed in Teslas (T).private com.irurueta.algebra.MatrixEstimated magnetometer soft-iron matrix containing scale factors and cross-coupling errors.private com.irurueta.navigation.inertial.calibration.generators.AccelerometerGyroscopeAndMagnetometerMeasurementsGeneratorA measurement generator for accelerometer, gyroscope and magnetometer calibrators.private com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibratorGyroscope calibrator.private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> Mapper to convertBodyKinematicsSequencesequences ofStandardDeviationTimedBodyKinematicsinto quality scores.private List<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> Generated sequences to be used for gyroscope calibration.private com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibratorMagnetometer calibrator.private List<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> Generated measurements to be used for magnetometer calibration.private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> Mapper to convertStandardDeviationBodyMagneticFluxDensitymeasurements into quality scores.protected doubleMaximum threshold factor.protected doubleMinimum threshold factor.Rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value.private doubleThreshold to determine static/dynamic period changes expressed in meters per squared second (m/s^2) for the best calibration solution that has been found.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
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator, com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibrator magnetometerCalibrator) Constructor.protectedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer(AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource dataSource) Constructor.protectedAccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer(AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource dataSource, com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator, com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator, com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibrator magnetometerCalibrator) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprivate com.irurueta.units.AccelerationcreateMeasurement(double value, com.irurueta.units.AccelerationUnit unit) Creates an acceleration instance using the provided value and unit.protected doubleevaluateForThresholdFactor(double thresholdFactor) Evaluates calibration Mean Square Error (MSE) for the provided threshold factor.doubleGets accelerometer base noise level that has been detected during initialization of the best solution that has been found expressed in meters per squared second (m/s^2).com.irurueta.units.AccelerationGets accelerometer base noise level that has been detected during initialization of the best solution that has been found.voidgetAccelerometerBaseNoiseLevelAsMeasurement(com.irurueta.units.Acceleration result) Gets accelerometer base noise level that has been detected during initialization of the best solution that has been found.doubleGets accelerometer base noise level PSD (Power Spectral Density) expressed in (m^2 * s^-3).doubleGets accelerometer base noise level root PSD (Power Spectral Density) expressed in (m * s^-1.5).com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibratorGets provided accelerometer calibrator to be used to optimize its Mean Square Error (MSE).QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> Gets mapper to convertStandardDeviationBodyKinematicsaccelerometer measurements into quality scores.doubleGets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.com.irurueta.units.AccelerationGets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.voidgetBaseNoiseLevelAbsoluteThresholdAsMeasurement(com.irurueta.units.Acceleration result) Gets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.private com.irurueta.units.AccelerationUnitGets the default unit for acceleration, which is meters per squared second (m/s^2).double[]Gets the array containing x,y,z components of estimated accelerometer biases expressed in meters per squared second (m/s^2).Gets estimated x coordinate variance of accelerometer bias expressed in (m^2/s^4).Gets estimated y coordinate variance of accelerometer bias expressed in (m^2/s^4).Gets estimated z coordinate variance of accelerometer bias expressed in (m^2/s^4).Gets estimated standard deviation norm of accelerometer bias expressed in meters per squared second (m/s^2).com.irurueta.algebra.MatrixGets estimated accelerometer scale factors and cross-coupling errors.double[]Gets the array containing x,y,z components of estimated gyroscope biases expressed in radians per second (rad/s).Gets estimated standard deviation norm of gyroscope bias expressed in radians per second (rad/s).Gets estimated x coordinate variance of gyroscope bias expressed in (rad^2/s^2).Gets estimated y coordinate variance of gyroscope bias expressed in (rad^2/s^2).Gets estimated z coordinate variance of gyroscope bias expressed in (rad^2/s^2).com.irurueta.algebra.MatrixGets estimated G-dependent cross-biases introduced on the gyroscope by the specific forces sensed by the accelerometer.com.irurueta.algebra.MatrixGets estimated gyroscope scale factors and cross-coupling errors.double[]Gets the array containing x,y,z components of estimated magnetometer hard-iron biases expressed in Teslas (T).com.irurueta.algebra.MatrixGets estimated magnetometer soft-iron matrix containing scale factors and cross-coupling errors.doubleGets gyroscope base noise level PSD (Power Spectral Density) expressed in (rad^2/s).doubleGets gyroscope base noise level root PSD (Power Spectral Density) expressed in (rad * s^-0.5)com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibratorGets provided gyroscope calibrator to be used to optimize its Mean Square Error (MSE).QualityScoreMapper<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> Gets mapper to convertBodyKinematicsSequencegyroscope sequences ofStandardDeviationTimedBodyKinematicsinto quality scores.intGets number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to be processed initially while keeping the sensor static to find the base noise level when the device is static.doubleGets factor to determine that a sudden movement has occurred during initialization if instantaneous noise level exceeds accumulated noise level by this factor amount.com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibratorGets provided magnetometer calibrator to be used to optimize its Mean Square Error (MSE).QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> Gets mapper to convertStandardDeviationBodyMagneticFluxDensitymagnetometer measurements into quality scores.intGets maximum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()allowed in dynamic intervals.doubleGets the maximum threshold factor.intGets minimum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()required in a static interval to be taken into account.doubleGets the minimum threshold factor.Gets rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value.doubleGets the threshold to determine static/dynamic period changes expressed in meters per squared second (m/s^2) for the best calibration solution that has been found.com.irurueta.units.AccelerationGets the threshold to determine static/dynamic period changes for the best calibration solution that has been found.voidgetThresholdAsMeasurement(com.irurueta.units.Acceleration result) Get the threshold to determine static/dynamic period changes for the best calibration solution that has been found.doubleGets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()expressed in seconds (s).com.irurueta.units.TimeGets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().voidgetTimeIntervalAsTime(com.irurueta.units.Time result) Gets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().intGets length of number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to keep within the window being processed to determine instantaneous accelerometer noise level.private voidInitializes accelerometer, gyroscope and magnetometer measurement generator to convertTimedBodyKinematicsAndMagneticFluxDensitymeasurements after interval detection into measurements and sequences used for accelerometer, gyroscope and magnetometer calibration.booleanisReady()Indicates whether this optimizer is ready to start optimization.private voidkeepBestResult(double mse, double thresholdFactor) Keeps the best calibration solution found so far.voidsetAccelerometerCalibrator(com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibrator) Sets accelerometer calibrator to be used to optimize its Mean Square Error (MSE).voidsetAccelerometerQualityScoreMapper(QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> accelerometerQualityScoreMapper) Sets mapper to convertStandardDeviationBodyKinematicsaccelerometer measurements into quality scores.voidsetBaseNoiseLevelAbsoluteThreshold(double baseNoiseLevelAbsoluteThreshold) Sets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.voidsetBaseNoiseLevelAbsoluteThreshold(com.irurueta.units.Acceleration baseNoiseLevelAbsoluteThreshold) Sets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.voidsetGyroscopeCalibrator(com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibrator) Sets gyroscope calibrator to be used to optimize its Mean Square Error (MSE).voidsetGyroscopeQualityScoreMapper(QualityScoreMapper<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> gyroscopeQualityScoreMapper) Sets mapper to convertBodyKinematicsSequencegyroscope sequences ofStandardDeviationTimedBodyKinematicsinto quality scores.voidsetInitialStaticSamples(int initialStaticSamples) Sets number of input parameters provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to be processed initially while keeping the sensor static to find the base noise level when the device is static.voidsetInstantaneousNoiseLevelFactor(double instantaneousNoiseLevelFactor) Sets factor to determine that a sudden movement has occurred during initialization if instantaneous noise level exceeds accumulated noise level by this factor amount.voidsetMagnetometerCalibrator(com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibrator magnetometerCalibrator) Sets a magnetometer calibrator to be used to optimize its Mean Square Error.voidsetMagnetometerQualityScoreMapper(QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> magnetometerQualityScoreMapper) Sets mapper to convertStandardDeviationBodyMagneticFluxDensitymagnetometer measurements into quality scores.voidsetMaxDynamicSamples(int maxDynamicSamples) Sets maximum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()allowed in dynamic intervals.voidsetMinStaticSamples(int minStaticSamples) Sets minimum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()required in a static interval to be taken into account.voidSets rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value.voidsetThresholdFactorRange(double minThresholdFactor, double maxThresholdFactor) Sets a range of threshold factor values to get an optimized threshold factor value.voidsetTimeInterval(double timeInterval) Sets time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()expressed in seconds (s).voidsetTimeInterval(com.irurueta.units.Time timeInterval) Sets time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().voidsetWindowSize(int windowSize) Sets length of number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to keep within the window being processed to determine instantaneous noise level.Methods inherited from class com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor.IntervalDetectorThresholdFactorOptimizer
checkAndNotifyProgress, getDataSource, getListener, getMinMse, getOptimalThresholdFactor, getProgressDelta, initProgress, isRunning, optimize, setDataSource, setListener, setProgressDelta
-
Field Details
-
DEFAULT_MIN_THRESHOLD_FACTOR
public static final double DEFAULT_MIN_THRESHOLD_FACTORDefault minimum threshold factor.- See Also:
-
DEFAULT_MAX_THRESHOLD_FACTOR
public static final double DEFAULT_MAX_THRESHOLD_FACTORDefault maximum threshold factor.- See Also:
-
minThresholdFactor
protected double minThresholdFactorMinimum threshold factor. -
maxThresholdFactor
protected double maxThresholdFactorMaximum threshold factor. -
accelerometerCalibrator
private com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator accelerometerCalibratorAccelerometer calibrator. -
gyroscopeCalibrator
private com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator gyroscopeCalibratorGyroscope calibrator. -
magnetometerCalibrator
private com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibrator magnetometerCalibratorMagnetometer calibrator. -
generator
private com.irurueta.navigation.inertial.calibration.generators.AccelerometerGyroscopeAndMagnetometerMeasurementsGenerator generatorA measurement generator for accelerometer, gyroscope and magnetometer calibrators. -
accelerometerMeasurements
private List<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> accelerometerMeasurementsGenerated measurements to be used for accelerometer calibration. -
gyroscopeSequences
private List<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> gyroscopeSequencesGenerated sequences to be used for gyroscope calibration. -
magnetometerMeasurements
private List<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> magnetometerMeasurementsGenerated measurements to be used for magnetometer calibration. -
accelerometerQualityScoreMapper
private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> accelerometerQualityScoreMapperMapper to convertStandardDeviationBodyKinematicsmeasurements into quality scores. -
gyroscopeQualityScoreMapper
private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> gyroscopeQualityScoreMapperMapper to convertBodyKinematicsSequencesequences ofStandardDeviationTimedBodyKinematicsinto quality scores. -
magnetometerQualityScoreMapper
private QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> magnetometerQualityScoreMapperMapper to convertStandardDeviationBodyMagneticFluxDensitymeasurements into quality scores. -
mseRule
Rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value. -
angularSpeedNoiseRootPsd
private double angularSpeedNoiseRootPsdEstimated norm of gyroscope noise root PSD (Power Spectral Density) expressed as (rad * s^-0.5). -
baseNoiseLevel
private double baseNoiseLevelAccelerometer base noise level that has been detected during initialization of the best solution that has been found expressed in meters per squared second (m/s^2). This is equal to the standard deviation of the accelerometer measurements during the initialization phase. -
threshold
private double thresholdThreshold to determine static/dynamic period changes expressed in meters per squared second (m/s^2) for the best calibration solution that has been found. -
estimatedAccelerometerCovariance
private com.irurueta.algebra.Matrix estimatedAccelerometerCovarianceEstimated covariance matrix for estimated accelerometer parameters. -
estimatedAccelerometerMa
private com.irurueta.algebra.Matrix estimatedAccelerometerMaEstimated accelerometer scale factors and cross-coupling errors. This is the product of matrix Ta containing cross-coupling errors and Ka containing scaling factors. So that:Ma = [sx mxy mxz] = Ta*Ka [myx sy myz] [mzx mzy sz ]Where:Ka = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTa = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Ma = [sx mxy mxz] = Ta*Ka = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the accelerometer z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Ma matrix becomes upper diagonal:Ma = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less. -
estimatedAccelerometerBiases
private double[] estimatedAccelerometerBiasesEstimated accelerometer biases for each IMU axis expressed in meter per squared second (m/s^2). -
estimatedGyroscopeCovariance
private com.irurueta.algebra.Matrix estimatedGyroscopeCovarianceEstimated covariance matrix for estimated gyroscope parameters. -
estimatedGyroscopeBiases
private double[] estimatedGyroscopeBiasesEstimated angular rate biases for each IMU axis expressed in radians per second (rad/s). -
estimatedGyroscopeMg
private com.irurueta.algebra.Matrix estimatedGyroscopeMgEstimated gyroscope scale factors and cross-coupling errors. This is the product of matrix Tg containing cross-coupling errors and Kg containing scaling factors. So that:Mg = [sx mxy mxz] = Tg*Kg [myx sy myz] [mzx mzy sz ]Where:Kg = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTg = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Mg = [sx mxy mxz] = Tg*Kg = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the gyroscope z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Mg matrix becomes upper diagonal:Mg = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less. -
estimatedGyroscopeGg
private com.irurueta.algebra.Matrix estimatedGyroscopeGgEstimated G-dependent cross-biases introduced on the gyroscope by the specific forces sensed by the accelerometer. This instance allows any 3x3 matrix. -
estimatedMagnetometerCovariance
private com.irurueta.algebra.Matrix estimatedMagnetometerCovarianceEstimated covariance matrix for estimated magnetometer parameters. -
estimatedMagnetometerMm
private com.irurueta.algebra.Matrix estimatedMagnetometerMmEstimated magnetometer soft-iron matrix containing scale factors and cross-coupling errors. This is the product of matrix Tm containing cross-coupling errors and Km containing scaling factors. So that:Mm = [sx mxy mxz] = Tm*Km [myx sy myz] [mzx mzy sz ]Where:Km = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTm = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Mm = [sx mxy mxz] = Tm*Km = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the accelerometer z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Mm matrix becomes upper diagonal:Mm = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less. -
estimatedMagnetometerHardIron
private double[] estimatedMagnetometerHardIronEstimated magnetometer hard-iron biases for each magnetometer axis expressed in Teslas (T).
-
-
Constructor Details
-
AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer
protected AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizer()Constructor.
-
-
Method Details
-
getAccelerometerCalibrator
public com.irurueta.navigation.inertial.calibration.accelerometer.AccelerometerNonLinearCalibrator getAccelerometerCalibrator()Gets provided accelerometer calibrator to be used to optimize its Mean Square Error (MSE).- Returns:
- accelerometer calibrator to be used to optimize its MSE.
-
getGyroscopeCalibrator
public com.irurueta.navigation.inertial.calibration.gyroscope.GyroscopeNonLinearCalibrator getGyroscopeCalibrator()Gets provided gyroscope calibrator to be used to optimize its Mean Square Error (MSE).- Returns:
- gyroscope calibrator to be used to optimize its MSE.
-
getMagnetometerCalibrator
public com.irurueta.navigation.inertial.calibration.magnetometer.MagnetometerNonLinearCalibrator getMagnetometerCalibrator()Gets provided magnetometer calibrator to be used to optimize its Mean Square Error (MSE).- Returns:
- magnetometer calibrator to be used to optimize its MSE.
-
getAccelerometerQualityScoreMapper
public QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics> getAccelerometerQualityScoreMapper()Gets mapper to convertStandardDeviationBodyKinematicsaccelerometer measurements into quality scores.- Returns:
- mapper to convert accelerometer measurements into quality scores.
-
getGyroscopeQualityScoreMapper
public QualityScoreMapper<com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence<com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics>> getGyroscopeQualityScoreMapper()Gets mapper to convertBodyKinematicsSequencegyroscope sequences ofStandardDeviationTimedBodyKinematicsinto quality scores.- Returns:
- mapper to convert gyroscope sequences into quality scores.
-
getMagnetometerQualityScoreMapper
public QualityScoreMapper<com.irurueta.navigation.inertial.calibration.StandardDeviationBodyMagneticFluxDensity> getMagnetometerQualityScoreMapper()Gets mapper to convertStandardDeviationBodyMagneticFluxDensitymagnetometer measurements into quality scores.- Returns:
- mapper to convert magnetometer measurements into quality scores.
-
getMseRule
Gets rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value.- Returns:
- rule to convert accelerometer, gyroscope and magnetometer MSE values into a single global MSE value.
-
getMinThresholdFactor
public double getMinThresholdFactor()Gets the minimum threshold factor.- Returns:
- minimum threshold factor.
-
getMaxThresholdFactor
public double getMaxThresholdFactor()Gets the maximum threshold factor.- Returns:
- maximum threshold factor.
-
setThresholdFactorRange
public void setThresholdFactorRange(double minThresholdFactor, double maxThresholdFactor) throws com.irurueta.navigation.LockedException Sets a range of threshold factor values to get an optimized threshold factor value.- Parameters:
minThresholdFactor- minimum threshold.maxThresholdFactor- maximum threshold.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if either minimum or maximum values are negative, or if the minimum value is larger than the maximum one.
-
isReady
public boolean isReady()Indicates whether this optimizer is ready to start optimization.- Overrides:
isReadyin classIntervalDetectorThresholdFactorOptimizer<com.irurueta.navigation.inertial.calibration.TimedBodyKinematicsAndMagneticFluxDensity,AccelerometerGyroscopeAndMagnetometerIntervalDetectorThresholdFactorOptimizerDataSource> - Returns:
- true if this optimizer is ready, false otherwise.
-
getTimeInterval
public double getTimeInterval()Gets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()expressed in seconds (s).- Returns:
- time interval between input measurements.
-
setTimeInterval
public void setTimeInterval(double timeInterval) throws com.irurueta.navigation.LockedException Sets time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()expressed in seconds (s).- Parameters:
timeInterval- time interval between input measurements.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is negative.
-
getTimeIntervalAsTime
public com.irurueta.units.Time getTimeIntervalAsTime()Gets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().- Returns:
- time interval between input measurements.
-
getTimeIntervalAsTime
public void getTimeIntervalAsTime(com.irurueta.units.Time result) Gets the time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().- Parameters:
result- instance where the time interval will be stored.
-
setTimeInterval
public void setTimeInterval(com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.LockedException Sets time interval between input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource().- Parameters:
timeInterval- time interval between input measurements.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is negative.
-
getMinStaticSamples
public int getMinStaticSamples()Gets minimum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()required in a static interval to be taken into account. Smaller static intervals will be discarded.- Returns:
- a minimum number of input measurements required in a static interval to be taken into account.
-
setMinStaticSamples
public void setMinStaticSamples(int minStaticSamples) throws com.irurueta.navigation.LockedException Sets minimum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()required in a static interval to be taken into account. Smaller static intervals will be discarded.- Parameters:
minStaticSamples- a minimum number of input measurements required in a static interval to be taken into account.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is less than 2.
-
getMaxDynamicSamples
public int getMaxDynamicSamples()Gets maximum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()allowed in dynamic intervals.- Returns:
- maximum number of input measurements allowed in dynamic intervals.
-
setMaxDynamicSamples
public void setMaxDynamicSamples(int maxDynamicSamples) throws com.irurueta.navigation.LockedException Sets maximum number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()allowed in dynamic intervals.- Parameters:
maxDynamicSamples- maximum number of input measurements allowed in dynamic intervals.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is less than 2.
-
getWindowSize
public int getWindowSize()Gets length of number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to keep within the window being processed to determine instantaneous accelerometer noise level.- Returns:
- length of input measurements to keep within the window.
-
setWindowSize
public void setWindowSize(int windowSize) throws com.irurueta.navigation.LockedException Sets length of number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to keep within the window being processed to determine instantaneous noise level. Window size must always be larger than the allowed minimum value, which is 2 and must have an odd value.- Parameters:
windowSize- length of number of samples to keep within the window.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is not valid.
-
getInitialStaticSamples
public int getInitialStaticSamples()Gets number of input measurements provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to be processed initially while keeping the sensor static to find the base noise level when the device is static.- Returns:
- number of samples to be processed initially.
-
setInitialStaticSamples
public void setInitialStaticSamples(int initialStaticSamples) throws com.irurueta.navigation.LockedException Sets number of input parameters provided to theIntervalDetectorThresholdFactorOptimizer.getDataSource()to be processed initially while keeping the sensor static to find the base noise level when the device is static.- Parameters:
initialStaticSamples- number of samples ot be processed initially.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is less thanTriadStaticIntervalDetector.MINIMUM_INITIAL_STATIC_SAMPLES.
-
getInstantaneousNoiseLevelFactor
public double getInstantaneousNoiseLevelFactor()Gets factor to determine that a sudden movement has occurred during initialization if instantaneous noise level exceeds accumulated noise level by this factor amount. This factor is unit-less.- Returns:
- factor to determine that a sudden movement has occurred.
-
setInstantaneousNoiseLevelFactor
public void setInstantaneousNoiseLevelFactor(double instantaneousNoiseLevelFactor) throws com.irurueta.navigation.LockedException Sets factor to determine that a sudden movement has occurred during initialization if instantaneous noise level exceeds accumulated noise level by this factor amount. This factor is unit-less.- Parameters:
instantaneousNoiseLevelFactor- factor to determine that a sudden movement has occurred during initialization.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is zero or negative.
-
getBaseNoiseLevelAbsoluteThreshold
public double getBaseNoiseLevelAbsoluteThreshold()Gets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase. This threshold is expressed in meters per squared second (m/s^2).- Returns:
- overall absolute threshold to determine whether there has been excessive motion.
-
setBaseNoiseLevelAbsoluteThreshold
public void setBaseNoiseLevelAbsoluteThreshold(double baseNoiseLevelAbsoluteThreshold) throws com.irurueta.navigation.LockedException Sets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase. This threshold is expressed in meters per squared second (m/s^2).- Parameters:
baseNoiseLevelAbsoluteThreshold- overall absolute threshold to determine whether there has been excessive motion.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is zero or negative.
-
getBaseNoiseLevelAbsoluteThresholdAsMeasurement
public com.irurueta.units.Acceleration getBaseNoiseLevelAbsoluteThresholdAsMeasurement()Gets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.- Returns:
- overall absolute threshold to determine whether there has been excessive motion.
-
getBaseNoiseLevelAbsoluteThresholdAsMeasurement
public void getBaseNoiseLevelAbsoluteThresholdAsMeasurement(com.irurueta.units.Acceleration result) Gets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.- Parameters:
result- instance where the result will be stored.
-
setBaseNoiseLevelAbsoluteThreshold
public void setBaseNoiseLevelAbsoluteThreshold(com.irurueta.units.Acceleration baseNoiseLevelAbsoluteThreshold) throws com.irurueta.navigation.LockedException Sets the overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase.- Parameters:
baseNoiseLevelAbsoluteThreshold- overall absolute threshold to determine whether there has been excessive motion.- Throws:
com.irurueta.navigation.LockedException- if optimizer is already running.IllegalArgumentException- if provided value is zero or negative.
-
getAccelerometerBaseNoiseLevel
public double getAccelerometerBaseNoiseLevel()Gets accelerometer base noise level that has been detected during initialization of the best solution that has been found expressed in meters per squared second (m/s^2). This is equal to the standard deviation of the accelerometer measurements during the initialization phase.- Returns:
- accelerometer base noise level of the best solution that has been found.
-
getAccelerometerBaseNoiseLevelAsMeasurement
public com.irurueta.units.Acceleration getAccelerometerBaseNoiseLevelAsMeasurement()Gets accelerometer base noise level that has been detected during initialization of the best solution that has been found. This is equal to the standard deviation of the accelerometer measurements during the initialization phase.- Returns:
- accelerometer base noise level of the best solution that has been found.
-
getAccelerometerBaseNoiseLevelAsMeasurement
public void getAccelerometerBaseNoiseLevelAsMeasurement(com.irurueta.units.Acceleration result) Gets accelerometer base noise level that has been detected during initialization of the best solution that has been found. This is equal to the standard deviation of the accelerometer measurements during the initialization phase.- Parameters:
result- instance where the result will be stored.
-
getGyroscopeBaseNoiseLevelPsd
public double getGyroscopeBaseNoiseLevelPsd()Gets gyroscope base noise level PSD (Power Spectral Density) expressed in (rad^2/s).- Returns:
- gyroscope base noise level PSD.
-
getGyroscopeBaseNoiseLevelRootPsd
public double getGyroscopeBaseNoiseLevelRootPsd()Gets gyroscope base noise level root PSD (Power Spectral Density) expressed in (rad * s^-0.5)- Specified by:
getGyroscopeBaseNoiseLevelRootPsdin interfacecom.irurueta.navigation.inertial.calibration.GyroscopeNoiseRootPsdSource- Returns:
- gyroscope base noise level root PSD.
-
getAccelerometerBaseNoiseLevelPsd
public double getAccelerometerBaseNoiseLevelPsd()Gets accelerometer base noise level PSD (Power Spectral Density) expressed in (m^2 * s^-3).- Returns:
- accelerometer base noise level PSD.
-
getAccelerometerBaseNoiseLevelRootPsd
public double getAccelerometerBaseNoiseLevelRootPsd()Gets accelerometer base noise level root PSD (Power Spectral Density) expressed in (m * s^-1.5).- Specified by:
getAccelerometerBaseNoiseLevelRootPsdin interfacecom.irurueta.navigation.inertial.calibration.AccelerometerNoiseRootPsdSource- Returns:
- accelerometer base noise level root PSD.
-
getThreshold
public double getThreshold()Gets the threshold to determine static/dynamic period changes expressed in meters per squared second (m/s^2) for the best calibration solution that has been found.- Returns:
- threshold to determine static/dynamic period changes for the best solution.
-
getThresholdAsMeasurement
public com.irurueta.units.Acceleration getThresholdAsMeasurement()Gets the threshold to determine static/dynamic period changes for the best calibration solution that has been found.- Returns:
- threshold to determine static/dynamic period changes for the best solution.
-
getThresholdAsMeasurement
public void getThresholdAsMeasurement(com.irurueta.units.Acceleration result) Get the threshold to determine static/dynamic period changes for the best calibration solution that has been found.- Parameters:
result- instance where the result will be stored.
-
getEstimatedAccelerometerBiasStandardDeviationNorm
Gets estimated standard deviation norm of accelerometer bias expressed in meters per squared second (m/s^2). This can be used as the initial accelerometer bias uncertainty forINSLooselyCoupledKalmanInitializerConfigorINSTightlyCoupledKalmanInitializerConfig.- Returns:
- estimated standard deviation norm of accelerometer bias or null if not available.
-
getEstimatedAccelerometerBiasFxVariance
Gets estimated x coordinate variance of accelerometer bias expressed in (m^2/s^4).- Returns:
- estimated x coordinate variance of accelerometer bias or null if not available.
-
getEstimatedAccelerometerBiasFyVariance
Gets estimated y coordinate variance of accelerometer bias expressed in (m^2/s^4).- Returns:
- estimated y coordinate variance of accelerometer bias or null if not available.
-
getEstimatedAccelerometerBiasFzVariance
Gets estimated z coordinate variance of accelerometer bias expressed in (m^2/s^4).- Returns:
- estimated z coordinate variance of accelerometer bias or null if not available.
-
getEstimatedAccelerometerBiases
public double[] getEstimatedAccelerometerBiases()Gets the array containing x,y,z components of estimated accelerometer biases expressed in meters per squared second (m/s^2).- Returns:
- array containing x,y,z components of estimated accelerometer biases.
-
getEstimatedAccelerometerMa
public com.irurueta.algebra.Matrix getEstimatedAccelerometerMa()Gets estimated accelerometer scale factors and cross-coupling errors. This is the product of matrix Ta containing cross-coupling errors and Ka containing scaling factors. So that:Ma = [sx mxy mxz] = Ta*Ka [myx sy myz] [mzx mzy sz ]Where:Ka = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTa = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Ma = [sx mxy mxz] = Ta*Ka = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the accelerometer z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Ma matrix becomes upper diagonal:Ma = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less.- Returns:
- estimated accelerometer scale factors and cross-coupling errors, or null if not available.
-
getEstimatedGyroscopeBiasStandardDeviationNorm
Gets estimated standard deviation norm of gyroscope bias expressed in radians per second (rad/s). This can be used as the initial gyroscope bias uncertainty forINSLooselyCoupledKalmanInitializerConfigorINSTightlyCoupledKalmanInitializerConfig.- Returns:
- estimated standard deviation norm of gyroscope bias or null if not available.
-
getEstimatedGyroscopeBiasXVariance
Gets estimated x coordinate variance of gyroscope bias expressed in (rad^2/s^2).- Returns:
- estimated x coordinate variance of gyroscope bias or null if not available.
-
getEstimatedGyroscopeBiasYVariance
Gets estimated y coordinate variance of gyroscope bias expressed in (rad^2/s^2).- Returns:
- estimated y coordinate variance of gyroscope bias or null if not available.
-
getEstimatedGyroscopeBiasZVariance
Gets estimated z coordinate variance of gyroscope bias expressed in (rad^2/s^2).- Returns:
- estimated z coordinate variance of gyroscope bias or null if not available.
-
getEstimatedGyroscopeBiases
public double[] getEstimatedGyroscopeBiases()Gets the array containing x,y,z components of estimated gyroscope biases expressed in radians per second (rad/s).- Returns:
- array containing x,y,z components of estimated gyroscope biases.
-
getEstimatedGyroscopeMg
public com.irurueta.algebra.Matrix getEstimatedGyroscopeMg()Gets estimated gyroscope scale factors and cross-coupling errors. This is the product of matrix Tg containing cross-coupling errors and Kg containing scaling factors. So that:Mg = [sx mxy mxz] = Tg*Kg [myx sy myz] [mzx mzy sz ]Where:Kg = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTg = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Mg = [sx mxy mxz] = Tg*Kg = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the gyroscope z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Mg matrix becomes upper diagonal:Mg = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less.- Returns:
- estimated gyroscope scale factors and cross-coupling errors.
-
getEstimatedGyroscopeGg
public com.irurueta.algebra.Matrix getEstimatedGyroscopeGg()Gets estimated G-dependent cross-biases introduced on the gyroscope by the specific forces sensed by the accelerometer.- Returns:
- a 3x3 matrix containing g-dependent cross biases.
-
getEstimatedMagnetometerHardIron
public double[] getEstimatedMagnetometerHardIron()Gets the array containing x,y,z components of estimated magnetometer hard-iron biases expressed in Teslas (T).- Returns:
- array containing x,y,z components of estimated magnetometer hard-iron biases.
-
getEstimatedMagnetometerMm
public com.irurueta.algebra.Matrix getEstimatedMagnetometerMm()Gets estimated magnetometer soft-iron matrix containing scale factors and cross-coupling errors. This is the product of matrix Tm containing cross-coupling errors and Km containing scaling factors. So that:Mm = [sx mxy mxz] = Tm*Km [myx sy myz] [mzx mzy sz ]Where:Km = [sx 0 0 ] [0 sy 0 ] [0 0 sz]andTm = [1 -alphaXy alphaXz ] [alphaYx 1 -alphaYz] [-alphaZx alphaZy 1 ]Hence:Mm = [sx mxy mxz] = Tm*Km = [sx -sy * alphaXy sz * alphaXz ] [myx sy myz] [sx * alphaYx sy -sz * alphaYz] [mzx mzy sz ] [-sx * alphaZx sy * alphaZy sz ]This instance allows any 3x3 matrix. However, typically alphaYx, alphaZx and alphaZy are considered to be zero if the accelerometer z-axis is assumed to be the same as the body z-axis. When this is assumed, myx = mzx = mzy = 0 and the Mm matrix becomes upper diagonal:Mm = [sx mxy mxz] [0 sy myz] [0 0 sz ]Values of this matrix are unit-less.- Returns:
- estimated magnetometer soft-iron scale factors and cross-coupling errors, or null if not available.
-
evaluateForThresholdFactor
protected double evaluateForThresholdFactor(double thresholdFactor) throws com.irurueta.navigation.LockedException, com.irurueta.navigation.inertial.calibration.CalibrationException, com.irurueta.navigation.NotReadyException, IntervalDetectorThresholdFactorOptimizerException Evaluates calibration Mean Square Error (MSE) for the provided threshold factor.- Parameters:
thresholdFactor- threshold factor to be used for interval detection and measurement generation to be used for calibration.- Returns:
- calibration MSE.
- Throws:
com.irurueta.navigation.LockedException- if the generator is busy.com.irurueta.navigation.inertial.calibration.CalibrationException- if calibration fails.com.irurueta.navigation.NotReadyException- if the calibrator is not ready.IntervalDetectorThresholdFactorOptimizerException- interval detection failed.
-
initialize
private void initialize()Initializes accelerometer, gyroscope and magnetometer measurement generator to convertTimedBodyKinematicsAndMagneticFluxDensitymeasurements after interval detection into measurements and sequences used for accelerometer, gyroscope and magnetometer calibration. -
keepBestResult
private void keepBestResult(double mse, double thresholdFactor) Keeps the best calibration solution found so far.- Parameters:
mse- Estimated Mean Square Error during calibration.thresholdFactor- threshold factor to be kept.
-
createMeasurement
private com.irurueta.units.Acceleration createMeasurement(double value, com.irurueta.units.AccelerationUnit unit) Creates an acceleration instance using the provided value and unit.- Parameters:
value- value of measurement.unit- unit of value.- Returns:
- created acceleration.
-
getDefaultUnit
private com.irurueta.units.AccelerationUnit getDefaultUnit()Gets the default unit for acceleration, which is meters per squared second (m/s^2).- Returns:
- default unit for acceleration.
-