Cost Matrix Input for Multiple Sensor Fusion
3 views (last 30 days)
Show older comments
Sugar Daddy
on 9 Jul 2020
Commented: Sugar Daddy
on 7 Nov 2020
I have two sensors on a single platform (car) which are detecting a target (another car). Suppose
% Sensor 1 data
X1 = 100; Y1 = 10; Z1 = 0;
% Sensor @ data
X2 = 100.1; Y2 = 9.9; Z2 = 0;
% Convert them to object
obj_det = [objectDetection(0.5,[X1,Y1,Z1],'SensorIndex',1),objectDetection(1,[X2,Y2,Z2],'SensorIndex',2)];
Initate a tracker & set hasCostMatrixInput to false
tracker = trackerGNN();
tracker.Assignment = 'Auction';
tracker.ConfirmationThreshold = [2 5];
tracker.DeletionThreshold = [4 5];
tracker.AssignmentThreshold = [1000 inf];
tracker.HasCostMatrixInput = false;
Now if i call tracker function I have one track (which means that it fuses both sensors data)
[~,~,all_tracks,~] = tracker(obj_det,1)
all_tracks =
objectTrack with properties:
TrackID: 1
BranchID: 0
SourceIndex: 0
UpdateTime: 1
Age: 2
State: [6×1 double]
StateCovariance: [6×6 double]
StateParameters: [1×1 struct]
ObjectClassID: 0
TrackLogic: 'History'
TrackLogicState: [1 1 0 0 0]
IsConfirmed: 1
IsCoasted: 0
IsSelfReported: 1
ObjectAttributes: [1×1 struct]
My advisor's requirement is that i should give external costmatrix so i
Initate a tracker & set hasCostMatrixInput to true
tracker = trackerGNN();
tracker.Assignment = 'Auction';
tracker.ConfirmationThreshold = [2 5];
tracker.DeletionThreshold = [4 5];
tracker.AssignmentThreshold = [1000 inf];
tracker.HasCostMatrixInput = true;
Now for first call an empty matrix is required whose rows size matches number of detections so
cost_matrix_init_val = zeros(0,2);
Now if i call tracker function with cost matrix, i ve two seperate tracks
[~,~,all_tracks,~] = tracker(obj_det,1,cost_matrix_init_val)
all_tracks =
2×1 objectTrack array with properties:
TrackID
BranchID
SourceIndex
UpdateTime
Age
State
StateCovariance
StateParameters
ObjectClassID
TrackLogic
TrackLogicState
IsConfirmed
IsCoasted
IsSelfReported
ObjectAttributes
Question:
if i enabled has CostMatrixInput, how to do multisensor fusion in that case as tracker is not fusing them in that case?
0 Comments
Accepted Answer
Elad Kivelevitch
on 8 Sep 2020
Sugar_daddy:
Unfortunately, when you set the HasCostMatrixInput to true, we can no longer make any assumptions on how to compute the distance between the two detections. In other words, we don't know what convention you use for the distance (Euclidean? Mahalanobis? Intersection-over-union? some other completely different distance?).
Even if we defaulted to use some distance measure, it would have a different "size" than the AssignmentThreshold you used. Compare Euclidean with Mahalanobis - two measurements can be 2 kms apart but if the measurement noise is 10 kms, they can actually have a very low Mahalanobis distance. Therefore, even if we computed the distance with some method, if we don't know what method you're using for AssignmentThreshold, it is meaningless.
So, we made the decision to not initialize multi-sensor tracks from two detections.
In the next call, they will be updated correctly because you'll pass their cost matrix.
Elad
More Answers (0)
See Also
Categories
Find more on Tracking and Sensor Fusion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!