Joint probabilistic data association tracker
The trackerJPDA
System object™ is a tracker capable of processing detections of multiple targets from multiple
sensors. The tracker uses joint probabilistic data association to assign detections to each
track. The tracker applies a soft assignment where multiple detections can contribute to each
track. The tracker initializes, confirms, corrects, predicts (performs coasting), and deletes
tracks. Inputs to the tracker are detection reports generated by objectDetection
, radarSensor
,
monostaticRadarSensor
, irSensor
, or
sonarSensor
objects. The tracker estimates the state vector and state estimate error covariance matrix for
each track. Each detection is assigned to at least one track. If the detection cannot be
assigned to any existing track, the tracker creates a new track.
Any new track starts in a tentative state. If enough detections are
assigned to a tentative track, its status changes to confirmed (see the
ConfirmationThreshold
property). If the detection already has a known
classification (i.e., the ObjectClassID
field of the returned track is
nonzero), that corresponding track is confirmed immediately. When a track is confirmed, the
tracker considers the track to represent a physical object. If detections are not assigned to
the track within a specifiable number of updates, the track is deleted.
To track targets using this object:
Create the trackerJPDA
object and set its properties.
Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects?.
creates a
tracker
= trackerJPDAtrackerJPDA
System object with default property values.
sets properties for the tracker using one or more name-value pairs. For example,
tracker
= trackerJPDA(Name,Value
)trackerJPDA('FilterInitializationFcn',@initcvukf,'MaxNumTracks',100)
creates a multi-object tracker that uses a constant-velocity, unscented Kalman filter and
allows a maximum of 100 tracks. Enclose each property name in quotes.
To process detections and update tracks, call the tracker with arguments, as if it were a function (described here).
returns a list of confirmed tracks that are updated from a list of detections at the
update time. Confirmed tracks are corrected and predicted to the update time,
confirmedTracks
= tracker(detections
,time
)time
.
also specifies a cost matrix. confirmedTracks
= tracker(detections
,time
,costMatrix
)
To enable this syntax, set the HasCostMatrixInput
property to
true
.
also specifies a list of expected detectable tracks given by
confirmedTracks
= tracker(___,detectableTrackIDs
)detectableTrackIDs
. This argument can be used with any of the
previous input syntaxes.
To enable this syntax, set the HasDetectableTrackIDsInput
property to true
.
[
also returns a list of tentative tracks and a list of all tracks. You can use any of the
input arguments in the previous syntaxes.confirmedTracks
,tentativeTracks
,allTracks
] = tracker(___)
[
also returns analysis information that can be used for track analysis. You can use any of
the input arguments in the previous syntaxes.confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
] = tracker(___)
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named obj
, use
this syntax:
release(obj)
[1] Fortmann, T., Y. Bar-Shalom, and M. Scheffe. "Sonar Tracking of Multiple Targets Using Joint Probabilistic Data Association." IEEE Journal of Ocean Engineering. Vol. 8, Number 3, 1983, pp. 173-184.
[2] Musicki, D., and R. Evans. "Joint Integrated Probabilistic Data Association: JIPDA." IEEE transactions on Aerospace and Electronic Systems . Vol. 40, Number 3, 2004, pp 1093-1099.
objectDetection
| objectTrack
| trackHistoryLogic
| trackingABF
| trackingCKF
| trackingEKF
| trackingIMM
| trackingKF
| trackingUKF