Class ImuCovarianceInterface

Inheritance Relationships

Derived Types

Class Documentation

class ImuCovarianceInterface

Interface for IMU covariance computation strategies.

Implementation can provide static covariance values, compute them online during a calibration phase, or adapt them continuously

Subclassed by adi_imu::EwmaCovarianceProvider, adi_imu::KalmanCovarianceProvider, adi_imu::SlidingWindowCovarianceProvider, adi_imu::StaticCovarianceProvider, adi_imu::WelfordCovarianceProvider

Public Functions

ImuCovarianceInterface() = default
virtual ~ImuCovarianceInterface() = default
ImuCovarianceInterface(const ImuCovarianceInterface&) = delete
ImuCovarianceInterface &operator=(const ImuCovarianceInterface&) = delete
virtual void addSample(const Vec3 &accel, const Vec3 &gyro) = 0

Process a new IMU sample for covariance estimation.

Parameters:
  • accel – Linear acceleration sample (m/s^2)

  • gyro – Angular velocity sample (rad/s)

virtual bool isReady() const = 0

Check if covariance estimation is ready (calibration complete).

Returns:

true if covariance values are valid and ready to use.

virtual CovarianceMatrix getAccelCovariance() const = 0

Get the linear acceleration covariance matrix.

Returns:

3x3 covariance matrix row-major order.

virtual CovarianceMatrix getGyroCovariance() const = 0

Get the angular velocity covariance matrix.

Returns:

3x3 covariance matrix row-major order.

virtual void reset() = 0

Reset the covariance extimator to initial state.

virtual double getCalibrationProgress() const = 0

Get the current calibration progress (0.0 to 1.0).

Returns:

Progress ratio, 1.0 when calibration is complete.