マルチセンサー
フュージョン-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)以下のように、検出対象の情報を取得し、トラッカーを呼び出します。
[確認済み、暫定的、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追跡対象の属性表
確認済みおよび暫定的は、[確認済み、暫定的、alltracks、info] = tracker(detection、time)で取得できます。これは、トラッカーによって返される確認済みの真のターゲットと仮想のターゲットをそれぞれ参照します。確認済みトラックと暫定トラックの両方に、表2のターゲット属性が含まれています。
4.グラフィカルな追跡および測定ターゲット
Matlab通过创建theater 绘图来展现虚拟化的跟踪目标和测量目标。Matlab 中的trackPlotter 函数与detectionPlotter 函数分别用于在theater 中绘制跟踪目标和测量目标的结果。具体例子如下所示:
(1)追跡対象と測定対象の結果を初期化する
tp = theatrePlot( '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)では、測定結果が3次元(X、Y、Z)である必要があり、2次元の場合はエラーが報告されます。
解決策:トラッカーのフィルター方法をカルマンフィルター(KF)に設定するか、2次元データを3次元に展開すると、3次元の測定データは常に0になります。
MATLABのplotTrack(trPlotter、pos、vel、cov)関数では、pos、vel、covが3次元情報である必要があります。2次元情報しかない場合、この関数を直接呼び出すと、次元の不一致エラーが報告されます。
解決策:plotTrack関数を呼び出す前に、2次元の位置、速度、および共分散情報を3次元に展開してから、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を追加してください