| ▼Cm5::imu::AhrsController | Merges up to 4 IMUDataSource instances by capability and fuses their samples into an attitude estimate via a pluggable AhrsFilterBase |
| Cm5::imu::AhrsImu | AhrsController plus an M5Unified IMU_Class-compatible API |
| ▼Cm5::imu::AhrsFilterBase | Framework-independent contract shared by every AHRS attitude filter |
| Cm5::imu::ComplementaryFilter | Angle-based first-order complementary filter |
| Cm5::imu::EKFFilter | Quaternion extended Kalman filter (EKF) with gyro bias estimation |
| Cm5::imu::FusionFilter | Adapter around the vendored x-io Fusion AHRS algorithm (x-io Technologies, MIT license; see src/imu/filter/third_party/fusion) |
| Cm5::imu::MadgwickFilter | Gradient-descent orientation filter (Madgwick 2010) |
| Cm5::imu::MahonyFilter | Explicit complementary filter with proportional-integral feedback (Mahony et al. 2008) |
| Cm5::imu::VQFFilter | Adapter around the vendored VQF algorithm (Daniel Laidig, MIT license; see src/imu/filter/third_party/vqf) |
| Cm5::imu::AxisOrder | Chip-frame-to-body-frame axis remap: a permutation plus a per-output-axis sign flip |
| Cm5::imu::AhrsController::calibration_data_t | Exportable/importable snapshot of every capability's auto-calibration offset |
| ▼CComponent | |
| Cm5::unit::UnitAK8963 | 3-axis magnetometer unit. No standalone GROVE unit exists; it is the magnetometer embedded in the MPU9250 found on early classic M5Stack Core/Fire boards, reachable at 0x0C once the MPU9250's I2C bypass is enabled (see m5::unit::imu::enableAuxBypass) |
| ▼Cm5::unit::UnitBMI270 | 6-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in |
| Cm5::unit::UnitBMI270AuxBMM150 | BMI270 that switches on its auxiliary (AUX) interface and drives a BMM150 through it |
| Cm5::unit::UnitBMM150 | 3-axis magnetometer unit. No standalone GROVE unit exists for this chip; it is found built into some boards (e.g. classic M5Stack Core/Fire, paired with MPU6886) and as the auxiliary sensor of UnitBMI270 |
| Cm5::unit::UnitBMM350 | 3-axis magnetometer unit (U231, GROVE) |
| Cm5::unit::UnitDoF10 | Unit DoF10: BMI270 + BMM350 + SPA06, all directly on the GROVE main bus (no AUX bypass). The BMI270 address is SW1-selectable (0x68 default / 0x69); pass it to the constructor (e.g. from bmi270::detectAddress). BMM350 is fixed at 0x14, SPA06 is fixed at 0x76. Add imu() and mag() to an AhrsController; read baro() directly (not AHRS-fused) |
| Cm5::unit::UnitDoF9 | Unit DoF9: BMI270 + BMM350, both directly on the GROVE main bus (no AUX bypass). The BMI270 address is SW1-selectable (0x68 default / 0x69); pass it to the constructor (e.g. from bmi270::detectAddress). BMM350 is fixed at 0x14. Add imu() and mag() to an AhrsController |
| Cm5::unit::UnitMAG3110 | NXP/Freescale MAG3110 3-axis magnetometer. No standalone GROVE unit exists; it is the magnetometer on the original (2017) classic M5Stack Gray (paired with an MPU6050). It sits directly on the host I2C bus at 0x0E (no aux bypass needed, unlike the MPU9250's AK8963) |
| ▼Cm5::unit::UnitMPU6xxx | Shared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp) |
| Cm5::unit::UnitMPU6050 | TDK InvenSense MPU-6050 6-axis IMU (accel + gyro + temp). WHO_AM_I 0x68 |
| ▼Cm5::unit::UnitMPU6500 | TDK InvenSense MPU-6500 6-axis core (accel + gyro + temp) |
| Cm5::unit::UnitMPU9250 | TDK InvenSense MPU-9250 9-axis IMU. Accel/gyro/temp (this unit itself) + AK8963 mag (mag()) |
| Cm5::unit::UnitMPU6886 | TDK InvenSense MPU-6886 6-axis IMU (accel + gyro + temp). WHO_AM_I 0x19 |
| Cm5::unit::UnitMiniIMUPro | Unit Mini IMU-Pro (U171): BMI270 (0x68, fixed – no address switch) + BMP280 (0x76) on the GROVE main bus, with a BMM150 magnetometer wired to the BMI270's AUX interface (ASDX/ASCX), not to the main bus. The predecessor of Unit DoF9/DoF10, with a BMM150/BMP280 instead of the BMM350/SPA06 |
| Cm5::unit::UnitSH200Q | Senodia SH200Q 6-axis IMU (accel + gyro + temp). No standalone GROVE unit exists; it is the built-in IMU of the earliest (2019.3) M5StickC and of the 2019.7 M5Stack Fire (there paired with a discrete BMM150 magnetometer), on the internal I2C bus at 0x6C |
| Cm5::unit::UnitAK8963::config_t | Settings for begin() |
| ▼Cm5::unit::UnitBMI270::config_t | Settings for begin() |
| Cm5::unit::UnitBMI270AuxBMM150::config_t | Settings for begin(), extending the base with the magnetometer's own |
| Cm5::unit::UnitBMM150::config_t | Settings for begin() |
| Cm5::unit::UnitBMM350::config_t | Settings for begin() |
| Cm5::unit::UnitMAG3110::config_t | Settings for begin() |
| Cm5::unit::UnitMPU6xxx::config_t | Settings for begin() |
| Cm5::unit::UnitSH200Q::config_t | Settings for begin() |
| Cm5::unit::ak8963::Data | One AK8963 sample: an 8-byte burst from ST1 (0x02) plus the device ASA trim |
| Cm5::unit::bmi270::Data | One measurement. Accel/gyro are always 12 bytes, little-endian (register 0x0C when the AUX/BMM150 bridge is not in use, or bytes [8..19] of the 20 byte burst from register 0x04 when it is; see UnitBMI270::read_measurement()) |
| Cm5::unit::bmm150::Data | One measurement (8 bytes burst from REG_DATA_X_LSB, register 0x42) |
| Cm5::unit::bmm350::Data | One measurement (12 bytes burst from REG_MAG_X_XLSB, register 0x31): 9 bytes magnetometer (X,Y,Z, 24bit little-endian each) followed by 3 bytes temperature (24bit little-endian) |
| Cm5::unit::mag3110::Data | One MAG3110 sample: a 7-byte burst from DR_STATUS (0x00) |
| Cm5::unit::mpu6886::Data | One measurement (14 bytes burst from REG_ACCEL_XOUT_H, big-endian) |
| Cm5::unit::sh200q::Data | One measurement (14 bytes burst from REG_OUTPUT, little-endian – NOT the MPU byte order) |
| Cm5::imu::AhrsImu::imu_3d_t | 3-axis float vector, layout-compatible with m5::IMU_Class::imu_3d_t |
| Cm5::imu::imu_convert_param_t | Raw to physical unit conversion coefficients |
| Cm5::imu::AhrsImu::imu_data_t | Merged accel/gyro/mag sample, layout-compatible with m5::IMU_Class::imu_data_t |
| Cm5::imu::imu_physical_data_t | Merged, converted physical-unit IMU sample (AhrsController::latest()) |
| Cm5::imu::imu_raw_data_t | Unified raw data (chip-native axes, no remap applied) |
| ▼Cm5::imu::IMUDataSource | Thin contract between measurement units and consumers (e.g. AHRS) |
| Cm5::unit::UnitAK8963 | 3-axis magnetometer unit. No standalone GROVE unit exists; it is the magnetometer embedded in the MPU9250 found on early classic M5Stack Core/Fire boards, reachable at 0x0C once the MPU9250's I2C bypass is enabled (see m5::unit::imu::enableAuxBypass) |
| Cm5::unit::UnitBMI270 | 6-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in |
| Cm5::unit::UnitBMM150 | 3-axis magnetometer unit. No standalone GROVE unit exists for this chip; it is found built into some boards (e.g. classic M5Stack Core/Fire, paired with MPU6886) and as the auxiliary sensor of UnitBMI270 |
| Cm5::unit::UnitBMM350 | 3-axis magnetometer unit (U231, GROVE) |
| Cm5::unit::UnitMAG3110 | NXP/Freescale MAG3110 3-axis magnetometer. No standalone GROVE unit exists; it is the magnetometer on the original (2017) classic M5Stack Gray (paired with an MPU6050). It sits directly on the host I2C bus at 0x0E (no aux bypass needed, unlike the MPU9250's AK8963) |
| Cm5::unit::UnitMPU6xxx | Shared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp) |
| Cm5::unit::UnitSH200Q | Senodia SH200Q 6-axis IMU (accel + gyro + temp). No standalone GROVE unit exists; it is the built-in IMU of the earliest (2019.3) M5StickC and of the 2019.7 M5Stack Fire (there paired with a discrete BMM150 magnetometer), on the internal I2C bus at 0x6C |
| Cm5::math::Matrix< R, C > | Fixed-size (R rows x C columns) float matrix, std::array backed (no heap allocation) |
| Cm5::math::Matrix< 7, 7 > | |
| Cm5::unit::bmm350::otp_compensation_t | Per-chip OTP compensation coefficients (read out at boot from the sensor's one-time-programmable memory), consumed by compensate_temp() and compensate_mag(). All-zero (default-constructed, aside from t0) is a neutral / pass-through configuration |
| ▼CPeriodicMeasurementAdapter | |
| Cm5::unit::UnitAK8963 | 3-axis magnetometer unit. No standalone GROVE unit exists; it is the magnetometer embedded in the MPU9250 found on early classic M5Stack Core/Fire boards, reachable at 0x0C once the MPU9250's I2C bypass is enabled (see m5::unit::imu::enableAuxBypass) |
| Cm5::unit::UnitBMI270 | 6-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in |
| Cm5::unit::UnitBMM150 | 3-axis magnetometer unit. No standalone GROVE unit exists for this chip; it is found built into some boards (e.g. classic M5Stack Core/Fire, paired with MPU6886) and as the auxiliary sensor of UnitBMI270 |
| Cm5::unit::UnitBMM350 | 3-axis magnetometer unit (U231, GROVE) |
| Cm5::unit::UnitMAG3110 | NXP/Freescale MAG3110 3-axis magnetometer. No standalone GROVE unit exists; it is the magnetometer on the original (2017) classic M5Stack Gray (paired with an MPU6050). It sits directly on the host I2C bus at 0x0E (no aux bypass needed, unlike the MPU9250's AK8963) |
| Cm5::unit::UnitMPU6xxx | Shared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp) |
| Cm5::unit::UnitSH200Q | Senodia SH200Q 6-axis IMU (accel + gyro + temp). No standalone GROVE unit exists; it is the built-in IMU of the earliest (2019.3) M5StickC and of the 2019.7 M5Stack Fire (there paired with a discrete BMM150 magnetometer), on the internal I2C bus at 0x6C |
| Cm5::math::Quaternion | Plain Hamilton quaternion (float) used to represent attitude |
| Cm5::unit::bmm150::trim_t | Factory trim (calibration) values read from registers 0x5D-0x71, consumed by the compensation formulas in Data::comp_x()/comp_y()/comp_z() |
| Cm5::math::Vector3 | Plain 3D vector (float) |