Interface MagnetometerCalibrator
- All Known Subinterfaces:
KnownFrameMagnetometerCalibrator<T,
,L> KnownHardIronAndFrameMagnetometerCalibrator<T,
,L> MagnetometerNonLinearCalibrator
,OrderedStandardDeviationBodyMagneticFluxDensityMagnetometerCalibrator
,OrderedStandardDeviationFrameBodyMagneticFluxDensityMagnetometerCalibrator
,QualityScoredMagnetometerCalibrator
,UnorderedFrameBodyMagneticFluxDensityMagnetometerCalibrator
,UnorderedStandardDeviationBodyMagneticFluxDensityMagnetometerCalibrator
,UnorderedStandardDeviationFrameBodyMagneticFluxDensityMagnetometerCalibrator
- All Known Implementing Classes:
BaseKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,BaseMagneticFluxDensityNormMagnetometerCalibrator
,KnownFrameMagnetometerLinearLeastSquaresCalibrator
,KnownFrameMagnetometerNonLinearLeastSquaresCalibrator
,KnownHardIronAndFrameMagnetometerLinearLeastSquaresCalibrator
,KnownHardIronAndFrameMagnetometerNonLinearLeastSquaresCalibrator
,KnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,KnownHardIronPositionAndInstantMagnetometerCalibrator
,KnownMagneticFluxDensityNormMagnetometerCalibrator
,KnownPositionAndInstantMagnetometerCalibrator
,LMedSRobustKnownFrameMagnetometerCalibrator
,LMedSRobustKnownHardIronAndFrameMagnetometerCalibrator
,LMedSRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,LMedSRobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,LMedSRobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,LMedSRobustKnownPositionAndInstantMagnetometerCalibrator
,MSACRobustKnownFrameMagnetometerCalibrator
,MSACRobustKnownHardIronAndFrameMagnetometerCalibrator
,MSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,MSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,MSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,MSACRobustKnownPositionAndInstantMagnetometerCalibrator
,PROMedSRobustKnownFrameMagnetometerCalibrator
,PROMedSRobustKnownHardIronAndFrameMagnetometerCalibrator
,PROMedSRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,PROMedSRobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,PROMedSRobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,PROMedSRobustKnownPositionAndInstantMagnetometerCalibrator
,PROSACRobustKnownFrameMagnetometerCalibrator
,PROSACRobustKnownHardIronAndFrameMagnetometerCalibrator
,PROSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,PROSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,PROSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,PROSACRobustKnownPositionAndInstantMagnetometerCalibrator
,RANSACRobustKnownFrameMagnetometerCalibrator
,RANSACRobustKnownHardIronAndFrameMagnetometerCalibrator
,RANSACRobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,RANSACRobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,RANSACRobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,RANSACRobustKnownPositionAndInstantMagnetometerCalibrator
,RobustKnownFrameMagnetometerCalibrator
,RobustKnownHardIronAndFrameMagnetometerCalibrator
,RobustKnownHardIronMagneticFluxDensityNormMagnetometerCalibrator
,RobustKnownHardIronPositionAndInstantMagnetometerCalibrator
,RobustKnownMagneticFluxDensityNormMagnetometerCalibrator
,RobustKnownPositionAndInstantMagnetometerCalibrator
public interface MagnetometerCalibrator
Interface for magnetometer calibrators.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Estimates accelerometer calibration parameters containing scale factors and cross-coupling errors.com.irurueta.algebra.Matrix
Gets estimated magnetometer soft-iron matrix containing scale factors and cross coupling errors.Gets estimated x-y cross-coupling error.Gets estimated x-z cross-coupling error.Gets estimated y-x cross-coupling error.Gets estimated y-z cross-coupling error.Gets estimated z-x cross-coupling error.Gets estimated z-y cross-coupling error.Gets estimated x-axis scale factor.Gets estimated y-axis scale factor.Gets estimated z-axis scale factor.Indicates the type of measurement used by this calibrator.int
Gets minimum number of required measurements.boolean
Indicates whether z-axis is assumed to be common for accelerometer, gyroscope and magnetometer.boolean
Indicates whether this calibrator requires ordered measurements in a list or not.boolean
Indicates whether this calibrator requires quality scores for each measurement or not.boolean
isReady()
Indicates whether calibrator is ready to start the estimator.boolean
Indicates whether calibrator is currently running or no.void
setCommonAxisUsed
(boolean commonAxisUsed) Specifies whether z-axis is assumed to be common for accelerometer and gyroscope.
-
Method Details
-
getMeasurementType
MagnetometerCalibratorMeasurementType getMeasurementType()Indicates the type of measurement used by this calibrator.- Returns:
- type of measurement used by this calibrator.
-
isOrderedMeasurementsRequired
boolean isOrderedMeasurementsRequired()Indicates whether this calibrator requires ordered measurements in a list or not.- Returns:
- true if measurements must be ordered, false otherwise.
-
isQualityScoresRequired
boolean isQualityScoresRequired()Indicates whether this calibrator requires quality scores for each measurement or not.- Returns:
- true if quality scores are required, false otherwise.
-
isCommonAxisUsed
boolean isCommonAxisUsed()Indicates whether z-axis is assumed to be common for accelerometer, gyroscope and magnetometer. When enabled, this eliminates 3 variables from Mm (soft-iron) matrix.- Returns:
- true if z-axis is assumed to be common for accelerometer, gyroscope and magnetometer, false otherwise.
-
setCommonAxisUsed
void setCommonAxisUsed(boolean commonAxisUsed) throws com.irurueta.navigation.LockedException Specifies whether z-axis is assumed to be common for accelerometer and gyroscope. When enabled, this eliminates 3 variables from Mm matrix.- Parameters:
commonAxisUsed
- true if z-axis is assumed to be common for accelerometer, gyroscope and magnetometer, false otherwise.- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
getMinimumRequiredMeasurements
int getMinimumRequiredMeasurements()Gets minimum number of required measurements.- Returns:
- minimum number of required measurements.
-
isReady
boolean isReady()Indicates whether calibrator is ready to start the estimator.- Returns:
- true if calibrator is ready, false otherwise.
-
isRunning
boolean isRunning()Indicates whether calibrator is currently running or no.- Returns:
- true if calibrator is running, false otherwise.
-
calibrate
void calibrate() throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, CalibrationExceptionEstimates accelerometer calibration parameters containing scale factors and cross-coupling errors.- Throws:
com.irurueta.navigation.LockedException
- if calibrator is currently running.com.irurueta.navigation.NotReadyException
- if calibrator is not ready.CalibrationException
- if calibration fails for numerical reasons.
-
getEstimatedMm
com.irurueta.algebra.Matrix getEstimatedMm()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 tat: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.
-
getEstimatedSx
Double getEstimatedSx()Gets estimated x-axis scale factor.- Returns:
- estimated x-axis scale factor or null if not available.
-
getEstimatedSy
Double getEstimatedSy()Gets estimated y-axis scale factor.- Returns:
- estimated y-axis scale factor or null if not available.
-
getEstimatedSz
Double getEstimatedSz()Gets estimated z-axis scale factor.- Returns:
- estimated z-axis scale factor or null if not available.
-
getEstimatedMxy
Double getEstimatedMxy()Gets estimated x-y cross-coupling error.- Returns:
- estimated x-y cross-coupling error or null if not available.
-
getEstimatedMxz
Double getEstimatedMxz()Gets estimated x-z cross-coupling error.- Returns:
- estimated x-z cross-coupling error or null if not available.
-
getEstimatedMyx
Double getEstimatedMyx()Gets estimated y-x cross-coupling error.- Returns:
- estimated y-x cross-coupling error or null if not available.
-
getEstimatedMyz
Double getEstimatedMyz()Gets estimated y-z cross-coupling error.- Returns:
- estimated y-z cross-coupling error or null if not available.
-
getEstimatedMzx
Double getEstimatedMzx()Gets estimated z-x cross-coupling error.- Returns:
- estimated z-x cross-coupling error or null if not available.
-
getEstimatedMzy
Double getEstimatedMzy()Gets estimated z-y cross-coupling error.- Returns:
- estimated z-y cross-coupling error or null if not available.
-