Source code for ADCS.satellite_hardware.disturbances.disturbance

__all__ = ["Disturbance"]

from typing import List

[docs] class Disturbance: def __init__(self, estimate_dist: bool = False, estimated_vector_length: int = 0): r""" Base Class for Disturbance Models. This class defines the **common interface and configuration** for all disturbance models used in the spacecraft dynamics and attitude determination and control system (ADCS) framework. A disturbance represents any **non-commanded force or torque** acting on the spacecraft, such as magnetic dipole torques, aerodynamic drag, gravity gradient effects, or solar radiation pressure. Disturbance Estimation Concept ------------------------------ Disturbances may optionally be treated as **estimable parameters** within a state estimation framework (e.g., EKF, UKF). Let the spacecraft dynamics be written as .. math:: \dot{\mathbf{x}} = \mathbf{f}(\mathbf{x}, \mathbf{u}) + \mathbf{d}, where :math:`\mathbf{d}` represents a disturbance contribution. When disturbance estimation is enabled, the disturbance vector is augmented into the estimator state: .. math:: \mathbf{x}_\text{aug} = \begin{bmatrix} \mathbf{x} \\ \mathbf{d} \end{bmatrix}. The length of the disturbance subvector is specified by ``estimated_vector_length``. Design Intent ------------- This class is intended to be **subclassed**, not instantiated directly. Derived classes implement the physical disturbance model and optionally provide Jacobians and Hessians for use in estimation or optimization. :param estimate_dist: Enables augmentation of the disturbance into the estimator state vector. :type estimate_dist: bool :param estimated_vector_length: Length of the disturbance parameter vector to be estimated. :type estimated_vector_length: int :return: None :rtype: None """ self.estimate_dist = estimate_dist self.estimated_vector_length = estimated_vector_length