Posterior Cramér-Rao Bound (PCRB) Metric

class stonesoup.metricgenerator.pcrbmetric.PCRBMetric(prior: GaussianState, transition_model: TransitionModel, measurement_model: MeasurementModel, sensor_locations: StateVectors, position_mapping: Sequence[int] = None, velocity_mapping: Sequence[int] = None, irf: float = 1.0, truths_key: str = 'groundtruth_paths', generator_name: str = 'pcrb_generator')[source]

Bases: MetricGenerator

Computes the Posterior Cramer-Rao Bound (PCRB) [1] for a given ground truth prior, using a Riccati recursion [2]. PCRB provides a MSE bound on the performance of unbiased filtering algorithms.

Reference:

[1] M. L. Hernandez, B. Ristic and A. Farina, “A performance bound for maneuvering target tracking using best-fitting Gaussian distributions,” 2005 7th International Conference on Information Fusion, 2005, pp. 8 pp.-, doi: 10.1109/ICIF.2005.1591829. [2] P. Tichavsky, C. H. Muravchik and A. Nehorai, “Posterior Cramer-Rao bounds for discrete-time nonlinear filtering,” in IEEE Transactions on Signal Processing, vol. 46, no. 5, pp. 1386-1396, May 1998, doi: 10.1109/78.668800.

Parameters:
  • prior (GaussianState) – The prior used to initiate the track

  • transition_model (TransitionModel) – The transition model used to propagate the track’s state

  • measurement_model (MeasurementModel) – The measurement model that projects a track into measurement space (and vice versa

  • sensor_locations (StateVectors) – The locations of the sensors (currently assuming sensors are static)

  • position_mapping (Sequence[int], optional) – Mapping for position coordinates. Default None, which uses the measurement modelmapping

  • velocity_mapping (Sequence[int], optional) – Mapping for velocity coordinates. Default None, in which case velocity RMSE is not computed

  • irf (float, optional) – Information reduction factor. Default is 1

  • truths_key (str, optional) – Key to access set of ground truths added to MetricManager

  • generator_name (str, optional) – Unique identifier to use when accessing generated metrics from MultiManager

prior: GaussianState

The prior used to initiate the track

transition_model: TransitionModel

The transition model used to propagate the track’s state

measurement_model: MeasurementModel

The measurement model that projects a track into measurement space (and vice versa

sensor_locations: StateVectors

The locations of the sensors (currently assuming sensors are static)

velocity_mapping: Sequence[int]

Mapping for velocity coordinates. Default None, in which case velocity RMSE is not computed

irf: float

Information reduction factor. Default is 1

truths_key: str

Key to access set of ground truths added to MetricManager

generator_name: str

Unique identifier to use when accessing generated metrics from MultiManager

position_mapping: Sequence[int]

Mapping for position coordinates. Default None, which uses the measurement modelmapping

compute_metric(manager, **kwargs)[source]

Compute metric

Parameters:

manager (MetricManager) – containing the data to be used to create the metric(s)

Returns:

Generated metrics

Return type:

list of Metric objects