Skip to content

Unscented Kalman Filter

Sequential state estimator using sigma points to capture nonlinear dynamics without linearization.


UnscentedKalmanFilter

UnscentedKalmanFilter(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)

Unscented Kalman Filter for sequential state estimation.

Uses sigma points to propagate state statistics through nonlinear dynamics and measurement models without linearization. Does not require Jacobians or STM propagation.

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])

ukf = bh.UnscentedKalmanFilter(
    epoch, state, p0,
    propagation_config=bh.NumericalPropagationConfig.default(),
    force_config=bh.ForceModelConfig.two_body(),
    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: Current covariance matrix.

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.

Parameters:

Name Type Description Default
observation Observation

The observation to process.

required

Returns:

Name Type Description
FilterRecord FilterRecord

Record containing pre/post-fit residuals, 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.


UKFConfig

UKFConfig(state_dim: Any = 6, alpha: Any = 0.001, beta: Any = 2.0, kappa: Any = 0.0, process_noise: Any = None, store_records: Any = True)

Configuration for the Unscented Kalman Filter.

Example
import brahe as bh
config = bh.UKFConfig(state_dim=6, alpha=1e-3, beta=2.0, kappa=0.0)

Initialize instance.

alpha property

alpha: Any

beta property

beta: Any

kappa property

kappa: Any

state_dim property

state_dim: ndarray

store_records property

store_records: Any

default staticmethod

default() -> UKFConfig

Create a default UKF configuration.

Returns:

Name Type Description
UKFConfig UKFConfig

Default configuration (state_dim=6, alpha=1e-3, beta=2.0, kappa=0.0).

See Also

  • UKF Guide - Setup, sigma points, and EKF comparison
  • Common Types - Observation, FilterRecord, configuration types