Этот пример показывает, как к отслеживаемым объектам, когда ассоциация обнаружений датчика к дорожкам неоднозначна. В этом примере вы используете средство отслеживания одно гипотезы, средство отслеживания нескольких-гипотез и вероятностное средство отслеживания ассоциации данных, чтобы выдержать сравнение, как средства отслеживания обрабатывают эту неоднозначность. Чтобы отследить, маневрирующие цели лучше, вы оцениваете движение целей при помощи различных моделей.
Отслеживание является процессом оценки ситуации на основе данных, собранных одним или несколькими источниками информации. Отслеживание попыток ответить на следующие вопросы:
Сколько объекты там?
Где объекты расположены на пробеле?
Каковы их скорость и направление движения?
Как объекты маневрируют друг относительно друга?
Средства отслеживания полагаются на данные о датчике, такие как радарные обнаружения. Датчики могут сгенерировать два обнаружения для двух целей, если датчики могут разрешить цели пространственно. Если две цели близко расположены, они могут находиться в пределах одной ячейки разрешения датчика, и датчик сообщает о только одном обнаружении их. Чтобы проиллюстрировать проблему, следующие данные показывают радар с 1,5 разрешениями азимута степеней. В области значений 20 км радарный интервал датчика имеет ширину вышеупомянутых 540 м, что означает, что любое обнаружение, о котором сообщают из той области значений, расположено в центре интервала с неуверенностью на ±270 м по поводу этого. О любых двух целях в этом интервале сообщают как одно обнаружение.
Чтобы продемонстрировать случай, где отчеты датчика двусмысленно присвоены дорожкам, вы создаете простой сценарий. В этом сценарии один объект monostaticRadarSensor
, расположенный в начале координат (не показанный), сканирует небольшую область приблизительно 20 км от радара. Первоначально, показания радара приблизительно два обнаружения на сканирование. Когда обнаружения прибывают из области вокруг X = 0, Y =-20километровое положение, показания радара одно обнаружение на сканирование некоторое время, сопровождаемый двумя радарными обнаружениями, о которых сообщают со всего Y =-19.5km и к датчику.
Журнал сценария и обнаружений уже сохранен в matfile. Можно не прокомментировать строки ниже, чтобы регенерировать сценарий и синтетические обнаружения.
load ATCdata.mat % scenario = helperCreateScenario; % dataLog = helperRunDetections(scenario); plotScenarioAndDetections(dataLog);
Смотря только на обнаружения в этом графике, разумно принять, что существует две цели, но это неясно ли их пересеченные траектории. Цели не пересекались, как замечено их траекторией.
Самым простым выбором мультицелевого средства отслеживания является средство отслеживания одно гипотезы как trackerGNN
. Вы устанавливаете его использовать логику счета, позволить более легкое сравнение с trackerTOMHT
позже в этом примере.
Этот пример является небольшим и не требует больше чем 20 дорожек. Логический элемент должен быть выбран, чтобы позволить дорожкам быть установленными без побочных дорожек и был увеличен со значения по умолчанию.
Объем интервала датчика может быть примерно оценен с помощью детерминанта шума измерения обнаружения. В этом случае значение о 1e9, таким образом, вы регулируете громкость к 1e9. Значение беты должно задать, сколько новых объектов ожидается в единичном объеме. Когда количество объектов в этом сценарии является постоянным, бета набора, чтобы быть очень маленьким. Значения для вероятности обнаружения и ложного сигнального уровня приняты от соответствующих значений радара.
numTracks = 20; % Maximum number of tracks gate = 45; % Association gate vol = 1e9; % Sensor bin volume beta = 1e-14; % Rate of new targets in a unit volume pd = 0.8; % Probability of detection far = 1e-6; % False alarm rate
Вы используете расширенный Фильтр Калмана постоянной скорости. Функция initCVFilter
изменяет фильтр, который initcvekf
возвращает, чтобы допускать более высокую неуверенность в скоростных условиях и более высокое горизонтальное ускорение в шуме процесса. Эти модификации необходимы, чтобы отследить цели в этом сценарии, которые перемещаются в высокую скорость и маневр путем превращения в горизонтальной плоскости.
tracker = trackerGNN( ... 'FilterInitializationFcn',@initCVFilter,... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold',gate, ... 'TrackLogic', 'Score', ... 'DetectionProbability', pd, 'FalseAlarmRate', far, ... 'Volume', vol, 'Beta', beta);
Следующая строка запускает сценарий и производит визуализацию.
[trackSummary, truthSummary, trackMetrics, truthMetrics,timeGNNCV] = helperRunTracker(dataLog,tracker,false);
С преимуществом использования моделируемой наземной истины мы можем сравнить результаты средства отслеживания с истиной, с помощью trackAssignmentMetrics
. Результаты показывают, что существует два объекта истины, но три дорожки были сгенерированы средством отслеживания. Одна из дорожек не выжила до конца сценария, то есть, она была пропущена, и две других дорожки сделали.
В конце сценария истина возражает 2, был сопоставлен с дорожкой 8, который был создан на полпути через сценарий после того, как дорожка 2 была пропущена. Объект Truth 3 был присвоен, отслеживают 1 в конце сценария, но имеет два пропуска.
Обратите внимание на то, что продолжительность установления обоих объектов истины была маленькой, в то время как было немного ложных дорожек, что означает, что порог подтверждения хорош.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 3 true 190 false 2 NaN false 77 true 8 2 true 111 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 8 192 1 4 3 1 192 2 2
Используйте trackErrorMetrics
, чтобы анализировать качество отслеживания с точки зрения ошибок положения и скорости между объектами истины и дорожками, сопоставленными с ними. Результаты показывают, что ошибки положения составляют приблизительно 50-60 м, и ошибки скорости являются RMS на приблизительно 30 м/с.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 59.461 26.119 7.9331 3.495 2 51.803 39.433 5.7494 3.0362 8 62.914 28.877 7.2004 3.0465 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 62.147 27.546 8.3597 3.9608 3 56.218 32.109 6.3234 2.6642
Комбинация средства отслеживания одно гипотезы и постоянного скоростного фильтра не могла отследить маневрирующие цели. Этот результат очевиден тем, что одна из остановок дорожек и затем новый трек начинается, в то время как существует только две цели в сценарии. Это также очевидно из неспособности следовать за целевыми поворотами.
Одна опция, чтобы улучшить средство отслеживания должна изменить фильтр, чтобы быть фильтром взаимодействующей многоуровневой модели (IMM), который позволяет вам рассматривать две или больше модели движения для целей. Фильтр переключается на правильное основанное на модели на вероятности одной модели по другому, учитывая измерения. В этом примере цели перемещаются в постоянную скорость, пока они не поворачиваются на постоянном уровне, таким образом, вы задаете фильтр IMM с этими двумя моделями с помощью функции initIMMFilter
.
tracker = trackerGNN( ... 'FilterInitializationFcn',@initIMMFilter,... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold',gate, ... 'TrackLogic', 'Score', ... 'DetectionProbability', pd, 'FalseAlarmRate', far, ... 'Volume', vol, 'Beta', beta); [trackSummary, truthSummary, trackMetrics, truthMetrics, timeGNNIMM] = helperRunTracker(dataLog,tracker,false);
Сложение фильтра IMM позволяет средству отслеживания идентифицировать целевой маневр правильно. Можно наблюдать это заключение путем рассмотрения дорожек, сгенерированных во время целевых поворотов, и заметить, как хорошо оба поворота прослежены. В результате истина возражает 2, имеет нулевые пропуски, которые вы видите в графике непрерывной истории его связанной дорожки.
Однако даже со взаимодействующими моделями, одна из дорожек прерывает область неоднозначности. Средство отслеживания одно гипотезы получает только одно обнаружение с той областью и может обновить только одну из дорожек с ним, курсируя другая дорожка. После нескольких обновлений счет курсировавшей дорожки падает ниже порога удаления, и средство отслеживания пропускает дорожку.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 2 true 190 false 2 NaN false 77 true 8 3 true 111 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 1 192 0 4 3 8 192 1 2
Использование IMM также улучшило точность отслеживания, когда ошибки положения уменьшали до 40-60 метров, в то время как ошибки скорости уменьшали до 25-30 м/с. Это улучшение может быть приписано более низким значениям шума процесса, используемым в IMM для каждой модели, которые позволяют лучшее сглаживание шумных измерений.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 54.578 22.02 7.4314 4.7773 2 48.609 35.522 6.0893 3.0831 8 34.272 19.152 4.913 3.1614 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 54.578 22.02 7.4314 4.7773 3 40.712 27.029 5.3911 3.1296
Чтобы разрешить проблему поврежденной дорожки, используйте средство отслеживания нескольких-гипотез (MHT), trackerTOMHT
. В области неоднозначности средство отслеживания генерирует несколько гипотез об ассоциации обнаружения с дорожками. В частности, это поддерживает одну гипотезу, что первая дорожка присвоена это обнаружение и другая гипотеза, что вторая дорожка присвоена обнаружение. Путем выполнения так, поддерживаются обе дорожки, так, чтобы средство отслеживания заставило достаточно обнаружений разрешать неоднозначность в следующих обновлениях.
trackerTOMHT
использует те же параметры в качестве trackerGNN
, кроме:
AssignmentThreshold
позволяет дорожке быть рассмотренной неприсвоенной, даже когда существует присвоенное обнаружение. Эта установка позволяет несколько ответвлений на дорожку. Однако второй элемент логического элемента запрещает новые треки от присвоенных обнаружений, чтобы сократить общее количество дорожек и улучшать производительность.
MaxNumHistoryScans
увеличен до 10, чтобы задержать NScanPruning
.
MaxNumTrackBranches
увеличен до 5, чтобы позволить больше ответвлений (гипотезы) на дорожку.
tracker = trackerTOMHT( ... 'FilterInitializationFcn',@initCVFilter, ... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold', [0.2, 1, 1]*gate,... 'DetectionProbability', pd, 'FalseAlarmRate', far, ... 'Volume', vol, 'Beta', beta, ... 'MaxNumHistoryScans', 10,... 'MaxNumTrackBranches', 5,... 'NScanPruning', 'Hypothesis', ... 'OutputRepresentation', 'Tracks'); [trackSummary, truthSummary, trackMetrics, truthMetrics, timeTOMHTCV] = helperRunTracker(dataLog,tracker,false);
Результаты показывают, что средство отслеживания нескольких-гипотез способно к отслеживанию двух объектов истины в сценарии. Для области неоднозначности средство отслеживания MHT формулирует две гипотезы о присвоении:
Обнаружение присвоено отследить 1.
Обнаружение присвоено отследить 2.
С этими гипотезами обе дорожки генерируют ответвления (гипотезы дорожки), которые обновляют их использующий то же обнаружение. Очевидно, использование того же обнаружения, чтобы обновить обе дорожки заставляет дорожки становиться ближе в своей оценке, и в конечном счете две дорожки могут объединить. Однако, если длительность неоднозначного присвоения коротка, средство отслеживания может смочь разрешить две дорожки, когда существует два обнаружения. В этом случае вы видите, что две дорожки пересекают друг друга, но метрики показывают, что счет пропуска для каждой истины равняется 1, означая, что истинные цели, вероятно, не пересекли друг друга.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 3 true 190 false 2 2 true 191 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 2 192 1 2 3 1 192 1 2
С точки зрения точности отслеживания ошибки положения и скорости этого средства отслеживания подобны тем от комбинации средства отслеживания одно гипотезы с постоянным скоростным фильтром.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 45.562 28.796 4.5994 3.2797 2 61.967 29.85 6.731 2.7341 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 48.915 28.581 5.0142 3.2781 3 58.198 29.883 6.1595 2.801
При построении на успехе использования средства отслеживания нескольких-гипотез с постоянной скоростью, чтобы поддержать непрерывное отслеживание, объедините средство отслеживания с преимуществами фильтра IMM. Фильтр IMM может быть более успешным в предотвращении дорожки, пересекающейся, когда это улучшает отслеживание, когда цели поворачиваются. Следующий код конфигурирует trackerTOMHT
с фильтром trackingIMM
.
tracker = trackerTOMHT( ... 'FilterInitializationFcn',@initIMMFilter, ... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold', [0.2, 1, 1]*gate,... 'DetectionProbability', pd, 'FalseAlarmRate', far, ... 'Volume', vol, 'Beta', beta, ... 'MaxNumHistoryScans', 10,... 'MaxNumTrackBranches', 5,... 'NScanPruning', 'Hypothesis', ... 'OutputRepresentation', 'Tracks'); [trackSummary, truthSummary, trackMetrics, truthMetrics, timeTOMHTIMM] = helperRunTracker(dataLog,tracker,false);
График показывает, что две дорожки не пересекались. Этот результат также очевиден в количестве пропуска истинных целей ниже, которое показывает нулевые пропуски.
Можно также видеть истинный путь целей, показанных в сплошной линии.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 2 true 190 false 2 3 true 191 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 1 192 0 2 3 2 192 0 2
Точность отслеживания подобна комбинации средства отслеживания одно гипотезы с фильтром IMM. Обратите внимание на то, что точность истины и связанная точность установки на дорожку являются тем же самым, потому что не было никакого перерыва в отслеживании в сценарии.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 57.162 24.443 6.7891 4.1254 2 39.303 26.382 4.7532 3.3869 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 57.162 24.443 6.7891 4.1254 3 39.303 26.382 4.7532 3.3869
Несмотря на то, что метрики отслеживания значительно улучшены при помощи trackerTOMHT
по trackerGNN
, компьютерное время вычислений также значительно увеличено. Средство отслеживания Объединенной вероятностной ассоциации данных (JPDA), trackerJPDA
, позволит вам исследовать дальнейшие факторы компромисса. В отличие от GNN, JPDA позволяет одному обнаружению использоваться для обновления нескольких дорожек в его близости. Кроме того, несколько обнаружений могут кластеризироваться вместе с несколькими дорожками и обновить каждую из тех дорожек. Это решает вопрос о поврежденной дорожке. Однако JPDA не поддерживает несколько гипотеза по нескольким сканированиям, которая делает его субоптимальным подходом в противоположность MHT.
trackerJPDA
использует те же параметры в качестве trackerGNN
кроме:
ClutterDensity
является отношением FalseAlarmRate
и Volume
.
NewTargetDensity
заменяет Beta
.
TimeTolerance
допускает обработку нескольких обнаружений от радара сканирования в одном кластере.
Кроме того, установите TrackLogic
на Integrated
, который концептуально ближе к логике счета, используемой с предыдущими двумя средствами отслеживания.
tracker = trackerJPDA(... 'FilterInitializationFcn',@initCVFilter,... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold',gate, ... 'TrackLogic','Integrated',... 'DetectionProbability', pd, ... 'ClutterDensity', far/vol, ... 'NewTargetDensity', beta,... 'TimeTolerance',0.05); [trackSummary, truthSummary, trackMetrics, truthMetrics, timeJPDACV] = helperRunTracker(dataLog,tracker,false);
Несмотря на то, что, trackerJPDA не поддерживает несколько гипотеза, он позволяет обеим дорожкам оставаться подтвержденными в области неоднозначности, где о только одном обнаружении сообщают на обновление. Обе дорожки могут быть присвоены обнаружению с различными вероятностями. Однако дорожки пересекают друг друга, как наблюдается прежде с другими средствами отслеживания. Метрики повреждаются, количество каждой истины равняется также 1.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 3 true 191 false 2 2 true 191 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 2 192 1 1 3 1 192 1 2
Точность отслеживания на одном уровне с тем, что получено с trackerGNN
и trackerTOMHT
.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 44.918 29.911 5.1894 3.5599 2 58.904 31.484 7.0023 3.0944 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 47.304 29.606 5.4677 3.5093 3 56.106 31.564 6.5976 3.1815
Как замечено с другими двумя средствами отслеживания, поворот, прежде чем область неоднозначности лучше обращена со взаимодействующими многоуровневыми моделями. trackerJPDA
может также использоваться с trackingIMM
, с помощью того же FilterInitializationFcn
как прежде.
tracker = trackerJPDA( ... 'FilterInitializationFcn',@initIMMFilter,... 'MaxNumTracks', numTracks, ... 'MaxNumSensors', 1, ... 'AssignmentThreshold',gate, ... 'TrackLogic','Integrated',... 'DetectionProbability', pd, ... 'ClutterDensity', far/vol, ... 'NewTargetDensity', beta,... 'TimeTolerance',0.05); [trackSummary, truthSummary, trackMetrics, truthMetrics,timeJPDAIMM] = helperRunTracker(dataLog,tracker,true);
Результаты сопоставимы с trackerTOMHT
благодаря Взаимодействующим Многоуровневым моделям, цели более точно прослежены во время поворота и достаточно разделяются прежде, чем ввести область неоднозначности. Обе дорожки 1 и 2 присвоены цели с нулевыми количествами пропуска.
disp(trackSummary) disp(truthSummary)
TrackID AssignedTruthID Surviving TotalLength DivergenceStatus _______ _______________ _________ ___________ ________________ 1 2 true 191 false 2 3 true 191 false TruthID AssociatedTrackID TotalLength BreakCount EstablishmentLength _______ _________________ ___________ __________ ___________________ 2 1 192 0 1 3 2 192 0 2
Снова, результаты точности отслеживания подобны тому, что получено ранее с помощью trackerGNN
и trackerTOMHT
.
disp(trackMetrics) disp(truthMetrics)
TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 58.846 26.736 7.3055 5.0927 2 39.011 27.756 5.5784 3.5553 TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 58.846 26.736 7.3055 5.0927 3 39.011 27.756 5.5784 3.5553
Другая точка сравнения для каждой комбинации средства отслеживания и фильтра является временем выполнения. График ниже записей показов длительности цикла отслеживания. Результаты нормированы на основе значения во время выполнения средства отслеживания GNN с моделью CV.
figure c1 = categorical({'CV','IMM'}); timeData = [timeGNNCV timeJPDACV timeTOMHTCV ; timeGNNIMM timeJPDAIMM timeTOMHTIMM]/timeGNNCV; bar(c1,timeData) legend('GNN','JPDA','TOMHT','Location','northwest') ylabel('Normalized Time (x timeGNN-CV)') title('Time Performance Comparison') ax = gca; ax.YGrid = 'on';
Результаты показывают, что GNN и JPDA могут отследить цели в 5 - 6 раз быстрее, чем MHT в зависимости от модели движения. Модель движения IMM делает все три средства отслеживания запущенными в 3 - 4 раза медленнее. Обратите внимание на то, что каждое время вычислений средства отслеживания отличается по-другому в зависимости от количества сценария цели, плотности ложных предупреждений, плотности целей, и т.д. Этот пример не гарантирует подобное сравнение производительности в различных вариантах использования.
В этом примере вы создали сценарий, в котором две маневрирующих цели обнаруживаются одним датчиком, где часть их движения в области неоднозначности. Вы использовали шесть комбинаций средств отслеживания и фильтров, чтобы показать вклад каждого к полному отслеживанию. Вы заметили, что постоянный скоростной фильтр был менее точным в отслеживании целей во время их маневра, который потребовал взаимодействующего фильтра многоуровневой модели. Вы также наблюдали, что способность MHT и JPDA обработала случай неоднозначной ассоциации обнаружений к дорожкам, и как это может использоваться, чтобы поддержать непрерывное отслеживание, в то время как средство отслеживания одно гипотезы не может сделать этого. Наконец, вы заметили компромиссы между отслеживанием результатов и время вычислений при выборе средства отслеживания. В этом случае JPDA оказывается наилучшим вариантом. В различных сценариях можно потребовать более комплексного MHT, когда ни GNN, ни JPDA не дают приемлемые результаты отслеживания. Можно также предпочесть GNN, если существует меньше областей неоднозначности или низко создает помехи плотности.