Cost Matrix Input for Multiple Sensor Fusion

2 次查看(过去 30 天)
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?

采纳的回答

Elad Kivelevitch
Elad Kivelevitch 2020-9-8
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

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by