struct mola::ImuBias

Overview

The estimated biases of one IMU, identified by its sensor label. Providers always fill both covariances (with the prior ones before any measurement).

#include <ImuBiasSource.h>

struct ImuBias
{
    // fields

    std::string sensor_label;
    mrpt::math::TVector3D gyro = {0, 0, 0};
    mrpt::math::TVector3D acc = {0, 0, 0};
    mrpt::math::CMatrixDouble33 gyro_cov;
    mrpt::math::CMatrixDouble33 acc_cov;
    double gyro_random_walk = 0;
    double acc_random_walk = 0;
    mrpt::Clock::time_point timestamp;
    std::optional<mrpt::Clock::time_point> last_update;
};

Fields

std::string sensor_label

Sensor label of the IMU (as in its mrpt::obs::CObservationIMU).

mrpt::math::TVector3D gyro = {0, 0, 0}

Gyroscope bias [rad/s], in the IMU sensor frame: subtract it from the raw angular velocity readings. It includes the Earth rotation.

mrpt::math::TVector3D acc = {0, 0, 0}

Accelerometer bias [m/s^2], in the IMU sensor frame: subtract it from the raw specific force readings.

mrpt::math::CMatrixDouble33 gyro_cov

Covariances of the two biases above [(rad/s)^2] and [(m/s^2)^2]. A large entry means that component is barely known (e.g. the accelerometer bias perpendicular to gravity, which at rest cannot be told from a tilt).

double gyro_random_walk = 0

Random walk densities of the provider’s bias model [rad/s/sqrt(s)] and [m/s^2/sqrt(s)], so consumers can propagate a cached estimate: its covariance grows by density^2 * dt per axis. Zero if unknown.

mrpt::Clock::time_point timestamp

Time the estimate (mean and covariances) refers to.

std::optional<mrpt::Clock::time_point> last_update

Time of the newest measurement used. Unset while the estimate is still the prior (zero biases, prior covariances).