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

public abstract class BaseSlamCalibrator<D extends BaseCalibrationData> extends Object
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 Classes
    Modifier and Type
    Class
    Description
    static interface 
    Listener for implementations of this class.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected 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.
    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
    Modifier
    Constructor
    Description
    protected
    BaseSlamCalibrator(int sampleLength)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    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
    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
    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
    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
    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
    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MIN_SAMPLE_LENGTH

      public static final int MIN_SAMPLE_LENGTH
      Minimum allowed sample length.
      See Also:
    • DEFAULT_MIN_NUM_SAMPLES

      public static final int DEFAULT_MIN_NUM_SAMPLES
      Default minimum number of samples to take into account.
      See Also:
    • DEFAULT_MAX_NUM_SAMPLES

      public static final int DEFAULT_MAX_NUM_SAMPLES
      Default maximum number of samples to take into account.
      See Also:
    • DEFAULT_CONVERGENCE_THRESHOLD

      public static final double DEFAULT_CONVERGENCE_THRESHOLD
      Value to consider that mean and covariance have converged.
      See Also:
    • DEFAULT_ENABLE_SAMPLE_ACCUMULATION

      protected static final boolean DEFAULT_ENABLE_SAMPLE_ACCUMULATION
      Indicates whether sample accumulation must be enabled or not.
      See Also:
    • N_COMPONENTS_3D

      protected static final int N_COMPONENTS_3D
      Number of components in 3D.
      See Also:
    • NANOS_TO_SECONDS

      protected static final double NANOS_TO_SECONDS
      Conversion of nanoseconds to milliseconds.
      See Also:
    • sampleLength

      private final int sampleLength
      Sample length of control values used during prediction stage in SLAM estimator.
    • sample

      protected double[] sample
      Array containing a control sample used during SLAM prediction stage.
    • estimator

      protected com.irurueta.numerical.signal.processing.MeasurementNoiseCovarianceEstimator estimator
      Mean and covariance estimator.
    • previousMean

      protected double[] previousMean
      Contains previous mean value.
    • previousCovariance

      protected com.irurueta.algebra.Matrix previousCovariance
      Contains mean value of covariance.
    • converged

      protected boolean converged
      Indicates whether this calibrator converged.
    • failed

      protected boolean failed
      Indicates whether this calibrator failed.
    • finished

      protected boolean finished
      Indicates whether calibrator has finished taking samples.
    • sampleCount

      protected int sampleCount
      Number of obtained samples.
    • meanDiff

      protected double[] meanDiff
      Array to store the difference between average values to determine whether the result has converged or not.
    • covDiff

      protected com.irurueta.algebra.Matrix covDiff
      Matrix to store the difference between covariance matrices to determine whether the result has converged or not.
    • minNumSamples

      protected int minNumSamples
      Minimum number of samples to take into account.
    • maxNumSamples

      protected int maxNumSamples
      Maximum number of samples to take into account.
    • convergenceThreshold

      protected double convergenceThreshold
      Threshold to consider whether calibration has converged or not.
    • accumulationEnabled

      protected boolean accumulationEnabled
      Indicates whether accumulation of samples is enabled or not.
    • accelerometerTimestampNanos

      protected long accelerometerTimestampNanos
      Timestamp expressed in nanoseconds since the epoch time of the last accelerometer sample.
    • gyroscopeTimestampNanos

      protected long gyroscopeTimestampNanos
      Timestamp expressed in nanoseconds since the epoch time of the last gyroscope sample.
    • accumulatedAccelerometerSamples

      protected int accumulatedAccelerometerSamples
      Number of accelerometer samples accumulated since last full sample.
    • accumulatedGyroscopeSamples

      protected int accumulatedGyroscopeSamples
      Number of gyroscope samples accumulated since last full sample.
    • accumulatedAccelerationSampleX

      protected double accumulatedAccelerationSampleX
      Average of acceleration along x-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).
    • accumulatedAccelerationSampleY

      protected double accumulatedAccelerationSampleY
      Average of acceleration along y-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).
    • accumulatedAccelerationSampleZ

      protected double accumulatedAccelerationSampleZ
      Average of acceleration along z-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).
    • accumulatedAngularSpeedSampleX

      protected double accumulatedAngularSpeedSampleX
      Average of angular speed along x-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).
    • accumulatedAngularSpeedSampleY

      protected double accumulatedAngularSpeedSampleY
      Average of angular speed along y-axis accumulated since last full sample. Expressed in meters per squared second (m/s^2).
    • accumulatedAngularSpeedSampleZ

      protected double accumulatedAngularSpeedSampleZ
      Average 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 and
      accelerationX - 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

      public void setListener(BaseSlamCalibrator.BaseSlamCalibratorListener<D> listener)
      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.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.
      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

      public abstract D getCalibrationData()
      Gets a new instance containing calibration data estimated by this calibrator.
      Returns:
      a new calibration data instance.
    • getCalibrationData

      public void getCalibrationData(D result)
      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.