refactor(firmware): simplify configuration and diagnostics
This commit is contained in:
1 parent
ba9c97ed3b
commit
fdf82a5114
96 files changed
+1612
-2772
No files matched your search
@@ -1,6 +1,6 @@
|
||||
//! Fixed-size multiplicative error-state Kalman filter.
|
||||
|
||||
use kaptan_log::KaptanError;
|
||||
use kaptan_err_propagate::KaptanError;
|
||||
use kaptan_math::{Frd, MathError, Ned, Sensor, UnitQuaternion, Vector3, sqrt};
|
||||
use kaptan_time::Timestamp;
|
||||
|
||||
@@ -209,22 +209,31 @@ pub struct EstimatorHealth {
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, KaptanError)]
|
||||
pub enum PropagationError {
|
||||
/// An IMU observation was invalid or was not calibrated into FRD.
|
||||
#[kaptan_error(id = 8001)]
|
||||
InvalidImu,
|
||||
/// IMU source differs from the stream bound during stationary initialization.
|
||||
#[kaptan_error(id = 8002)]
|
||||
ImuSourceMismatch,
|
||||
/// IMU calibration differs from the stream bound during stationary initialization.
|
||||
#[kaptan_error(id = 8003)]
|
||||
ImuCalibrationMismatch,
|
||||
/// IMU sequence repeated or moved backwards within the bound stream.
|
||||
#[kaptan_error(id = 8004)]
|
||||
ReplayedImu,
|
||||
/// IMU measurement time did not advance strictly.
|
||||
#[kaptan_error(id = 8005)]
|
||||
NonMonotonicTimestamp,
|
||||
/// The interval exceeded the bounded propagation contract.
|
||||
#[kaptan_error(id = 8006)]
|
||||
ImuGapTooLarge,
|
||||
/// The IMU rate and interval exceed the bounded quaternion increment.
|
||||
#[kaptan_error(id = 8007)]
|
||||
RotationIncrementTooLarge,
|
||||
/// Input or resulting state was non-finite.
|
||||
#[kaptan_error(id = 8008)]
|
||||
NonFinite,
|
||||
/// The candidate state or covariance failed validation; reinitialize before reuse.
|
||||
#[kaptan_error(id = 8009)]
|
||||
FilterInvalid,
|
||||
}
|
||||
|
||||
@@ -232,33 +241,47 @@ pub enum PropagationError {
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, KaptanError)]
|
||||
pub enum FusionError {
|
||||
/// Observation is not at this filter's current history time.
|
||||
#[kaptan_error(id = 8101)]
|
||||
TimestampMismatch,
|
||||
/// Observation was device-invalid.
|
||||
#[kaptan_error(id = 8102)]
|
||||
InvalidObservation,
|
||||
/// Observation source does not identify the configured physical device.
|
||||
#[kaptan_error(id = 8103)]
|
||||
SourceMismatch,
|
||||
/// Observation frame does not match the configured extrinsics.
|
||||
#[kaptan_error(id = 8104)]
|
||||
FrameMismatch,
|
||||
/// Observation calibration revision does not match the configured transform.
|
||||
#[kaptan_error(id = 8105)]
|
||||
CalibrationMismatch,
|
||||
/// The fixed source-integrity table has no entry for this source.
|
||||
#[kaptan_error(id = 8106)]
|
||||
SourceCapacityExhausted,
|
||||
/// A source repeated or moved backwards from its accepted sequence stream.
|
||||
#[kaptan_error(id = 8107)]
|
||||
ReplayedObservation,
|
||||
/// This estimator profile has no terrain state.
|
||||
#[kaptan_error(id = 8108)]
|
||||
TerrainProfileRequired,
|
||||
/// Optical flow from an offset sensor needs a correlated IMU-noise update
|
||||
/// that this profile does not implement.
|
||||
#[kaptan_error(id = 8109)]
|
||||
UnsupportedOpticalFlowLeverArm,
|
||||
/// Measurement fails physical range or velocity plausibility bounds.
|
||||
#[kaptan_error(id = 8110)]
|
||||
Implausible,
|
||||
/// Range ray is too tilted or does not intersect terrain below the sensor.
|
||||
#[kaptan_error(id = 8111)]
|
||||
InvalidRangeGeometry,
|
||||
/// Innovation covariance was singular/non-finite.
|
||||
#[kaptan_error(id = 8112)]
|
||||
SingularInnovation,
|
||||
/// Innovation exceeds the configured chi-square gate.
|
||||
#[kaptan_error(id = 8113)]
|
||||
InnovationRejected,
|
||||
/// The candidate state or covariance failed validation; reinitialize before reuse.
|
||||
#[kaptan_error(id = 8114)]
|
||||
FilterInvalid,
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user