You can use multi-sensor, multi-target trackers,
trackerTOMHT, to track multiple targets. These trackers implement the
multi-object tracking problem using the measurement-to-track association approach.
Tracks are initiated and updated using sensor detections of targets. Trackers take
several steps when new detections are made:
The tracker tries to assign a detection to an existing track.
The tracker creates a track for each detection it cannot assign. When starting the tracker, all detections are used to create tracks.
The tracker evaluates the status of each track. For new tracks, the status is tentative until enough detections are made to confirm the track. For existing tracks, newly assigned detections are used by the tracking filter to update the track state. When a track has no new added detections, the track is coasted (predicted) until new detections are assigned to it. If no new detections are added after a specified number of updates, the track is deleted.
When tracking multiple objects using these trackers, there are several things to consider:
Decide which tracker to use.
trackerGNN uses a global nearest-neighbor
assignment algorithm, which maintains a single hypothesis about
the tracked object. The tracker offers low computation cost but
is not robust during ambiguous association events.
trackerTOMHT assigns detections based on a
track-oriented, multi-hypothesis approach, which maintains
multiple hypotheses about the tracked object. The tracker is
robust during ambiguous data association events but is
computationally more expensive.
trackerJPDA uses a joint probabilistic data
association approach, which applies a soft assignment where
multiple detections can contribute to each track. The tracker
balances the robustness and computation cost between
See the Tracking Closely Spaced Targets Under Ambiguity example for a comparison between these three trackers.
Decide which type of tracking filter to use.
The choice of tracking filter depends on the expected dynamics of the
object you want to track. The toolbox provides multiple Kalman filters
including the Linear Kalman filter,
trackingKF, the Extended Kalman
trackingEKF, the Unscented
trackingUKF, and the Cubature
trackingCKF. The linear Kalman filter is used when the
dynamics of the object follow a linear model and the measurements are linear
functions of the state vector. The extended, unscented, and cubature Kalman
filters are used when the dynamics are nonlinear, the measurement model is
nonlinear, or both. The toolbox also provides non-Gaussian filters such as
the particle filter,
trackingPF, Gaussian-sum filter,
trackingGSF, and the Interacting Multiple Model (IMM) filter,
trackingIMM. See the Tracking with Range-Only Measurements
and Tracking Maneuvering Targets
examples for more information about these filters.
You can set the type of filter by specifying the
FilterInitializationFcn property of a tracker. For
example, if you set the
@initcaekf, then the tracker uses the
initcaekf function to
create a constant-acceleration extended Kalman filter for a new track
generated from detections.
Decide which track logic to use.
You can specify the conditions under which a track is confirmed or deleted
by setting the
TrackLogic property. Three algorithms
'History' — Track confirmation and deletion are
based on the number of times the track has been assigned to a
detection in the last several tracker updates. You can use this
'Score' — Track confirmation and deletion are
based on a log-likelihood computation. A high score means that the
track is more likely to be valid. A low score means that the track
is more likely to be false. You can use this logic with
'Integrated' — Track confirmation and deletion
are based on the probability of track existence. You can use this
For more details, see the Introduction to Track Logic example.
You can also use a multi-sensor, multi-target tracker,
to track multiple targets simultaneously.
trackerPHD approaches the
multi-object tracking problem using the random finite set (RFS) method and tracks the
probability hypothesis density (PHD) of a scenario.
peaks from the PHD-intensity to represent potential targets and maintain identities of
targets by assigning a label to each component. The toolbox offers one realization of
ggiwphd, which represents the
PHD of extended targets using a Gamma Gaussian Inverse-Wishart (GGIW) target-state
model. You can represent the configurations of sensors for
trackerGNN object is a multi-sensor, multi-object tracker that uses
global nearest neighbor association. Each detection can be assigned to only one
track (single-hypothesis tracker) which can also be a new track that the detection
initiates. At each step of the simulation, the tracker updates the track state. You
can specify the behavior of the tracker by setting the following properties.
A handle to a function that initializes a tracking filter
based on a single detection. This function is called when a
detection cannot be assigned to an existing track. For example,
The name of the assignment algorithm. The tracker provides
three built-in algorithms:
The name of the custom assignment algorithm function. This
property is available on when the
Specify the threshold that controls the assignment of a detection to a track. Detections can only be assigned to a track if their normalized distance from the track is less than the assignment threshold. Each tracking filter has a different method of computing the normalized distance. Increase the threshold if there are detections that can be assigned to tracks but are not. Decrease the threshold if there are detections that are erroneously assigned to tracks.
Specify the track confirmation logic
at the command line.
Specify the threshold for track confirmation. The threshold
depends on the setting for
Specify the threshold for track deletion. The threshold
depends on the setting of
Specify the probability of detection as a number in the
range (0,1). The probability of detection is
used to calculate the track score when initializing and updating
a track. This property is used only when
Specify the rate of false detection as a number in the
range (0,1). The false alarm rate is used to
calculate the track score when initializing and updating a
track. This property is used only when
Specify the rate of new tracks per unit volume as a
positive number. This property is used only when
Specify the volume of the sensor measurement bin as a
positive scalar. For example, a radar sensor that produces a 4-D
measurement of azimuth, elevation, range, and range-rate creates
a 4-D volume. The volume is a product of the radar angular
beamwidth, the range bin width, and the range-rate bin width.
The volume is used in calculating the track score when
initializing and updating a track. This property is used only
Specify the maximum number of tracks the tracker can maintain.
Specify the maximum number of sensors sending detections to
the tracker as a positive integer. This number must be greater
than or equal to the largest
Set this property to
Set this property to
The input to the
trackerGNN consists of a list of detections, the update time, cost
matrix, and other data. Detections are specified as a cell array of
objectDetection objects (see Detections). The input
arguments are listed here.
Time to which all the tracks are to be updated and predicted. The time at this execution step must be greater than the value in the previous call.
|Cost matrix for assigning detections to tracks. A real
T-by-D matrix, where
T is the number of tracks listed in the
IDs of tracks that the sensors expect to detect, specified
as an M-by-1 or M-by-2
matrix. The first column consists of track IDs, as reported in
The output of the tracker can consist of up to three
arrays with track state information. You can retrieve just the confirmed tracks, the
confirmed and tentative tracks, or these tracks plus a combined list of all
confirmedTracks = step(...)
[confirmedTracks, tentativeTracks] = step(...)
[confirmedTracks, tentativeTracks, allTracks] = step(...)
Unique integer that identifies the track.
Time to which the track is updated.
Number of updates since track initialization.
State vector at update time.
State covariance matrix at update time.
True if the track is confirmed.
|The track logic used in confirming the track –
The current state of the track logic.
True if the track has been updated without a detection. In this case, tracks are predicted to the current time.
An integer value representing the target classification. Zero is reserved for an "unknown" class.
A cell array of cells. Each cell captures the object attributes reported by the corresponding sensor.