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?
Best Answer