Multi-Object Tracker

Description

The Multi-Object Tracker block initializes, confirms, predicts,
corrects, and deletes the tracks of moving objects. Inputs to the multi-object tracker
are detection reports generated by Radar Detection
Generator and Vision Detection
Generator blocks. The multi-object tracker accepts detections from multiple
sensors and assigns them to tracks using a global nearest neighbor (GNN) criterion. Each
detection is assigned to a separate track. If the detection cannot be assigned to any
track, the multi-object tracker creates a new track.

A new track starts in a tentative state. If enough detections are
assigned to a tentative track, its status changes to confirmed.
When a track is confirmed, the multi-object tracker considers that track to represent a
physical object. If detections are not added to the track within a specifiable number of
updates, the track is deleted.

The multi-object tracker also estimates the state vector and state vector covariance
matrix for each track using a Kalman filter. These state vectors are used to predict a
track's location in each frame and determine the likelihood of each detection being
assigned to each track.

Note

The object detection structure contains a
Time field. The time tag of each object
detection must be less than or equal to the time of the current
invocation of the block. The time tag must also be greater than
the update time specified in the previous invocation of the
block.

Prediction Time — Track update timereal scalar

Track update time, specified as a real scalar. The multi-object
tracker updates all tracks to this time. Update time must always
increase with each invocation of the block. Units are in seconds.

Note

The object detection structure contains a
Time field. The time tag of each object
detection must be less than or equal to the time of the current
invocation of the block. The time tag must also be greater than
the update time in the previous invocation of the block.

Dependencies

To enable this port, set Prediction time
source to Input
port.

Cost Matrix — Cost matrixreal-valued
Nt-by-Nd
matrix

Cost matrix, specified as a real-valued
Nt-by-Nd
matrix, where Nt is the number
of existing tracks and Nd is
the number of current detections.

The rows of the cost matrix correspond to the existing tracks. The
columns correspond to the detections. Tracks are ordered as they appear
in the list of tracks in the All Tracks output port
of the previous invocation of the block.

In the first update to the multi-object tracker, or if the track has
no previous tracks, assign the cost matrix a size of [0,
Nd]. The cost must be
calculated so that lower costs indicate a higher likelihood that the
multi-object tracker assigns a detection to a track. To prevent certain
detections from being assigned to certain tracks, use
Inf.

Dependencies

Detectable track IDs, specified as a real-valued
M-by-1 vector or M-by-2 matrix.
Detectable tracks are tracks that the sensors expect to detect. The
first column of the matrix contains a list of track IDs that the sensors
report as detectable. The optional second column contains the detection
probability for the track.

Tracks whose identifiers are not included in Detectable
TrackIDs are considered undetectable. The track deletion
logic does not count the lack of detection as a "missed detection" for
track deletion purposes.

If this port is not enabled, the tracker assumes all tracks to be
detectable at each invocation of the block.

Array of track structures of a length set by the Maximum number
of tracks parameter. Only the first
NumTracks of these are actual tracks.

This table shows the fields of each track structure.

Field

Description

TrackID

Unique integer that identifies the
track.

SouceIndex

Unique identifier the tracker in a
multiple tracker environment. The
SourceIndex is exactly the same
with the TrackerIndex.

UpdateTime

The time the track was
updated.

Age

Number of times the track survived.

State

Value of state vector at the update
time.

StateCovariance

Uncertainty covariance
matrix.

Extent

Spatial extent estimate of the
tracked object, returned as a
d-by-d
matrix, where d is the
dimension of the object. This field is only
returned when the tracking filter is specified as
a ggiwphd filter.

MeasurementRate

Expected number of detections from
the tracked object. This field is only returned
when the tracking filter is specified as a ggiwphd filter.

IsConfirmed

True if the track is assumed to be of
a real target.

IsCoasted

trackerPHD does not
support the IsCoasted field.
The value is always 0.

ObjectClassID

trackerPHD does not
support the ObjectClassID
field. The value is always 0.

StateParamaters

Parameters about the track state
reference frame specified in the
StateParameters property of
the PHD tracker.

IsSelfReported

Indicate if the track is reported by
the tracker. This field is used in a track fusion
environment. It is returned as
true by default.

A track is confirmed if:

At least M detections are assigned to
the track during the first N updates
after track initialization. To specify the values
M and N, use the
M and N for the M-out-of-N
confirmation parameter.

The detection initiating the track has an
ObjectClassID greater than
zero.

Array of track structures of a length set by the Maximum number
of tracks parameter. Only the first
NumTracks of these are actual tracks.

This table shows the fields of each track structure.

Field

Description

TrackID

Unique integer that identifies the
track.

SouceIndex

Unique identifier the tracker in a
multiple tracker environment. The
SourceIndex is exactly the same
with the TrackerIndex.

UpdateTime

The time the track was
updated.

Age

Number of times the track survived.

State

Value of state vector at the update
time.

StateCovariance

Uncertainty covariance
matrix.

Extent

Spatial extent estimate of the
tracked object, returned as a
d-by-d
matrix, where d is the
dimension of the object. This field is only
returned when the tracking filter is specified as
a ggiwphd filter.

MeasurementRate

Expected number of detections from
the tracked object. This field is only returned
when the tracking filter is specified as a ggiwphd filter.

IsConfirmed

True if the track is assumed to be of
a real target.

IsCoasted

trackerPHD does not
support the IsCoasted field.
The value is always 0.

ObjectClassID

trackerPHD does not
support the ObjectClassID
field. The value is always 0.

StateParamaters

Parameters about the track state
reference frame specified in the
StateParameters property of
the PHD tracker.

IsSelfReported

Indicate if the track is reported by
the tracker. This field is used in a track fusion
environment. It is returned as
true by default.

Array of track structures of a length set by the Maximum number
of tracks parameter. Only the first
NumTracks of these are actual tracks.

This table shows the fields of each track structure.

Field

Description

TrackID

Unique integer that identifies the
track.

SouceIndex

Unique identifier the tracker in a
multiple tracker environment. The
SourceIndex is exactly the same
with the TrackerIndex.

UpdateTime

The time the track was
updated.

Age

Number of times the track survived.

State

Value of state vector at the update
time.

StateCovariance

Uncertainty covariance
matrix.

Extent

Spatial extent estimate of the
tracked object, returned as a
d-by-d
matrix, where d is the
dimension of the object. This field is only
returned when the tracking filter is specified as
a ggiwphd filter.

MeasurementRate

Expected number of detections from
the tracked object. This field is only returned
when the tracking filter is specified as a ggiwphd filter.

IsConfirmed

True if the track is assumed to be of
a real target.

IsCoasted

trackerPHD does not
support the IsCoasted field.
The value is always 0.

ObjectClassID

trackerPHD does not
support the ObjectClassID
field. The value is always 0.

StateParamaters

Parameters about the track state
reference frame specified in the
StateParameters property of
the PHD tracker.

IsSelfReported

Indicate if the track is reported by
the tracker. This field is used in a track fusion
environment. It is returned as
true by default.

Dependencies

To enable this port, select Enable all tracks
output.

Parameters

Tracker Management

Unique tracker identifier, specified as a nonnegative integer. This
parameter is used as the SourceIndex in the outputs,
and distinguishes tracks that come from different trackers in a
multiple-tracker system. You must specify this property as a positive
integer to use the track outputs as inputs to a track fuser.

Detection assignment threshold, specified as a positive real scalar.
To assign a detection to a track, the detection's normalized distance
from the track must be less than the assignment threshold. If some
detections remain unassigned to tracks that you want them assigned to,
then increase the threshold. If some detections are assigned to
incorrect tracks, decrease the threshold.

Confirmation parameters for track creation, specified as a two-element
vector of positive integers, [M,N]. A track is
confirmed when at least M detections are assigned to
the track during the first N updates after track
initialization. M must be less than or equal to
N.

When setting N, consider the number of
times you want the tracker to update before it confirms a
track. For example, if a tracker updates every 0.05 seconds,
and you allow 0.5 seconds to make a confirmation decision,
set N = 10.

When setting M, take into account the
probability of object detection for the sensors. The
probability of detection depends on factors such as
occlusion or clutter. You can reduce M
when tracks fail to be confirmed or increase
M when too many false detections are
assigned to tracks.

Parameters of the track state reference frame, specified as a struct
or a struct array. Use this property to define the track state reference
frame and how to transform the track from the tracker (called source)
coordinate system to the fuser coordinate system.

Inputs and Outputs

Source for prediction time, specified as Input
port or Auto. Select
Input port to input an update time by
using the Prediction Time input port. Otherwise,
the simulation clock managed by Simulink determines the update time.

Interpreted execution — Simulate the model using the
MATLAB interpreter. This option shortens startup time. In Interpreted
execution mode, you can debug the source code of the block.

Code generation — Simulate the model using generated C/C++
code. The first time you run a simulation, Simulink generates C/C++ code for the block. The C code is reused for subsequent
simulations as long as the model does not change. This option requires additional startup
time.