M5Unit-IMU 0.0.2 git rev:e5b00aa
Loading...
Searching...
No Matches
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 1234]
 ▼Cm5::imu::AhrsControllerMerges up to 4 IMUDataSource instances by capability and fuses their samples into an attitude estimate via a pluggable AhrsFilterBase
 Cm5::imu::AhrsImuAhrsController plus an M5Unified IMU_Class-compatible API
 ▼Cm5::imu::AhrsFilterBaseFramework-independent contract shared by every AHRS attitude filter
 Cm5::imu::ComplementaryFilterAngle-based first-order complementary filter
 Cm5::imu::EKFFilterQuaternion extended Kalman filter (EKF) with gyro bias estimation
 Cm5::imu::FusionFilterAdapter around the vendored x-io Fusion AHRS algorithm (x-io Technologies, MIT license; see src/imu/filter/third_party/fusion)
 Cm5::imu::MadgwickFilterGradient-descent orientation filter (Madgwick 2010)
 Cm5::imu::MahonyFilterExplicit complementary filter with proportional-integral feedback (Mahony et al. 2008)
 Cm5::imu::VQFFilterAdapter around the vendored VQF algorithm (Daniel Laidig, MIT license; see src/imu/filter/third_party/vqf)
 Cm5::imu::AxisOrderChip-frame-to-body-frame axis remap: a permutation plus a per-output-axis sign flip
 Cm5::imu::AhrsController::calibration_data_tExportable/importable snapshot of every capability's auto-calibration offset
 ▼CComponent
 Cm5::unit::UnitAK89633-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::UnitBMI2706-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in
 Cm5::unit::UnitBMI270AuxBMM150BMI270 that switches on its auxiliary (AUX) interface and drives a BMM150 through it
 Cm5::unit::UnitBMM1503-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::UnitBMM3503-axis magnetometer unit (U231, GROVE)
 Cm5::unit::UnitDoF10Unit 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::UnitDoF9Unit 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::UnitMAG3110NXP/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::UnitMPU6xxxShared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp)
 Cm5::unit::UnitMPU6050TDK InvenSense MPU-6050 6-axis IMU (accel + gyro + temp). WHO_AM_I 0x68
 ▼Cm5::unit::UnitMPU6500TDK InvenSense MPU-6500 6-axis core (accel + gyro + temp)
 Cm5::unit::UnitMPU9250TDK InvenSense MPU-9250 9-axis IMU. Accel/gyro/temp (this unit itself) + AK8963 mag (mag())
 Cm5::unit::UnitMPU6886TDK InvenSense MPU-6886 6-axis IMU (accel + gyro + temp). WHO_AM_I 0x19
 Cm5::unit::UnitMiniIMUProUnit 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::UnitSH200QSenodia 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_tSettings for begin()
 ▼Cm5::unit::UnitBMI270::config_tSettings for begin()
 Cm5::unit::UnitBMI270AuxBMM150::config_tSettings for begin(), extending the base with the magnetometer's own
 Cm5::unit::UnitBMM150::config_tSettings for begin()
 Cm5::unit::UnitBMM350::config_tSettings for begin()
 Cm5::unit::UnitMAG3110::config_tSettings for begin()
 Cm5::unit::UnitMPU6xxx::config_tSettings for begin()
 Cm5::unit::UnitSH200Q::config_tSettings for begin()
 Cm5::unit::ak8963::DataOne AK8963 sample: an 8-byte burst from ST1 (0x02) plus the device ASA trim
 Cm5::unit::bmi270::DataOne 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::DataOne measurement (8 bytes burst from REG_DATA_X_LSB, register 0x42)
 Cm5::unit::bmm350::DataOne 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::DataOne MAG3110 sample: a 7-byte burst from DR_STATUS (0x00)
 Cm5::unit::mpu6886::DataOne measurement (14 bytes burst from REG_ACCEL_XOUT_H, big-endian)
 Cm5::unit::sh200q::DataOne measurement (14 bytes burst from REG_OUTPUT, little-endian – NOT the MPU byte order)
 Cm5::imu::AhrsImu::imu_3d_t3-axis float vector, layout-compatible with m5::IMU_Class::imu_3d_t
 Cm5::imu::imu_convert_param_tRaw to physical unit conversion coefficients
 Cm5::imu::AhrsImu::imu_data_tMerged accel/gyro/mag sample, layout-compatible with m5::IMU_Class::imu_data_t
 Cm5::imu::imu_physical_data_tMerged, converted physical-unit IMU sample (AhrsController::latest())
 Cm5::imu::imu_raw_data_tUnified raw data (chip-native axes, no remap applied)
 ▼Cm5::imu::IMUDataSourceThin contract between measurement units and consumers (e.g. AHRS)
 Cm5::unit::UnitAK89633-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::UnitBMI2706-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in
 Cm5::unit::UnitBMM1503-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::UnitBMM3503-axis magnetometer unit (U231, GROVE)
 Cm5::unit::UnitMAG3110NXP/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::UnitMPU6xxxShared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp)
 Cm5::unit::UnitSH200QSenodia 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_tPer-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::UnitAK89633-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::UnitBMI2706-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in
 Cm5::unit::UnitBMM1503-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::UnitBMM3503-axis magnetometer unit (U231, GROVE)
 Cm5::unit::UnitMAG3110NXP/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::UnitMPU6xxxShared base for the TDK InvenSense MPU 6-axis family (accel + gyro + temp)
 Cm5::unit::UnitSH200QSenodia 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::QuaternionPlain Hamilton quaternion (float) used to represent attitude
 Cm5::unit::bmm150::trim_tFactory trim (calibration) values read from registers 0x5D-0x71, consumed by the compensation formulas in Data::comp_x()/comp_y()/comp_z()
 Cm5::math::Vector3Plain 3D vector (float)