Clutter Models
- class stonesoup.models.clutter.ClutterModel(clutter_rate: float = 1.0, distribution: typing.Callable = <built-in method uniform of numpy.random._generator.Generator object>, dist_params: typing.Tuple = ((-200, 200), (-200, 200)), seed: typing.Optional[typing.Union[int, numpy.random.mtrand.RandomState]] = None)[source]
Bases:
stonesoup.models.base.Model
,abc.ABC
A model for generating sensor clutter (false alarms) according to a specified distribution in the state space relative to the sensor’s position.
Note
Instances of this class do not hold information about the measurement space until immediately before they are called to function. As such, the same
ClutterModel
object could be used with multiple differentMeasurementModel
as long as they operate in the same state space.- Parameters
clutter_rate (
float
, optional) – The average number of clutter points per time step. The actual number is Poisson distributeddistribution (
Callable
, optional) – A function which represents the distribution of the clutter over the measurement space. The function should return a single value (ie, do not use multivariate distributions).dist_params (
Tuple
, optional) – The required parameters for the clutter distribution function. The length of the list must be equal to the number of state dimensions and should be defined for use in Cartesian space.The default defines the space for a uniform distribution in 2D. The call np.array([self.distribution(*arg) for arg in self.dist_params]) must return a numpy array of length equal to the number of dimensions.seed (
Union[int, numpy.random.mtrand.RandomState, NoneType]
, optional) – Seed or state for random number generation. If defined as an integer, it will be used to create a numpy RandomState. Or it can be defined directly as a RandomState (useful if you want to pass one of the random state’s functions as thedistribution
).
- clutter_rate: float
The average number of clutter points per time step. The actual number is Poisson distributed
- distribution: Callable
A function which represents the distribution of the clutter over the measurement space. The function should return a single value (ie, do not use multivariate distributions).
- dist_params: Tuple
The required parameters for the clutter distribution function. The length of the list must be equal to the number of state dimensions and should be defined for use in Cartesian space.The default defines the space for a uniform distribution in 2D. The call np.array([self.distribution(*arg) for arg in self.dist_params]) must return a numpy array of length equal to the number of dimensions.
- seed: Optional[Union[int, numpy.random.mtrand.RandomState]]
Seed or state for random number generation. If defined as an integer, it will be used to create a numpy RandomState. Or it can be defined directly as a RandomState (useful if you want to pass one of the random state’s functions as the
distribution
).
- function(ground_truths: Set[GroundTruthState], **kwargs) Set[stonesoup.types.detection.Clutter] [source]
Use the defined distribution and parameters to create simulated clutter for the current time step. Return this clutter to the calling sensor so that it can be added to the measurements.
- Parameters
ground_truths (a set of
GroundTruthState
) – The truth states which exist at this time step.- Returns
The simulated clutter.
- Return type
set of
Clutter
- property ndim: int
Return the number of measurement dimensions or, if a measurement model has not yet been assigned, the number of state dimensions.
- jacobian(state, **kwargs)
Model jacobian matrix \(H_{jac}\)
- Parameters
state (
State
) – An input state- Returns
The model jacobian matrix evaluated around the given state vector.
- Return type
numpy.ndarray
of shape (ndim_meas
,ndim_state
)
- rvs(num_samples: int = 1, **kwargs) Union[stonesoup.types.array.StateVector, stonesoup.types.array.StateVectors] [source]
Must be implemented to properly inherit the parent Model.
- pdf(state1: State, state2: State, **kwargs) Union[stonesoup.types.numeric.Probability, numpy.ndarray] [source]
Must be implemented to properly inherit the parent Model.