In the JPDA tracker, is it possible to handle partial radar sweeps?
3 views (last 30 days)
We read that the JPDA tracker expects detections from a sensor to have identical time stamps. Since our detections come from radars with a revolution time of 3 seconds, this has an impact on the accuracy. Furthermore, a vessel that moves against the direction of the radar sweep can be detected at the beginning of the sweep and also at the end. This is not a problem if the detections have a difference in time stamp of ~3 seconds, but can cause problems if both detections are treated as simultaneous detections. A similar problem arises when a vessel moves along with the direction of the radar sweep, because in that case it can be missed completely during one sweep. In that case, the previous detection is towards the end of the previous sweep and the next detection is near the start of the next sweep. When taking the average time stamp of all detections during these sweeps, the time difference that is taken into account between these detections would be about 6 seconds, while it's actually just a little over 3 seconds.
We have tried to just give each detection their actual time stamps (based on when the radar passed them) before feeding the detections of a full radar sweep to the tracker, but that gives erratic results. Therefore, my question is, is there a good way to take the actual time stamps of the measurements into account when using the JPDA tracker? Is there maybe a good way to provide the JPDA tracker with partial radar sweeps, without losing tracks that were not updated during a few subsequent partial radar sweeps? Or is there another tracker that is better at handling this kind of radar data?
Prashant Arora on 17 Sep 2021
Edited: Prashant Arora on 17 Sep 2021
There is a fundamental limitation to JPDA tracker that is assumes:
All tracks must produces at most one detection per object per sensor per step of the tracker.
If your sensor sweeps the surveillance region and detects the same object twice AND you feed the detections from entire sweep to the tracker, it is likely that you will get redundant/false tracks per object.
There are a couple of methods that you can consider:
Clustering + Tracking:
Do a "radar clustering" before feeding detections to the tracker. If two detections are close to each other, consider them from the same target and "merge" them. You can use features like DBSCAN or partitionDetections for this.
Feeding Partial Sweeps:
Feed detections to the tracker using partial radar sweeps. To accomodate for tracks that were not detected in this partial sweep, you can set the HasDetectableTrackIDsInput property of the tracker to true.
Once you do that, you can specify on every call to the tracker, the list of TrackIDs (and optionally their probability of detection) that you believe should be detectable in this step by any sensor. If a track is missing from the TrackIDs, the tracker will not penalize if it didn't get any detections.
Here is an example that uses this technique (check isDetectable function)
Hope this helps.