ADCS.estimators.attitude_estimators.attitude_AugmentedSRUKF module

Square-root unscented attitude estimator with augmented parameter blocks.

1. Construct the augmented square-root estimate

Validate the augmented tangent-state layout and store its covariance as an upper square-root factor.

\[ \begin{align}\begin{aligned}\hat{\mathbf{x}}_a = [\hat{\boldsymbol{\omega}},\hat{\mathbf{q}},\hat{\mathbf{h}}, \hat{\mathbf{b}}_a,\hat{\mathbf{b}}_s,\hat{\mathbf{d}}]^T, \qquad \delta\mathbf{x}_a\in\mathbb{R}^{n_a}, \qquad n_a=6+n_h+n_{b_a}+n_{b_s}+n_d,\\\mathbf{P}_a=\mathbf{S}_a^{T}\mathbf{S}_a.\end{aligned}\end{align} \]

The nominal quaternion is retained separately from its three-coordinate right-attitude error in \(\delta\mathbf{x}_a\).

2. Generate and propagate augmented sigma points

Synchronize each sigma point’s bias and disturbance parameters into EstimatedSatellite before nonlinear propagation.

\[\lambda=\alpha^2(n_a+\kappa)-n_a,\qquad \gamma=\sqrt{n_a+\lambda},\qquad \boldsymbol{\xi}_i=\pm\gamma\mathbf{S}_{a,i,:}^{T}, \qquad \mathbf{X}_{i,k}^{+}=\hat{\mathbf{x}}_{a,k}^{+} \boxplus\boldsymbol{\xi}_i.\]

The central point has \(\boldsymbol{\xi}_0=\mathbf{0}\) and all weights use the augmented dimension \(n_a\).

3. Form square-root process statistics

Compute the weighted manifold mean and use QR/rank updates to incorporate augmented process noise into the predicted square-root covariance.

\[ \begin{align}\begin{aligned}\mathbf{X}_{i,k+1}^{-}= f_a(\mathbf{X}_{i,k}^{+},\mathbf{u}_k,\mathbf{o}_k,\mathbf{o}_{k+1},\Delta t), \qquad \sum_iW_i^{(m)} (\mathbf{X}_{i,k+1}^{-}\boxminus\hat{\mathbf{x}}_{a,k+1}^{-})=\mathbf{0}.\\\mathbf{P}_{a,k+1}^{-}= \sum_iW_i^{(c)}\mathbf{d}_{i,k}^{x}(\mathbf{d}_{i,k}^{x})^{T} +\mathbf{Q}_{d,a,k}^{model}+\mathbf{Q}_{d,a,k}^{state}, \qquad \mathbf{P}_{a,k+1}^{-}=\mathbf{S}_{a,k+1}^{-T}\mathbf{S}_{a,k+1}^{-}.\end{aligned}\end{align} \]

QR factorization and Cholesky rank updates/downdates construct \(\mathbf{S}_{a,k+1}^{-}\) without storing a full posterior covariance.

4. Predict sigma-point measurements

Form measurement deviations and state cross-covariances through the shared measurement stack.

\[ \begin{align}\begin{aligned}\mathbf{Z}_{i,k}=h(\mathbf{X}_{i,k}^{-},\mathbf{o}_k),\qquad \mathbf{d}_{i,k}^{z}=\mathbf{Z}_{i,k}\boxminus\hat{\mathbf{z}}_k,\\\mathbf{P}_{zz}=\sum_iW_i^{(c)}\mathbf{d}_{i,k}^{z} (\mathbf{d}_{i,k}^{z})^{T}+\mathbf{R}_k,\qquad \mathbf{P}_{xz}=\sum_iW_i^{(c)}\mathbf{d}_{i,k}^{x} (\mathbf{d}_{i,k}^{z})^{T}.\end{aligned}\end{align} \]

5. Apply the square-root unscented correction

Compute the gain and update the physical and augmented state blocks while preserving the square-root covariance representation.

\[ \begin{align}\begin{aligned}\mathbf{K}_k=\mathbf{P}_{xz}\mathbf{P}_{zz}^{-1},\qquad \delta\mathbf{x}_{a,k}=\mathbf{K}_k (\mathbf{z}_k\boxminus\hat{\mathbf{z}}_k),\\\mathbf{P}_{a,k,raw}^{+}=\mathbf{P}_{a,k}^{-}- \mathbf{K}_k\mathbf{P}_{zz}\mathbf{K}_k^{T} =\mathbf{S}_{a,k,raw}^{+T}\mathbf{S}_{a,k,raw}^{+}.\end{aligned}\end{align} \]

6. Retract the attitude and retain the augmented estimate

Keep the tangent chart and the square-root covariance for the next cycle.

\[ \begin{align}\begin{aligned}\mathbf{x}_{a,k}^{+}=\mathbf{x}_{a,k}^{-}\boxplus\delta\mathbf{x}_{a,k}, \qquad \mathbf{q}_k^{+}=\hat{\mathbf{q}}_k^{-} \otimes\phi^{-1}(\delta\boldsymbol{\theta}_k),\\\mathbf{P}_{a,k}^{+}=\mathbf{J}_{reset}\mathbf{P}_{a,k,raw}^{+} \mathbf{J}_{reset}^{T} =\mathbf{S}_{a,k}^{+T}\mathbf{S}_{a,k}^{+}.\end{aligned}\end{align} \]
class ADCS.estimators.attitude_estimators.attitude_AugmentedSRUKF.AugmentedSRUKF(satellite, state, *, dt, unmodeled_dynamics_psd=0.0, quaternion_mode='quaternion_vector', alpha=1.0, beta=2.0, kappa=0.0)[source]

Bases: SRUKF

SRUKF supporting sensor-bias and disturbance-parameter state blocks.

Parameters:
  • satellite (Any)

  • state (EstimatorState)

  • dt (float)

  • unmodeled_dynamics_psd (Any)

  • quaternion_mode (str)

  • alpha (float)

  • beta (float)

  • kappa (float)

supports_augmented_parameters = True