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)[source]
Bases:
stonesoup.metricgenerator.base.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 tracktransition_model (
TransitionModel
) – The transition model used to propagate the track’s statemeasurement_model (
MeasurementModel
) – The measurement model that projects a track into measurement space (and vice versasensor_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 modelmappingvelocity_mapping (
Sequence[int]
, optional) – Mapping for velocity coordinates. Default None, in which case velocity RMSE is not computedirf (
float
, optional) – Information reduction factor. Default is 1
- prior: stonesoup.types.state.GaussianState
The prior used to initiate the track
- transition_model: stonesoup.models.transition.base.TransitionModel
The transition model used to propagate the track’s state
- measurement_model: stonesoup.models.measurement.base.MeasurementModel
The measurement model that projects a track into measurement space (and vice versa
- sensor_locations: stonesoup.types.array.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
- 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