# 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: Model, 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 different MeasurementModel 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 distributed

• distribution (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 the distribution).

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, 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: , **kwargs) [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) [source]

Must be implemented to properly inherit the parent Model.

pdf(state1: State, state2: State, **kwargs) [source]

Must be implemented to properly inherit the parent Model.