SRIFB#

class SRIFB(propagator: Propagator | MissionSequence, measurements: MeasurementSpec, settings: FilterSettings, traj_name: str | None = None, traj_dir: str | None = None, overwrite_traj: bool = True)#

Bases: FilterOD

Square Root Information Filter — Batch (SRIFB) for spacecraft orbit determination.

The SRIFB is the batch counterpart of the sequential SRIF. All measurements across all epochs are accumulated at once in the square-root information domain without any intermediate time updates, so process noise (SNC/DMC) is not supported. It produces the same solution as the LSB normal-equation batch estimator but with superior numerical conditioning.

Algorithm

The SRIFB represents the accumulated information as the pair \((R_{xx},\, z_x)\), where \(R_{xx}\) is the upper-triangular Cholesky factor of the information matrix and \(z_x = R_{xx}\,\hat{x}_0\).

At each epoch \(t_k\), let \(\tilde{R}_k\) be the upper-triangular Cholesky factor of the measurement noise covariance \(R_k\) (so \(R_k = \tilde{R}_k^T \tilde{R}_k\)). The whitened observation equation

\[\tilde{R}_k^{-1} H_k\,\Phi_{k,0}\cdot\Delta x_0 \;=\; \tilde{R}_k^{-1} y_k\]

is appended below the running information block and the combined rectangular system is triangularized via a Householder QR decomposition:

\[\begin{split}\begin{bmatrix} R_{xx} & z_x \\ \tilde{R}_k^{-1} H_k\,\Phi_{k,0} & \tilde{R}_k^{-1} y_k \end{bmatrix} \xrightarrow{\;\text{QR}\;} \begin{bmatrix} \hat{R}_{xx} & \hat{z}_x \\ 0 & e_k \end{bmatrix}\end{split}\]

where \(e_k\) collects the normalized postfit residuals for epoch \(k\). After all \(K\) epochs are processed, the state deviation at \(t_0\) and its covariance are recovered as:

\[\hat{x}_0 = \hat{R}_{xx}^{-1}\,\hat{z}_x, \qquad \hat{P}_0 = \hat{R}_{xx}^{-1}\,\hat{R}_{xx}^{-T}.\]

The estimated deviation is then propagated forward to every measurement epoch via the stored STMs.

Numerical advantage over LSB

The LSB forms the normal matrix \(M = P_0^{-1} + \sum_k A_k^T R_k^{-1} A_k\) explicitly and inverts it, squaring the condition number of the problem. The SRIFB avoids this by working directly with the square root: each QR step is an orthogonal transformation that preserves the numerical rank of the information block throughout accumulation.

Schmidt consider parameters

The SRIFB supports the Schmidt consider-parameter extension. The consider Jacobian \(H_{c,k}\) is appended to each whitened measurement block before the QR step, and the resulting off-diagonal information block \(\hat{R}_{xc}\) encodes the cross-correlation between estimated and consider uncertainties. The posterior covariance is:

\[\hat{P}_0 = \hat{R}_{xx}^{-1}\,\hat{R}_{xx}^{-T} + S_{xc}\,P_{cc}\,S_{xc}^T\]

where \(S_{xc} = -\hat{R}_{xx}^{-1}\hat{R}_{xc}\) is the consider sensitivity matrix.

Process noise and stochastic parameters

Sequential process noise models such as SNC and DMC require intermediate time updates between measurement epochs and are therefore not supported in the purely batch formulation. Use SRIF or LKF when unmodelled accelerations must be compensated sequentially epoch by epoch.

A batch analogue can still be constructed through so-called “stochastics” or pseudo-epoch states, where empirical accelerations are represented as estimated solve-for parameters within the batch state vector. In this approach, first-order Gauss–Markov or piecewise-constant stochastic accelerations are parameterized over predefined intervals and estimated simultaneously with the orbital state.

Parameters:
  • propagator (Propagator or MissionSequence) – Defines the reference trajectory and STMs. A MissionSequence can be used for multi-leg trajectories with maneuver events.

  • measurements (MeasurementSpec) – Measurement specification object.

  • settings (FilterSettings) – Filter configuration. settings.process_noise must be None.

  • traj_name (str, optional) – Name for the trajectory BSP file. Auto-generated if None.

  • traj_dir (str, optional) – Directory for the trajectory BSP file.

  • overwrite_traj (bool, optional) – If True, overwrite any existing trajectory file.

Raises:
  • ValueError – If the initial covariance matrix is not positive definite (required for Cholesky factorisation).

  • NotImplementedError – If settings.process_noise is not None (process noise is not supported in the batch formulation; use SRIF or LKF).

Notes

Process noise (SNC/DMC) requires intermediate time updates and is therefore not supported in the batch formulation. Use SRIF or LKF when unmodelled accelerations must be compensated sequentially. For process-noise-free problems, SRIFB is the numerically preferred alternative to LSB.

See also

scarabaeus.LSB

Normal-equation batch estimator; same solution, less stable.

scarabaeus.SRIF

Sequential square-root information filter; supports process noise.

scarabaeus.FilterOD

Base class providing trajectory and measurement handling.

References

[1]

Tapley, B. D., Schutz, B. E., & Born, G. H. (2004).

Statistical Orbit Determination. Elsevier Academic Press. ISBN 978-0-12-683630-1.

[2]

Bierman, G. J. (1977).

Factorization Methods for Discrete Sequential Estimation. Academic Press. ISBN 978-0-12-097650-8.

Attributes:
DMC_flag

True when Dynamic Model Compensation (DMC) process noise is active.

SNC_flag

True when State Noise Compensation (SNC) process noise is active.

apriori_covariance_est

Apriori covariance restricted to the estimated parameter subspace.

covariance_analysis

True when running in covariance-analysis mode (no measurement updates).

covariance_consider_history

Consider-parameter covariance block at each epoch.

covariance_history

Posterior covariance \(\hat{P}_0\) propagated to each measurement epoch via the trajectory STMs.

flag_sequence

True for multi-leg (mission-sequence) trajectories.

has_consider

True if consider parameters are present in the state vector.

measurement_data

Container for all measurement datasets, residuals, and editing flags.

measurements

Measurement specification object passed at construction time.

n

Dimension of the estimated state vector.

postfit_residuals

Post-fit residuals from the batch solution, keyed by dataset name.

prefit_residuals

Pre-fit residuals \(y_k\), keyed by dataset name.

propagator

Propagator or ScenarioSetup used to build the reference trajectory.

settings

Filter configuration (covariance, process noise, output options).

state_deviation_history

State deviation \(\hat{x}_k\) propagated to each measurement epoch.

trajectory

Propagated reference trajectory stored in a SPICE BSP kernel with a companion JSON file for STMs and estimated parameters.

Methods

fit([traj_name, traj_dir, overwrite_traj, ...])

Perform iterative orbit determination with automatic convergence checking.

observability_test([print_obs, threshold, ...])

Compute the observability and information matrices for the current filter setup.

property covariance_consider_history: list#

Consider-parameter covariance block at each epoch. Empty list when no consider parameters are active.

property covariance_history: list#

Posterior covariance \(\hat{P}_0\) propagated to each measurement epoch via the trajectory STMs. Populated after calling fit().

property postfit_residuals: dict#

Post-fit residuals from the batch solution, keyed by dataset name. Populated after calling fit().

property prefit_residuals: dict#

Pre-fit residuals \(y_k\), keyed by dataset name. Populated after calling fit().

property state_deviation_history: list#

State deviation \(\hat{x}_k\) propagated to each measurement epoch. Populated after calling fit().