Skip to content

Common Types

Configuration, observation, and record types used by the estimation filters.


Observation

Observation(epoch: Any, measurement: Any, model_index: Any = 0)

A single observation (measurement) at a specific epoch.

Example
1
2
3
4
import brahe as bh
import numpy as np

obs = bh.Observation(epoch, np.array([6878e3, 0.0, 0.0]), model_index=0)

Initialize instance.

epoch property

epoch: Epoch

Epoch of this observation.

Returns:

Name Type Description
Epoch Epoch

Observation time.

measurement property

measurement: ndarray

Measurement vector.

Returns:

Type Description
ndarray

numpy.ndarray: Measurement vector.

model_index property

model_index: int

Index into the estimator's measurement model list.

Returns:

Name Type Description
int int

Model index.


FilterRecord

FilterRecord()

Record of a single filter update step.

Contains pre-fit and post-fit states, covariances, residuals, and Kalman gain.

Initialize instance.

covariance_predicted property

covariance_predicted: ndarray

Covariance before measurement update (after prediction).

Returns:

Type Description
ndarray

numpy.ndarray: Predicted covariance matrix.

covariance_updated property

covariance_updated: ndarray

Covariance after measurement update.

Returns:

Type Description
ndarray

numpy.ndarray: Updated covariance matrix.

epoch property

epoch: Epoch

Epoch of this record.

Returns:

Name Type Description
Epoch Epoch

Record epoch.

kalman_gain property

kalman_gain: ndarray

Kalman gain matrix.

Returns:

Type Description
ndarray

numpy.ndarray: Kalman gain matrix.

measurement_name property

measurement_name: str

Measurement model name.

Returns:

Name Type Description
str str

Name of the measurement model used.

postfit_residual property

postfit_residual: ndarray

Post-fit residual: z - h(x_updated).

Returns:

Type Description
ndarray

numpy.ndarray: Post-fit residual vector.

prefit_residual property

prefit_residual: ndarray

Pre-fit residual: z - h(x_predicted).

Returns:

Type Description
ndarray

numpy.ndarray: Pre-fit residual vector.

state_predicted property

state_predicted: ndarray

State before measurement update (after prediction).

Returns:

Type Description
ndarray

numpy.ndarray: Predicted state vector.

state_updated property

state_updated: ndarray

State after measurement update.

Returns:

Type Description
ndarray

numpy.ndarray: Updated state vector.


EKFConfig

EKFConfig(process_noise: Any = None, store_records: Any = True)

Configuration for the Extended Kalman Filter.

Example
1
2
3
4
5
import brahe as bh
import numpy as np

config = bh.EKFConfig()  # Defaults
config = bh.EKFConfig(process_noise=bh.ProcessNoiseConfig(np.eye(6) * 1e-6))

Initialize instance.

store_records property

store_records: bool

Whether filter records are stored.

Returns:

Name Type Description
bool bool

True if records are stored.

default staticmethod

default() -> EKFConfig

Create a default EKF configuration.

Returns:

Name Type Description
EKFConfig EKFConfig

Default configuration (no process noise, records stored).


ProcessNoiseConfig

ProcessNoiseConfig(q_matrix: Any, scale_with_dt: Any = False)

Process noise configuration for sequential filters.

Controls how process noise Q is applied to the predicted covariance.

Example
1
2
3
4
5
import brahe as bh
import numpy as np

q = np.diag([1e-6]*3 + [1e-8]*3)
pn = bh.ProcessNoiseConfig(q, scale_with_dt=True)

Initialize instance.

q_matrix property

q_matrix: ndarray

Get the process noise matrix Q.

Returns:

Type Description
ndarray

numpy.ndarray: Process noise matrix (state_dim x state_dim).

scale_with_dt property

scale_with_dt: bool

Whether Q scales with the time step.

Returns:

Name Type Description
bool bool

True if continuous-time model.


MeasurementModel

MeasurementModel(_args: Any, _kwargs: Any)

Base class for Python-defined measurement models.

Subclass this to define custom measurement models that work with the EKF. You must implement predict(), noise_covariance(), measurement_dim(), and name(). Override jacobian() to provide an analytical Jacobian; return None to use automatic finite-difference computation.

Example
import brahe as bh
import numpy as np

class RangeModel(bh.MeasurementModel):
    def __init__(self, station_ecef, sigma):
        super().__init__()
        self.station_ecef = np.array(station_ecef)
        self.sigma = sigma

    def predict(self, epoch, state):
        pos = state[:3]
        return np.array([np.linalg.norm(pos - self.station_ecef)])

    def noise_covariance(self):
        return np.array([[self.sigma**2]])

    def measurement_dim(self):
        return 1

    def name(self):
        return "Range"

    # jacobian() not overridden - uses automatic finite differences

Initialize instance.

jacobian method descriptor

jacobian(epoch: Epoch, state: ndarray) -> ndarray

Compute measurement Jacobian H = dh/dx.

Override this method to provide an analytical Jacobian. Return None to use automatic finite-difference computation.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray or None: Jacobian matrix, or None for finite-diff.

measurement_dim method descriptor

measurement_dim() -> int

Get measurement vector dimension.

Override this method in your subclass.

Returns:

Name Type Description
int int

Measurement dimension.

name method descriptor

name() -> str

Get human-readable model name.

Override this method in your subclass.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get measurement noise covariance R.

Override this method in your subclass.

Returns:

Type Description
ndarray

numpy.ndarray: Noise covariance matrix (m x m).

predict method descriptor

predict(epoch: Epoch, state: ndarray) -> ndarray

Compute predicted measurement from state.

Override this method in your subclass.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Predicted measurement vector.

See Also