Package com.irurueta.ar.slam
Class BaseSlamCalibrator<D extends BaseCalibrationData>
java.lang.Object
com.irurueta.ar.slam.BaseSlamCalibrator<D>
- Type Parameters:
D
- type of calibration data.
- Direct Known Subclasses:
AbsoluteOrientationBaseSlamCalibrator
,ConstantVelocityModelSlamCalibrator
,SlamCalibrator
Base class for estimating mean and covariance of noise in control values
when the system state is held constant (only noise is provided as control
input).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Listener for implementations of this class. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected long
Timestamp expressed in nanoseconds since the epoch time of the last accelerometer sample.protected double
Average of acceleration along x-axis accumulated since last full sample.protected double
Average of acceleration along y-axis accumulated since last full sample.protected double
Average of acceleration along z-axis accumulated since last full sample.protected int
Number of accelerometer samples accumulated since last full sample.protected double
Average of angular speed along x-axis accumulated since last full sample.protected double
Average of angular speed along y-axis accumulated since last full sample.protected double
Average of angular speed along z-axis accumulated since last full sample.protected int
Number of gyroscope samples accumulated since last full sample.protected boolean
Indicates whether accumulation of samples is enabled or not.protected boolean
Indicates whether this calibrator converged.protected double
Threshold to consider whether calibration has converged or not.protected com.irurueta.algebra.Matrix
Matrix to store the difference between covariance matrices to determine whether the result has converged or not.static final double
Value to consider that mean and covariance have converged.protected static final boolean
Indicates whether sample accumulation must be enabled or not.static final int
Default maximum number of samples to take into account.static final int
Default minimum number of samples to take into account.protected com.irurueta.numerical.signal.processing.MeasurementNoiseCovarianceEstimator
Mean and covariance estimator.protected boolean
Indicates whether this calibrator failed.protected boolean
Indicates whether calibrator has finished taking samples.protected long
Timestamp expressed in nanoseconds since the epoch time of the last gyroscope sample.protected BaseSlamCalibrator.BaseSlamCalibratorListener<D>
Listener in charge of handling events raised by instances of this class.protected int
Maximum number of samples to take into account.protected double[]
Array to store the difference between average values to determine whether the result has converged or not.static final int
Minimum allowed sample length.protected int
Minimum number of samples to take into account.protected static final int
Number of components in 3D.protected static final double
Conversion of nanoseconds to milliseconds.protected com.irurueta.algebra.Matrix
Contains mean value of covariance.protected double[]
Contains previous mean value.protected double[]
Array containing a control sample used during SLAM prediction stage.protected int
Number of obtained samples.private final int
Sample length of control values used during prediction stage in SLAM estimator. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlong
Gets timestamp expressed in nanoseconds since the epoch time of the last accelerometer sample, or -1 if no sample has been set yet.double[]
Gets average acceleration along x,y,z axes accumulated since last full sample.void
getAccumulatedAccelerationSample
(double[] result) Gets average acceleration along x,yz axes accumulated since last full sample.double
Gets average acceleration along x-axis accumulated since last full sample.double
Gets average acceleration along y-axis accumulated since last full sample.double
Gets average acceleration along z-axis accumulated since last full sample.int
Gets number of accelerometer samples accumulated since last full sample.double[]
Gets average angular speed along x,y,z axes accumulated since last full sample.void
getAccumulatedAngularSpeedSample
(double[] result) Gets average angular speed along x,y,z axes accumulated since last full sample.double
Gets average angular speed along x-axis accumulated since last full sample.double
Gets average angular speed along y-axis accumulated since last full sample.double
Gets average angular speed along z-axis accumulated since last full sample.int
Gets number of gyroscope samples accumulated since last full sample.abstract D
Gets a new instance containing calibration data estimated by this calibrator.void
getCalibrationData
(D result) Gets calibration data estimated by this calibrator.com.irurueta.algebra.Matrix
Gets covariance of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.void
getControlCovariance
(com.irurueta.algebra.Matrix result) Gets covariance of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.com.irurueta.statistics.MultivariateNormalDist
Gets a multivariate normal distribution containing control signal mean and covariance used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.void
getControlDistribution
(com.irurueta.statistics.MultivariateNormalDist dist) Gets a multivariate normal distribution containing control signal mean and covariance used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.double[]
Obtains mean values of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.void
getControlMean
(double[] result) Obtains mean values of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.double
Gets threshold to consider that calibration has converged.protected abstract int
Obtains the number of state parameters in associated SLAM estimator.long
Gets timestamp expressed in nanoseconds since the epoch time of the last gyroscope sample, or -1 if no sample has been set yet.Gets listener in charge of handling events raised by instances of this class.int
Gets maximum number of samples to take into account.int
Obtains the minimum number of samples to use before taking convergence into account.long
Gets most recent timestamp of received partial samples (accelerometer or gyroscope).int
Gets number of obtained samples.int
Gets sample length of control values used during prediction stage in SLAM estimator.boolean
Indicates whether the accelerometer sample has been received since the last full sample (accelerometer + gyroscope).boolean
Indicates whether accumulation of samples is enabled or not.boolean
Indicates whether calibrator converged or not.boolean
isFailed()
Indicates whether this calibrator failed or not.boolean
Indicates whether calibrator has finished taking samples or not.boolean
Indicates whether a full sample (accelerometer + gyroscope) has been received or not.boolean
Indicates whether the gyroscope sample has been received since the last full sample (accelerometer + gyroscope).protected void
Notifies that a full sample has been received and resets flags indicating whether partial samples have been received.protected abstract void
Method to be implemented in subclasses to process a full sample.com.irurueta.statistics.MultivariateNormalDist
propagateWithControlJacobian
(com.irurueta.algebra.Matrix controlJacobian) Propagates calibrated control signal covariance using current control jacobian matrix.void
propagateWithControlJacobian
(com.irurueta.algebra.Matrix controlJacobian, com.irurueta.statistics.MultivariateNormalDist result) Propagates calibrated control signal covariance using current control jacobian matrix.void
reset()
Resets calibrator.void
setAccumulationEnabled
(boolean accumulationEnabled) Specifies whether accumulation of samples is enabled or not.void
setConvergenceThreshold
(double convergenceThreshold) Specifies threshold to determine that calibration has converged.void
Sets listener in charge of handling events raised by instances of this class.void
setMaxNumSamples
(int maxNumSamples) Specifies the maximum number of samples to take.void
setMinNumSamples
(int minNumSamples) Specifies the minimum number of samples to take before taking convergence into account.void
updateAccelerometerSample
(long timestamp, float[] data) Provides a new accelerometer sample.void
updateAccelerometerSample
(long timestamp, float accelerationX, float accelerationY, float accelerationZ) Provides a new accelerometer sample.void
updateGyroscopeSample
(long timestamp, float[] data) Provides a new gyroscope sample.void
updateGyroscopeSample
(long timestamp, float angularSpeedX, float angularSpeedY, float angularSpeedZ) Provides a new gyroscope sample.protected void
Updates internal mean and covariance values and checks whether convergence has been reached and calibrator has finished or failed.
-
Field Details
-
MIN_SAMPLE_LENGTH
public static final int MIN_SAMPLE_LENGTHMinimum allowed sample length.- See Also:
-
DEFAULT_MIN_NUM_SAMPLES
public static final int DEFAULT_MIN_NUM_SAMPLESDefault minimum number of samples to take into account.- See Also:
-
DEFAULT_MAX_NUM_SAMPLES
public static final int DEFAULT_MAX_NUM_SAMPLESDefault maximum number of samples to take into account.- See Also:
-
DEFAULT_CONVERGENCE_THRESHOLD
public static final double DEFAULT_CONVERGENCE_THRESHOLDValue to consider that mean and covariance have converged.- See Also:
-
DEFAULT_ENABLE_SAMPLE_ACCUMULATION
protected static final boolean DEFAULT_ENABLE_SAMPLE_ACCUMULATIONIndicates whether sample accumulation must be enabled or not.- See Also:
-
N_COMPONENTS_3D
protected static final int N_COMPONENTS_3DNumber of components in 3D.- See Also:
-
NANOS_TO_SECONDS
protected static final double NANOS_TO_SECONDSConversion of nanoseconds to milliseconds.- See Also:
-
sampleLength
private final int sampleLengthSample length of control values used during prediction stage in SLAM estimator. -
sample
protected double[] sampleArray containing a control sample used during SLAM prediction stage. -
estimator
protected com.irurueta.numerical.signal.processing.MeasurementNoiseCovarianceEstimator estimatorMean and covariance estimator. -
previousMean
protected double[] previousMeanContains previous mean value. -
previousCovariance
protected com.irurueta.algebra.Matrix previousCovarianceContains mean value of covariance. -
converged
protected boolean convergedIndicates whether this calibrator converged. -
failed
protected boolean failedIndicates whether this calibrator failed. -
finished
protected boolean finishedIndicates whether calibrator has finished taking samples. -
sampleCount
protected int sampleCountNumber of obtained samples. -
meanDiff
protected double[] meanDiffArray to store the difference between average values to determine whether the result has converged or not. -
covDiff
protected com.irurueta.algebra.Matrix covDiffMatrix to store the difference between covariance matrices to determine whether the result has converged or not. -
minNumSamples
protected int minNumSamplesMinimum number of samples to take into account. -
maxNumSamples
protected int maxNumSamplesMaximum number of samples to take into account. -
convergenceThreshold
protected double convergenceThresholdThreshold to consider whether calibration has converged or not. -
accumulationEnabled
protected boolean accumulationEnabledIndicates whether accumulation of samples is enabled or not. -
accelerometerTimestampNanos
protected long accelerometerTimestampNanosTimestamp expressed in nanoseconds since the epoch time of the last accelerometer sample. -
gyroscopeTimestampNanos
protected long gyroscopeTimestampNanosTimestamp expressed in nanoseconds since the epoch time of the last gyroscope sample. -
accumulatedAccelerometerSamples
protected int accumulatedAccelerometerSamplesNumber of accelerometer samples accumulated since last full sample. -
accumulatedGyroscopeSamples
protected int accumulatedGyroscopeSamplesNumber of gyroscope samples accumulated since last full sample. -
accumulatedAccelerationSampleX
protected double accumulatedAccelerationSampleXAverage of acceleration along x-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
accumulatedAccelerationSampleY
protected double accumulatedAccelerationSampleYAverage of acceleration along y-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
accumulatedAccelerationSampleZ
protected double accumulatedAccelerationSampleZAverage of acceleration along z-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
accumulatedAngularSpeedSampleX
protected double accumulatedAngularSpeedSampleXAverage of angular speed along x-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
accumulatedAngularSpeedSampleY
protected double accumulatedAngularSpeedSampleYAverage of angular speed along y-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
accumulatedAngularSpeedSampleZ
protected double accumulatedAngularSpeedSampleZAverage of angular speed along z-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2). -
listener
Listener in charge of handling events raised by instances of this class.
-
-
Constructor Details
-
BaseSlamCalibrator
protected BaseSlamCalibrator(int sampleLength) Constructor.- Parameters:
sampleLength
- sample length of control values used during prediction stage in SLAM estimator.- Throws:
IllegalArgumentException
- if sample length is less than 1.
-
-
Method Details
-
getSampleLength
public int getSampleLength()Gets sample length of control values used during prediction stage in SLAM estimator.- Returns:
- sample length of control values used during prediction stage in SLAM estimator.
-
isConverged
public boolean isConverged()Indicates whether calibrator converged or not.- Returns:
- true if calibrator converged, false otherwise.
-
isFailed
public boolean isFailed()Indicates whether this calibrator failed or not.- Returns:
- true if calibrator failed, false otherwise.
-
isFinished
public boolean isFinished()Indicates whether calibrator has finished taking samples or not.- Returns:
- true if calibrator has finished taking samples, false otherwise.
-
getSampleCount
public int getSampleCount()Gets number of obtained samples.- Returns:
- number of obtained samples.
-
getMinNumSamples
public int getMinNumSamples()Obtains the minimum number of samples to use before taking convergence into account.- Returns:
- minimum number of samples to use before taking convergence into account.
-
setMinNumSamples
public void setMinNumSamples(int minNumSamples) Specifies the minimum number of samples to take before taking convergence into account.- Parameters:
minNumSamples
- minimum number of samples to take before taking convergence into account.- Throws:
IllegalArgumentException
- if provided value is negative.
-
getMaxNumSamples
public int getMaxNumSamples()Gets maximum number of samples to take into account.- Returns:
- maximum number of samples to take into account.
-
setMaxNumSamples
public void setMaxNumSamples(int maxNumSamples) Specifies the maximum number of samples to take.- Parameters:
maxNumSamples
- maximum number of samples to take.- Throws:
IllegalArgumentException
- if provided value is negative or zero.
-
getConvergenceThreshold
public double getConvergenceThreshold()Gets threshold to consider that calibration has converged.- Returns:
- threshold to consider that calibration has converged.
-
setConvergenceThreshold
public void setConvergenceThreshold(double convergenceThreshold) Specifies threshold to determine that calibration has converged.- Parameters:
convergenceThreshold
- threshold to determine that calibration has converged.- Throws:
IllegalArgumentException
- if threshold is negative.
-
reset
public void reset()Resets calibrator. -
isAccumulationEnabled
public boolean isAccumulationEnabled()Indicates whether accumulation of samples is enabled or not.- Returns:
- true if accumulation of samples is enabled, false otherwise.
-
setAccumulationEnabled
public void setAccumulationEnabled(boolean accumulationEnabled) Specifies whether accumulation of samples is enabled or not.- Parameters:
accumulationEnabled
- true if accumulation of samples is enabled, false otherwise.
-
getAccelerometerTimestampNanos
public long getAccelerometerTimestampNanos()Gets timestamp expressed in nanoseconds since the epoch time of the last accelerometer sample, or -1 if no sample has been set yet.- Returns:
- timestamp expressed in nanoseconds since the epoch time of the last accelerometer sample, or -1.
-
getGyroscopeTimestampNanos
public long getGyroscopeTimestampNanos()Gets timestamp expressed in nanoseconds since the epoch time of the last gyroscope sample, or -1 if no sample has been set yet.- Returns:
- timestamp expressed in nanoseconds since the epoch time of the last gyroscope sample, or -1.
-
getAccumulatedAccelerometerSamples
public int getAccumulatedAccelerometerSamples()Gets number of accelerometer samples accumulated since last full sample.- Returns:
- number of accelerometer samples accumulated since last full sample.
-
getAccumulatedGyroscopeSamples
public int getAccumulatedGyroscopeSamples()Gets number of gyroscope samples accumulated since last full sample.- Returns:
- number of gyroscope samples accumulated since last full sample.
-
isAccelerometerSampleReceived
public boolean isAccelerometerSampleReceived()Indicates whether the accelerometer sample has been received since the last full sample (accelerometer + gyroscope).- Returns:
- true if accelerometer sample has been received, false otherwise.
-
isGyroscopeSampleReceived
public boolean isGyroscopeSampleReceived()Indicates whether the gyroscope sample has been received since the last full sample (accelerometer + gyroscope).- Returns:
- true if gyroscope sample has been received, false otherwise.
-
isFullSampleAvailable
public boolean isFullSampleAvailable()Indicates whether a full sample (accelerometer + gyroscope) has been received or not.- Returns:
- true if full sample has been received, false otherwise.
-
getAccumulatedAccelerationSampleX
public double getAccumulatedAccelerationSampleX()Gets average acceleration along x-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).- Returns:
- average acceleration along x-axis accumulated since last full sample.
-
getAccumulatedAccelerationSampleY
public double getAccumulatedAccelerationSampleY()Gets average acceleration along y-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).- Returns:
- average acceleration along y-axis accumulated since last full sample.
-
getAccumulatedAccelerationSampleZ
public double getAccumulatedAccelerationSampleZ()Gets average acceleration along z-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).- Returns:
- average acceleration along z-axis accumulated since last full sample.
-
getAccumulatedAccelerationSample
public double[] getAccumulatedAccelerationSample()Gets average acceleration along x,y,z axes accumulated since last full sample. Expressed in meters per squared second (m/s^2).- Returns:
- average acceleration along x,y,z axes expressed in meters per squared second (m/s^2).
-
getAccumulatedAccelerationSample
public void getAccumulatedAccelerationSample(double[] result) Gets average acceleration along x,yz axes accumulated since last full sample. Expressed in meters per squared second (m/s^2).- Parameters:
result
- array where average acceleration along x,y,z axes will be stored.- Throws:
IllegalArgumentException
- if provided array does not have length 3.
-
getAccumulatedAngularSpeedSampleX
public double getAccumulatedAngularSpeedSampleX()Gets average angular speed along x-axis accumulated since last full sample. Expressed in radians per second (rad/s).- Returns:
- average angular speed along x-axis expressed in radians per second (rad/s).
-
getAccumulatedAngularSpeedSampleY
public double getAccumulatedAngularSpeedSampleY()Gets average angular speed along y-axis accumulated since last full sample. Expressed in radians per second (rad/s).- Returns:
- average angular speed along y-axis expressed in radians per second (rad/s).
-
getAccumulatedAngularSpeedSampleZ
public double getAccumulatedAngularSpeedSampleZ()Gets average angular speed along z-axis accumulated since last full sample. Expressed in radians per second (rad/s).- Returns:
- average angular speed along z-axis expressed in radians per second (rad/s).
-
getAccumulatedAngularSpeedSample
public double[] getAccumulatedAngularSpeedSample()Gets average angular speed along x,y,z axes accumulated since last full sample. Expressed in radians per second (rad/s).- Returns:
- average angular speed along x,y,z axes expressed in radians per second.
-
getAccumulatedAngularSpeedSample
public void getAccumulatedAngularSpeedSample(double[] result) Gets average angular speed along x,y,z axes accumulated since last full sample. Expressed in radians per second (rad/s).- Parameters:
result
- array where average angular speed along x,y,z axes will be stored.- Throws:
IllegalArgumentException
- if provided array does not have length 3.
-
updateAccelerometerSample
public void updateAccelerometerSample(long timestamp, float accelerationX, float accelerationY, float accelerationZ) Provides a new accelerometer sample. If accumulation is enabled, samples are averaged until a full sample is received. When a full sample (accelerometer + gyroscope) is received, internal state gets also updated.- Parameters:
timestamp
- timestamp of accelerometer sample since epoch time andaccelerationX
- linear acceleration along x-axis expressed in meters per squared second (m/s^2).accelerationY
- linear acceleration along y-axis expressed in meters per squared second (m/s^2).accelerationZ
- linear acceleration along z-axis expressed in meters per squared second (m/s^2).
-
updateAccelerometerSample
public void updateAccelerometerSample(long timestamp, float[] data) Provides a new accelerometer sample. If accumulation is enabled, samples are averaged until a full sample is received. When a full sample (accelerometer + gyroscope) is received, internal state gets also updated.- Parameters:
timestamp
- timestamp of accelerometer sample since epoch time and expressed in nanoseconds.data
- array containing x,y,z components of linear acceleration expressed in meters per squared second (m/s^2).- Throws:
IllegalArgumentException
- if provided array does not have length 3.
-
updateGyroscopeSample
public void updateGyroscopeSample(long timestamp, float angularSpeedX, float angularSpeedY, float angularSpeedZ) Provides a new gyroscope sample. If accumulation is enabled, samples are averaged until a full sample is received. When a full sample (accelerometer + gyroscope) is received, internal state gets also updated.- Parameters:
timestamp
- timestamp of accelerometer sample since epoch time and expressed in nanoseconds.angularSpeedX
- angular speed of rotation along x-axis expressed in radians per second (rad/s).angularSpeedY
- angular speed of rotation along y-axis expressed in radians per second (rad/s).angularSpeedZ
- angular speed of rotation along z-axis expressed in radians per second (rad/s).
-
updateGyroscopeSample
public void updateGyroscopeSample(long timestamp, float[] data) Provides a new gyroscope sample. If accumulation is enabled, samples are averaged until a full sample is received. When a full sample (accelerometer + gyroscope) is received, internal state gets also updated.- Parameters:
timestamp
- timestamp of gyroscope sample since epoch time and expressed in nanoseconds.data
- angular speed of rotation along x,y,z axes expressed in radians per second (rad/s).- Throws:
IllegalArgumentException
- if provided array does not have length 3.
-
getMostRecentTimestampNanos
public long getMostRecentTimestampNanos()Gets most recent timestamp of received partial samples (accelerometer or gyroscope).- Returns:
- most recent timestamp of received partial sample.
-
getListener
Gets listener in charge of handling events raised by instances of this class.- Returns:
- listener in charge of handling events raised by instances of this class.
-
setListener
Sets listener in charge of handling events raised by instances of this class.- Parameters:
listener
- listener in charge of handling events raised by instances of this class.
-
getControlMean
public double[] getControlMean()Obtains mean values of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Returns:
- mean values of control signal.
-
getControlMean
public void getControlMean(double[] result) Obtains mean values of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Parameters:
result
- array where mean values of control signal will be stored. Array must have the same length as the control signal.- Throws:
IllegalArgumentException
- if provided length is invalid.
-
getControlCovariance
public com.irurueta.algebra.Matrix getControlCovariance()Gets covariance of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Returns:
- covariance matrix of control signal.
-
getControlCovariance
public void getControlCovariance(com.irurueta.algebra.Matrix result) Gets covariance of control signal used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Parameters:
result
- matrix where covariance will be stored.
-
getControlDistribution
public com.irurueta.statistics.MultivariateNormalDist getControlDistribution() throws com.irurueta.statistics.InvalidCovarianceMatrixExceptionGets a multivariate normal distribution containing control signal mean and covariance used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Returns:
- a multivariate normal distribution.
- Throws:
com.irurueta.statistics.InvalidCovarianceMatrixException
- if estimated covariance is not valid.
-
getControlDistribution
public void getControlDistribution(com.irurueta.statistics.MultivariateNormalDist dist) throws com.irurueta.statistics.InvalidCovarianceMatrixException Gets a multivariate normal distribution containing control signal mean and covariance used for SLAM estimation during prediction stage of Kalman filter in order to correct possible biases and offsets.- Parameters:
dist
- a multivariate normal distribution.- Throws:
com.irurueta.statistics.InvalidCovarianceMatrixException
- if estimated covariance is not valid.
-
getCalibrationData
Gets a new instance containing calibration data estimated by this calibrator.- Returns:
- a new calibration data instance.
-
getCalibrationData
Gets calibration data estimated by this calibrator.- Parameters:
result
- instance where calibration data will be stored.
-
propagateWithControlJacobian
public com.irurueta.statistics.MultivariateNormalDist propagateWithControlJacobian(com.irurueta.algebra.Matrix controlJacobian) throws com.irurueta.statistics.InvalidCovarianceMatrixException Propagates calibrated control signal covariance using current control jacobian matrix. The propagated distribution can be used during prediction stage in Kalman filtering.- Parameters:
controlJacobian
- current control jacobian matrix.- Returns:
- propagated distribution.
- Throws:
com.irurueta.statistics.InvalidCovarianceMatrixException
- if estimated covariance is not valid.
-
propagateWithControlJacobian
public void propagateWithControlJacobian(com.irurueta.algebra.Matrix controlJacobian, com.irurueta.statistics.MultivariateNormalDist result) throws com.irurueta.statistics.InvalidCovarianceMatrixException Propagates calibrated control signal covariance using current control jacobian matrix. The propagated distribution can be used during prediction stage in Kalman filtering.- Parameters:
controlJacobian
- current control jacobian matrix.result
- instance where propagated distribution is stored.- Throws:
com.irurueta.statistics.InvalidCovarianceMatrixException
- if estimated covariance is not valid.
-
notifyFullSampleAndResetSampleReceive
protected void notifyFullSampleAndResetSampleReceive()Notifies that a full sample has been received and resets flags indicating whether partial samples have been received. -
getEstimatorStateLength
protected abstract int getEstimatorStateLength()Obtains the number of state parameters in associated SLAM estimator.- Returns:
- number of state parameters.
-
processFullSample
protected abstract void processFullSample()Method to be implemented in subclasses to process a full sample. -
updateSample
protected void updateSample()Updates internal mean and covariance values and checks whether convergence has been reached and calibrator has finished or failed.
-