Skip to content

Extended Kalman Filter

Sequential state estimator using linearized dynamics and measurement models.


ExtendedKalmanFilter

ExtendedKalmanFilter(epoch: Any, state: Any, initial_covariance: Any, propagation_config: Any, force_config: Any, measurement_models: Any, config: Any = None, params: Any = None, additional_dynamics: Any = None, control_input: Any = None)

Extended Kalman Filter for sequential state estimation.

Processes observations one at a time, propagating state and covariance between observation epochs using a numerical propagator. Supports both built-in and custom Python measurement models.

Example
import brahe as bh
import numpy as np

bh.initialize_eop()

epoch = bh.Epoch(2024, 1, 1, 0, 0, 0.0)
state = np.array([6878e3, 0.0, 0.0, 0.0, 7612.0, 0.0])
p0 = np.diag([1e6, 1e6, 1e6, 1e2, 1e2, 1e2])

ekf = bh.ExtendedKalmanFilter(
    epoch, state, p0,
    propagation_config=bh.NumericalPropagationConfig.default(),
    force_config=bh.ForceModelConfig.two_body_gravity(),
    measurement_models=[bh.InertialPositionMeasurementModel(10.0)],
)

Initialize instance.

current_covariance method descriptor

current_covariance() -> ndarray

Get current covariance estimate.

Returns:

Type Description
ndarray

numpy.ndarray or None: Current covariance matrix, or None if unavailable.

current_epoch method descriptor

current_epoch() -> Epoch

Get current epoch.

Returns:

Name Type Description
Epoch Epoch

Current filter epoch.

current_state method descriptor

current_state() -> ndarray

Get current state estimate.

Returns:

Type Description
ndarray

numpy.ndarray: Current state vector.

process_observation method descriptor

process_observation(observation: Observation) -> FilterRecord

Process a single observation.

Performs predict (propagate to observation epoch) then update (incorporate measurement).

Parameters:

Name Type Description Default
observation Observation

The observation to process.

required

Returns:

Name Type Description
FilterRecord FilterRecord

Record containing pre/post-fit residuals, Kalman gain, etc.

process_observations method descriptor

process_observations(observations: list[Observation]) -> Any

Process multiple observations (auto-sorted by epoch).

Parameters:

Name Type Description Default
observations list[Observation]

List of observations.

required

records method descriptor

records() -> list[FilterRecord]

Get all stored filter records.

Returns:

Type Description
list[FilterRecord]

list[FilterRecord]: List of filter records.

See Also

  • EKF Guide - Setup, processing, and diagnostics
  • Common Types - Observation, FilterRecord, configuration types