diff --git a/stonesoup/sensor/radar/radar.py b/stonesoup/sensor/radar/radar.py index ba323fb26..1be4430a0 100644 --- a/stonesoup/sensor/radar/radar.py +++ b/stonesoup/sensor/radar/radar.py @@ -196,6 +196,12 @@ def measure(self, ground_truths: Set[GroundTruthState], noise: Union[np.ndarray, groundtruth_path=truth) detections.add(detection) + # Generate clutter at this time step + if self.clutter_model is not None: + self.clutter_model.measurement_model = measurement_model + clutter = self.clutter_model.function(ground_truths) + detections = set.union(detections, clutter) + return detections diff --git a/stonesoup/sensor/radar/tests/test_radar.py b/stonesoup/sensor/radar/tests/test_radar.py index 2f56367b0..f5befd46c 100644 --- a/stonesoup/sensor/radar/tests/test_radar.py +++ b/stonesoup/sensor/radar/tests/test_radar.py @@ -678,8 +678,18 @@ def test_target_rcs(): position_mapping=[0, 2, 4], noise_covar=np.eye(3)), ((-50, 50), (-50, 50), (-50, 50))), + (RadarRotatingBearingRange(ndim_state=4, + position_mapping=[0, 2], + noise_covar=np.array([[np.radians(0.5) ** 2, 0], + [0, 1 ** 2]]), + position=np.array([[0], [1]]), + rpm=60, + fov_angle=np.radians(30), + dwell_centre=StateVector([0.0]), + max_range=np.inf), + ((-50, 50), (-50, 50))) ], - ids=["RadarBearingRange", "RadarElevationBearingRange"] + ids=["RadarBearingRange", "RadarElevationBearingRange", "RadarRotatingBearingRange"] ) def test_clutter_model(radar, clutter_params): # Test that the radar correctly adds clutter when it has a clutter