【数据融合】基于AIS和雷达的多传感器航迹融合【Matlab 129期】

多传感器融合–MATLAB跟踪器介绍
MATLAB通过多目标跟踪器可以融合多传感器检测到的目标信息,常用到的多目标跟踪器有trackerGNN、trackerJPDA、trackerTOMHT 、trackerPHD等。trackerGNN通过假设一个跟踪的目标只能与一个测量目标匹配。trackerJDPA对每一个跟踪的目标可能匹配多个测量到的目标。trackerPHD通过概率假设密度(PHD)函数来跟踪目标。trackerTOMHT认为跟踪的目标存多个假设的目标与之匹配。

1、跟踪器的使用步骤

MATLAB中使用跟踪器的主要步骤有(1)设定跟踪器的参数,(2)获得检测目标的信息,调用跟踪器,(3)提取跟踪成功的目标的位置及速度信息。

(1)设定跟踪器的参数,如下所示

tracker = trackerGNN(‘FilterInitializationFcn’, @initcvkf,‘AssignmentThreshold’,10, …

'ConfirmationThreshold', [3 5], 'TrackLogic', 'History', ...

‘DeletionThreshold’, 10);

(2)获得检测目标的信息,调用跟踪器,如下所示

[confirmed,tentative,alltracks,info] = tracker(detection,time);

(3)提取跟踪成功的目标的位置及速度信息,如下所示

[pos,cov] = getTrackPositions(confirmed,positionSelector);

vel = getTrackVelocities(confirmed,velocitySelector);

2、测量目标的创建

表1 测量目标的属性表
在这里插入图片描述
测量目标属性表通过detection = objectDetection(time,measurement) 函数获得,输入是时间和测量的目标的结果。

   通过如下两个例子可以建立测量目标

   例1:detection = objectDetection(1,[100;250;10])

例2:detection = objectDetection(1,[100;250;10],‘MeasurementNoise’,10, …

'SensorIndex',1,'ObjectAttributes',{'Example object',5})

3、跟踪目标的获得

表2 跟踪目标的属性表
在这里插入图片描述
通过[confirmed,tentative,alltracks,info] = tracker(detection,time)可获得confirmed和tentative,它们分别指的是跟踪器返回的已经证实的真目标和假设的目标。Confirmed tracks 和Tentative tracks 两类目标都包含有表2的目标属性。

4、跟踪及测量目标的图形化

   Matlab通过创建theater 绘图来展现虚拟化的跟踪目标和测量目标。Matlab 中的trackPlotter 函数与detectionPlotter 函数分别用于在theater 中绘制跟踪目标和测量目标的结果。具体例子如下所示:

(1)初始化跟踪目标和测量目标的结果

tp = theaterPlot(‘XLimits’,[-1 1200],‘YLimits’,[-600 600]); %%确定绘制区域X轴,Y轴的范围

trackP = trackPlotter(tp,‘DisplayName’,‘Tracks’,‘MarkerFaceColor’,‘g’, … ‘HistoryDepth’,0); %% 绘制跟踪目标

detectionP = detectionPlotter(tp,‘DisplayName’,‘Detections’,‘MarkerFaceColor’, … ‘r’); %% 绘制测量到的目标

(2)更新跟踪目标和测量目标的结果

trackP.plotTrack(pos,vel,cov,labels); %%更新跟踪目标

detectionP.plotDetection(meas’,measCov);%%更新测量目标

5、其它

   在使用matlab的跟踪器时遇到的问题汇总如下:

matlab的跟踪器默认采用的扩展卡尔曼滤波器(EKF),其函数要求测量的结果为三维的(X,Y,Z),如果是二维的则会报错误。
解决方法:将跟踪器的滤波方法设置为卡尔曼滤波(KF),或者将二维数据扩充为三维,第3维的测量数据一直为0。

MATLAB的plotTrack(trPlotter,pos,vel,cov) 函数要求pos、vel、cov为三维信息,如果只有2维信息直接调用该函数会报维度不匹配的错误。
解决方法:在调用plotTrack函数之前将二维的位置、速度、协方差信息扩展成三维之后再调用plotTrack函数绘制跟踪结果。对于plotDetection函数同样可采用该方法进行处理。

clc;
clear;
close all
load('MarCE_Radar_Detections_01_005_patched.mat');
load('dtGroundTruthAIS.mat')
 
 
 
figure(1);
for i = 1:numel(data)
    TR = extractfield(data{
    
    i},'TR');
    TR = reshape(TR,2,[]);
    Azimuth = TR(1,:);
    Range = TR(2,:);
    
    [X,Y] = pol2cart(Azimuth, Range);
    plot(X,Y,'.b');
    axis([-7000 7000 -7000 7000]);hold on;
    
    A = gt{
    
    i};
    scatter(A(:,1),A(:,2),'r.');
    
%     pause(.01);
end
grid on;
xlabel('X')
ylabel('Y')
title('Radar Data with AIS Ground Truth')
 
legend('Radar Data','AIS Data')

在这里插入图片描述
注:完整代码或者代写添加QQ2449341593

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/112758871
129