ADCS.estimators.process_noise module

Shared continuous-time process-noise construction for attitude estimators.

The functions in this module deliberately operate on EstimatorState’s named layout. They are filter-neutral: an EKF can use the returned error-state Jacobian directly, while any future sigma-point estimator can reuse the same Van Loan covariance discretization.

ADCS.estimators.process_noise.assemble_continuous_process_psd(state, satellite, *, unmodeled_dynamics_psd=0.0, quaternion_mode='quaternion_vector')[source]

Assemble chart-local continuous PSD \(Q_c\) from the state layout.

unmodeled_dynamics_psd applies to the physical local state [angular_velocity, attitude, wheel_momentum] and accepts a scalar, a diagonal vector, or a full PSD matrix. Bias and disturbance blocks are populated from their configured hardware random-walk rates. The returned coordinates match quaternion_mode.

Parameters:
  • state (EstimatorState)

  • satellite (Any)

  • unmodeled_dynamics_psd (Any)

  • quaternion_mode (str)

Return type:

ndarray

ADCS.estimators.process_noise.continuous_error_state_model(state, satellite, control, orbital_state, *, unmodeled_dynamics_psd=0.0, quaternion_mode='quaternion_vector', quaternion_order='right')[source]

Build shared continuous-time (F, Qc) for an estimator prediction.

Parameters:
  • state (EstimatorState)

  • satellite (Any)

  • control (ndarray)

  • orbital_state (Any)

  • unmodeled_dynamics_psd (Any)

  • quaternion_mode (str)

  • quaternion_order (str)

Return type:

tuple[ndarray, ndarray]

ADCS.estimators.process_noise.discretize_process_noise(state, satellite, control, orbital_state, dt, **kwargs)[source]

Build and Van Loan-discretize the shared attitude process-noise model.

The returned transition \(\Phi\) is chart-local at state.

Parameters:
  • state (EstimatorState)

  • satellite (Any)

  • control (ndarray)

  • orbital_state (Any)

  • dt (float)

  • kwargs (Any)

Return type:

tuple[ndarray, ndarray]

ADCS.estimators.process_noise.error_state_transfer(state, satellite, control, orbital_state, *, quaternion_mode='quaternion_vector', quaternion_order='right')[source]

Return the continuous local error-state transfer matrix F.

F is chart-local at state; it must be rebuilt after the estimate’s linearization point or quaternion chart changes. Because the quaternion tangent map moves with the nominal attitude, the returned matrix includes the chart-motion term G_dot.

EstimatedSatellite.dynJacCore stores derivative variables in rows and derivative outputs in columns. This function converts that historical convention to the conventional column-error matrix before augmenting it with random-walk states and reducing quaternion coordinates through EstimatorState.tangent_map and tangent_pinv.

Parameters:
  • state (EstimatorState)

  • satellite (Any)

  • control (ndarray)

  • orbital_state (Any)

  • quaternion_mode (str)

  • quaternion_order (str)

Return type:

ndarray

ADCS.estimators.process_noise.van_loan_discretize(transfer, continuous_psd, dt, *, noise_input=None)[source]

Discretize xdot = F x + L w with Van Loan’s matrix exponential.

continuous_psd is Q_c in noise coordinates; omitting noise_input uses L=I and therefore accepts state-space PSDs assembled by assemble_continuous_process_psd().

Parameters:
  • transfer (Any)

  • continuous_psd (Any)

  • dt (float)

  • noise_input (Any | None)

Return type:

tuple[ndarray, ndarray]