Cost Matrix Input for Multiple Sensor Fusion
    6 次查看(过去 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?
0 个评论
采纳的回答
  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!

