Main Content

Extended Object Tracking with Radar for Marine Surveillance in Simulink

This example shows how to model a marine scenario, simulate detections from a marine surveillance radar, and configure a multi-target probability hypothesis density (PHD) tracker to estimate the location and size of simulated ships using the radar detections in Simulink®. Simulink provides a powerful environment for the modeling and simulation of dynamic systems and processes. This example closely follows the Extended Object Tracking with Radar for Marine Surveillance MATLAB® example.

Overview of the model

Scenario Simulation

The scenario is created by using the trackingScenario object. The scenario has three target platforms and one tower platform. The radar is mounted on the tower platform 20 meters above sea level observing two boats maneuvering in the vicinity of a large ship. The radar stares into the harbor, surveying a 30-degree azimuth sector. The two boats are turning at 20 and 30 knots, whereas the large ship is traveling with a constant heading at 10 knots. See helper file getSimulationData for more details on the scenario.

You use the Tracking Scenario Reader block to read the scenario object from the MATLAB workspace and generate platform poses in the model. The block outputs platform poses as Simulink.Bus (Simulink) objects. You use the Fusion Radar Sensor block to model the radar sensor and configure the block with the following specifications for the marine surveillance radar:

  • Total angular field of view: 30 deg azimuth, 10 deg elevation

  • Azimuth resolution: 2 deg

  • Range resolution: 5 m

The Tracking Scenario Reader block generates platform poses in scenario frame and the Fusion Radar Sensor block requires poses in radar tower frame. You use the Scenario To Platform block to transform platform poses from scenario frame to radar tower frame before passing them to the radar block. You configure the block to transform platform poses with respect to the tower platform by setting the reference platform index parameter to 1.

You use the helperUpdateMeasurementNoise function block to increase the measurement noise reported by the Fusion Radar Sensor block, since the reported measurement noise in the detections is too small.

Multi-Target GGIW-PHD Tracker

Pass the generated detections to the multi-target Probability Hypothesis Density (PHD) Tracker block. Configure the tracker with a Gamma Gaussian Inverse Wishart filter, which estimates the ship dimensions and orientations as ellipsoids. The tracker allows multiple detections from each ship to be associated to a single track and use them to estimate the ship extent. This is important in situations such as marine surveillance where the size of the objects detected by the sensor is greater than the sensor's resolution, resulting in multiple detections generated along the surfaces of the ships.

The first step toward configuring the PHD tracker is to define the sensor configuration. You obtain the configuration from the sensor block by using the trackingSensorConfiguration object. See helper file getSimulationData for more details. The tracker uses the ggiwpfilterInitFcn supporting function to initialize a constant turn-rate Gamma Gaussian Inverse Wishart (GGIW) PHD filter. ggiwpfilterInitFcn adds birth components to the PHD-intensity at every time step. These birth components are added uniformly inside the field of view of the sensor. Their sizes and expected number of detections are specified using prior information about the types of ships expected in the harbor. The tracker uses the gamma distribution of the GGIW-PHD components to estimate how many detections should be generated from an object. The tracker also calculates the detectability of each component in the density using the sensor's limits.

You configure the tracker block to update the sensor configuration with time and specify a detection partition function as partitionDetections with 2 and 6 as the lower and upper bounds for distance threshold. You also configure the tracker block with following parameters:

  • Birth rate of new targets: 1e-5

  • Threshold for initializing tentative track: 0.75

  • Threshold for track deletion: 1e-6

The track states of the three ships report the estimated size of each ship using a 3D positional extent matrix. Take the eigen decomposition of the covariance matrices to compute the estimated length, width, and height for each ship.

This table summarizes the estimated and actual dimensions of the three ships.

The tracker is able to differentiate between the sizes of the large and smaller ships by estimating the shape of each ship as an ellipse. In the simulation, however, the true shape of each ship is modeled using a cuboid. This mismatch between the shape assumption made by the tracker and the shapes of the modeled ships results in overestimates of the length and width of the ships. The radar is a 2D sensor, only measuring range and azimuth, so the height of each ship is not observable. As a result, the height estimates reported by the tracker are inaccurate.


The visualization used for this example is defined using a MATLAB System (Simulink) block, helperMarineSurveillanceDisplayBlk attached with this example.

The animation shows the radar detections as red dots, the estimated track locations as yellow squares annotated with the track ID, and the estimated extents as yellow ellipses. The radar tower is located at the origin, with the coordinates of (0,0), which is not shown in the figure. The radar's field of view is represented by the two red lines crossing the top and bottom of the figure. All the ships lie within the radar's field of view. Because the sizes of the ships are much larger than the radar's range and azimuth resolution, there are many detections made along the ship surfaces visible to the radar.


This example shows how to configure the Fusion Radar Sensor block and the multi-target Probability Hypothesis Density (PHD) tracker block in Simulink. It also shows how to track and visualize extended objects in a marine scenario in Simulink.