2.0 New Estimation Framework

Release 2.0 introduces a new, composable foundation for spacecraft attitude estimation. The new APIs make state layouts, uncertainty representations, measurements, and process models explicit while keeping the estimator implementations interchangeable.

Advanced MEKF gyro-bias and lumped-disturbance estimation results.

State class

The new State class represents the physical spacecraft state with named w (angular velocity), q (attitude quaternion), and h (reaction-wheel momentum) fields. It provides explicit conversions between full and local/tangent coordinates, quaternion retraction and state differences, validation, copying, and support for configurable attitude charts. EstimatorState extends it with estimated bias and disturbance-parameter blocks and their covariance data.

Covariance class

The new Covariance class provides a common interface for full covariance matrices and upper-triangular square-root factors. It handles positive-semidefinite validation, conversion between representations, coordinate labels, and the matrix operations used by both covariance-form and square-root filters.

Measurement stack

The new MeasurementStack assembles sensor and reaction-wheel measurements into one canonical estimator vector. It owns source ordering, availability and scheduling masks, residual coordinates, covariances, and measurement Jacobians. Quaternion measurements are reduced to their three-dimensional local residual, and augmented estimators can consistently include sensor-bias terms.

Process model and process noise

The new estimator process model centralizes deterministic state propagation in propagate_state(). The process-noise utilities assemble continuous-time noise from unmodeled dynamics and configured hardware random walks, construct the local error-state model, and discretize it with the Van Loan method; held actuator-command noise is handled separately. UKF/SRUKF propagate it through control sigma points, while linearized filters include it in the discrete process covariance. This keeps the physical model independent of the filter.

New AttitudeEstimator base

The new AttitudeEstimator base class defines the shared estimator lifecycle: state validation, prediction, measurement updates, diagnostics, covariance handling, and quaternion-chart conventions. The existing legacy old_attitude_estimators.Attitude_Estimator remains available for backwards compatibility, while new filters use the new base.

Eight new attitude estimators

The following estimators are available from the top-level ADCS package:

  • EKF — additive Extended Kalman Filter.

  • MEKF — multiplicative Extended Kalman Filter with a local attitude error.

  • UKF — Unscented Kalman Filter.

  • SRUKF — square- root Unscented Kalman Filter.

  • AugmentedEKF — EKF with joint bias and disturbance-parameter estimation.

  • AugmentedMEKF — augmented multiplicative EKF.

  • AugmentedUKF — augmented UKF.

  • AugmentedSRUKF — augmented square-root UKF.

Documentation and examples

The estimation tutorials and runnable estimator examples are linked directly from the release documentation:

Regular estimator examples:

Advanced estimator examples: