Source code for ADCS.estimators.attitude_estimators.attitude_AugmentedEKF
r"""Additive EKF with joint bias and disturbance-parameter estimation.
.. container:: ekf-step ekf-step-input
**1. Construct the augmented full-state estimate**
Validate the physical state and append the configured actuator-bias,
sensor-bias, and disturbance-parameter blocks to the full-quaternion
covariance layout.
.. container:: ekf-step ekf-step-predict
**2. Propagate the augmented nominal state**
Synchronize the nominal augmented parameters into ``EstimatedSatellite``
and propagate the spacecraft state through the nonlinear dynamics.
.. container:: ekf-step ekf-step-linearize
**3. Linearize the augmented process model**
Build the physical, bias, and disturbance-parameter couplings and discretize
the continuous process noise.
.. container:: ekf-step ekf-step-covariance
**4. Predict the full covariance**
Apply :math:`P^- = \\Phi P^+ \\Phi^T + Q_d` in full quaternion coordinates.
.. container:: ekf-step ekf-step-measurement
**5. Predict measurements and form the innovation**
Use the shared measurement stack, including bias terms in the augmented
measurement model.
.. container:: ekf-step ekf-step-jacobian
**6. Form the augmented measurement Jacobian**
Include derivatives with respect to the physical state, sensor biases, and
disturbance parameters.
.. container:: ekf-step ekf-step-update
**7. Apply the Kalman correction**
Update the complete augmented estimate and covariance.
.. container:: ekf-step ekf-step-reset
**8. Normalize and retain the augmented state**
Normalize the quaternion and retain the estimated parameter blocks for the
next prediction.
"""
from __future__ import annotations
from .attitude_EKF import EKF
__all__ = ["AugmentedEKF"]
[docs]
class AugmentedEKF(EKF):
"""Additive EKF for the full :class:`~ADCS.state.EstimatorState` layout.
With empty augmented blocks this is equivalent to the existing ``EKF``.
When the estimated satellite and state provide bias or disturbance
parameter blocks, the shared full-quaternion covariance includes them in
the prediction and measurement update.
"""
supports_augmented_parameters = True