#ifndef FUSION_IMU_QUALITY_H #define FUSION_IMU_QUALITY_H #include #define FUSION_IMU_QUALITY_AXIS_COUNT 3u /* * Hardware-neutral IMU characteristics. The nominal noise fields describe * the sensor/board measurement stream. The process-noise fields are the * deliberately conservative values used by the ESKF and may include timing, * mounting, calibration and temperature uncertainty in addition to white * sensor noise. */ typedef struct { const char* name; double nominal_accel_noise_density_mps2_sqrt_hz[FUSION_IMU_QUALITY_AXIS_COUNT]; double nominal_gyro_noise_density_rps_sqrt_hz[FUSION_IMU_QUALITY_AXIS_COUNT]; double process_accel_noise_density_mps2_sqrt_hz[FUSION_IMU_QUALITY_AXIS_COUNT]; double process_gyro_noise_density_rps_sqrt_hz[FUSION_IMU_QUALITY_AXIS_COUNT]; double accel_bias_random_walk_mps2_sqrt_s[FUSION_IMU_QUALITY_AXIS_COUNT]; double gyro_bias_random_walk_rps_sqrt_s[FUSION_IMU_QUALITY_AXIS_COUNT]; double calibration_accel_std_limit_mps2; double calibration_gyro_std_limit_rps; double zero_gyro_measurement_std_rps[FUSION_IMU_QUALITY_AXIS_COUNT]; } fusion_imu_quality_profile_t; void fusion_imu_quality_default(fusion_imu_quality_profile_t* profile); bool fusion_imu_quality_is_valid(const fusion_imu_quality_profile_t* profile); #endif