Skip to content

Measurement Models

Built-in measurement models for GPS-like observations in inertial and ECEF frames.

Inertial Frame Models


InertialPositionMeasurementModel

InertialPositionMeasurementModel(sigma: Any)

Inertial position measurement model (3D ECI position).

Directly observes [x, y, z] from the state vector with Gaussian noise.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> InertialPositionMeasurementModel

Create from a full 3x3 noise covariance matrix.

Allows specifying correlated measurement noise (off-diagonal terms).

Parameters:

Name Type Description Default
noise_cov ndarray

3x3 noise covariance matrix (meters²).

required

Returns:

Name Type Description
InertialPositionMeasurementModel InertialPositionMeasurementModel

New model instance.

Example
1
2
3
4
import brahe as bh
import numpy as np
cov = np.diag([100.0, 225.0, 400.0])
model = bh.InertialPositionMeasurementModel.from_covariance(cov)

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> InertialPositionMeasurementModel

Create from upper-triangular covariance elements.

Elements in row-major packed order: [c00, c01, c02, c11, c12, c22].

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (6 for 3x3).

required

Returns:

Name Type Description
InertialPositionMeasurementModel InertialPositionMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(sigma_x: float, sigma_y: float, sigma_z: float) -> InertialPositionMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
sigma_x float

X-axis position noise (meters).

required
sigma_y float

Y-axis position noise (meters).

required
sigma_z float

Z-axis position noise (meters).

required

Returns:

Name Type Description
InertialPositionMeasurementModel InertialPositionMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.


InertialVelocityMeasurementModel

InertialVelocityMeasurementModel(sigma: Any)

Inertial velocity measurement model (3D ECI velocity).

Directly observes [vx, vy, vz] from the state vector with Gaussian noise.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> InertialVelocityMeasurementModel

Create from a full 3x3 noise covariance matrix.

Parameters:

Name Type Description Default
noise_cov ndarray

3x3 noise covariance matrix ((m/s)²).

required

Returns:

Name Type Description
InertialVelocityMeasurementModel InertialVelocityMeasurementModel

New model instance.

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> InertialVelocityMeasurementModel

Create from upper-triangular covariance elements.

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (6 for 3x3).

required

Returns:

Name Type Description
InertialVelocityMeasurementModel InertialVelocityMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(sigma_x: float, sigma_y: float, sigma_z: float) -> InertialVelocityMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
sigma_x float

X-axis velocity noise (m/s).

required
sigma_y float

Y-axis velocity noise (m/s).

required
sigma_z float

Z-axis velocity noise (m/s).

required

Returns:

Name Type Description
InertialVelocityMeasurementModel InertialVelocityMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.


InertialStateMeasurementModel

InertialStateMeasurementModel(pos_sigma: Any, vel_sigma: Any)

Inertial state measurement model (6D ECI state).

Directly observes [x, y, z, vx, vy, vz] from the state vector with Gaussian noise.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> InertialStateMeasurementModel

Create from a full 6x6 noise covariance matrix.

Allows specifying correlated noise including position-velocity cross-correlations.

Parameters:

Name Type Description Default
noise_cov ndarray

6x6 noise covariance matrix.

required

Returns:

Name Type Description
InertialStateMeasurementModel InertialStateMeasurementModel

New model instance.

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> InertialStateMeasurementModel

Create from upper-triangular covariance elements.

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (21 for 6x6).

required

Returns:

Name Type Description
InertialStateMeasurementModel InertialStateMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(pos_sigma_x: float, pos_sigma_y: float, pos_sigma_z: float, vel_sigma_x: float, vel_sigma_y: float, vel_sigma_z: float) -> InertialStateMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
pos_sigma_x float

X position noise (meters).

required
pos_sigma_y float

Y position noise (meters).

required
pos_sigma_z float

Z position noise (meters).

required
vel_sigma_x float

X velocity noise (m/s).

required
vel_sigma_y float

Y velocity noise (m/s).

required
vel_sigma_z float

Z velocity noise (m/s).

required

Returns:

Name Type Description
InertialStateMeasurementModel InertialStateMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.

ECEF Frame Models


ECEFPositionMeasurementModel

ECEFPositionMeasurementModel(sigma: Any)

ECEF position measurement model (3D ECEF position from GNSS).

Internally converts ECI state to ECEF position.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> ECEFPositionMeasurementModel

Create from a full 3x3 noise covariance matrix.

Parameters:

Name Type Description Default
noise_cov ndarray

3x3 noise covariance matrix (meters²).

required

Returns:

Name Type Description
ECEFPositionMeasurementModel ECEFPositionMeasurementModel

New model instance.

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> ECEFPositionMeasurementModel

Create from upper-triangular covariance elements.

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (6 for 3x3).

required

Returns:

Name Type Description
ECEFPositionMeasurementModel ECEFPositionMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(sigma_x: float, sigma_y: float, sigma_z: float) -> EcefPositionMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
sigma_x float

X-axis position noise (meters).

required
sigma_y float

Y-axis position noise (meters).

required
sigma_z float

Z-axis position noise (meters).

required

Returns:

Name Type Description
EcefPositionMeasurementModel EcefPositionMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.


ECEFVelocityMeasurementModel

ECEFVelocityMeasurementModel(sigma: Any)

ECEF velocity measurement model (3D ECEF velocity from GNSS).

Internally converts ECI state to ECEF velocity.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> ECEFVelocityMeasurementModel

Create from a full 3x3 noise covariance matrix.

Parameters:

Name Type Description Default
noise_cov ndarray

3x3 noise covariance matrix ((m/s)²).

required

Returns:

Name Type Description
ECEFVelocityMeasurementModel ECEFVelocityMeasurementModel

New model instance.

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> ECEFVelocityMeasurementModel

Create from upper-triangular covariance elements.

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (6 for 3x3).

required

Returns:

Name Type Description
ECEFVelocityMeasurementModel ECEFVelocityMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(sigma_x: float, sigma_y: float, sigma_z: float) -> EcefVelocityMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
sigma_x float

X-axis velocity noise (m/s).

required
sigma_y float

Y-axis velocity noise (m/s).

required
sigma_z float

Z-axis velocity noise (m/s).

required

Returns:

Name Type Description
EcefVelocityMeasurementModel EcefVelocityMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.


ECEFStateMeasurementModel

ECEFStateMeasurementModel(pos_sigma: Any, vel_sigma: Any)

ECEF state measurement model (6D ECEF state from GNSS).

Internally converts ECI state to ECEF state.

Initialize instance.

from_covariance staticmethod

from_covariance(noise_cov: ndarray) -> ECEFStateMeasurementModel

Create from a full 6x6 noise covariance matrix.

Parameters:

Name Type Description Default
noise_cov ndarray

6x6 noise covariance matrix.

required

Returns:

Name Type Description
ECEFStateMeasurementModel ECEFStateMeasurementModel

New model instance.

from_upper_triangular staticmethod

from_upper_triangular(upper: ndarray) -> ECEFStateMeasurementModel

Create from upper-triangular covariance elements.

Parameters:

Name Type Description Default
upper ndarray

Upper-triangular elements (21 for 6x6).

required

Returns:

Name Type Description
ECEFStateMeasurementModel ECEFStateMeasurementModel

New model instance.

jacobian method descriptor

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

Compute measurement Jacobian H = dh/dx.

Parameters:

Name Type Description Default
epoch Epoch

Current epoch.

required
state ndarray

Current state vector.

required

Returns:

Type Description
ndarray

numpy.ndarray: Measurement Jacobian matrix (m x n).

measurement_dim method descriptor

measurement_dim() -> int

Get the measurement dimension.

Returns:

Name Type Description
int int

Measurement vector dimension.

name method descriptor

name() -> str

Get the measurement model name.

Returns:

Name Type Description
str str

Model name.

noise_covariance method descriptor

noise_covariance() -> ndarray

Get the measurement noise covariance matrix R.

Returns:

Type Description
ndarray

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

per_axis staticmethod

per_axis(pos_sigma_x: float, pos_sigma_y: float, pos_sigma_z: float, vel_sigma_x: float, vel_sigma_y: float, vel_sigma_z: float) -> EcefStateMeasurementModel

Create with per-axis noise.

Parameters:

Name Type Description Default
pos_sigma_x float

X position noise (meters).

required
pos_sigma_y float

Y position noise (meters).

required
pos_sigma_z float

Z position noise (meters).

required
vel_sigma_x float

X velocity noise (m/s).

required
vel_sigma_y float

Y velocity noise (m/s).

required
vel_sigma_z float

Z velocity noise (m/s).

required

Returns:

Name Type Description
EcefStateMeasurementModel EcefStateMeasurementModel

New model instance.

predict method descriptor

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

Compute predicted measurement from state.

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.

Covariance Matrix Helpers

Utility functions for constructing noise covariance matrices, usable with both built-in and custom measurement models.


isotropic_covariance builtin

isotropic_covariance(dim: int, sigma: float) -> ndarray

Create an isotropic covariance matrix: sigma^2 * I.

Builds a dim x dim diagonal matrix where every diagonal element is sigma^2.

Parameters:

Name Type Description Default
dim int

Matrix dimension.

required
sigma float

Standard deviation applied to all axes.

required

Returns:

Type Description
ndarray

numpy.ndarray: dim x dim diagonal covariance matrix.

Example
1
2
3
import brahe as bh
r = bh.isotropic_covariance(3, 10.0)
# r = diag([100, 100, 100])

diagonal_covariance builtin

diagonal_covariance(sigmas: ndarray) -> ndarray

Create a diagonal covariance matrix from per-axis standard deviations.

Each sigma value is squared to produce the corresponding diagonal element.

Parameters:

Name Type Description Default
sigmas ndarray

Array of standard deviations, one per axis.

required

Returns:

Type Description
ndarray

numpy.ndarray: n x n diagonal covariance matrix.

Example
1
2
3
4
import brahe as bh
import numpy as np
r = bh.diagonal_covariance(np.array([5.0, 10.0, 15.0]))
# r = diag([25, 100, 225])

See Also