exponenta event banner

trackerPHD

Мультисенсорный, многообъектный PHD-трекер

Описание

trackerPHD Система object™ представляет собой трекер, способный обрабатывать обнаружения множества целей от множества датчиков. Трекер использует фильтр плотности гипотез о множественной вероятности (PHD) для оценки состояний точечных целей и расширенных объектов. PHD - это функция, определяемая по состоянию-пространству системы слежения, и ее значение в состоянии определяется как ожидаемое количество целей на единицу объема состояния-пространства. PHD представлен взвешенным суммированием (смесью) функций плотности вероятности, а пики в PHD соответствуют возможным целям. Обзор функционирования трекера см. в разделе Алгоритмы.

По умолчанию trackerPHD может отслеживать расширенные объекты с помощью ggiwphd фильтр, моделирующий обнаружения из расширенного объекта в виде облака точек синтаксического анализа. Также можно использовать trackerPHD с gmphd фильтры, отслеживающие целевые точки и расширенные объекты с назначенными фигурами. Входами в трекер являются отчеты об обнаружении, генерируемые objectDetection, fusionRadarSensor, irSensor, или sonarSensor объекты. Трекер выводит все отслеживаемые дорожки и информацию об их анализе.

Для отслеживания целей с помощью этого объекта:

  1. Создать trackerPHD и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

tracker = trackerPHD создает trackerPHD Системный объект со значениями свойств по умолчанию.

пример

tracker = trackerPHD(Name,Value) задает свойства для трекера, используя одну или несколько пар имя-значение. Например, trackerPHD('MaxNumTracks',100) создает PHD-трекер, который допускает максимум 100 треков. Заключите каждое имя свойства в кавычки.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Уникальный идентификатор трекера, указанный как неотрицательное целое число. Это свойство используется в качестве SourceIndex в выходах трекера и различает дорожки, которые поступают от разных трекеров в системе с несколькими трекерами. Необходимо указать это свойство как положительное целое число, чтобы использовать выходные данные дорожки в качестве входных данных для фузера дорожки.

Пример: 1

Конфигурация датчиков слежения, заданная как массив ячеек trackingSensorConfiguration объекты. Это свойство предоставляет трекеру информацию о конфигурации датчика слежения, такую как пределы обнаружения датчика и разрешение датчика. Обратите внимание, что нет значений по умолчанию для SensorConfigurations и необходимо указать SensorConfigurations перед использованием трекера. Однако можно обновить конфигурацию, установив HasSensorConfigurationsInput свойство для true и указание входных данных конфигурации, config. Если установить MaxDetsPerObject имущества trackingSensorConfiguration объект 1, трекер создает только один раздел, так что максимум одно обнаружение может быть назначено каждой цели.

Функция для разбиения обнаружений на ячейки обнаружения, заданная как дескриптор функции или как символьный вектор. Когда каждый датчик может сообщать о нескольких обнаружениях на объект, требуется функция секционирования. Функция секционирования сообщает обо всех возможных секциях обнаружений от датчика. В каждом разделе обнаружения разделяются на взаимоисключающие ячейки обнаружения, предполагая, что каждая ячейка обнаружения принадлежит одному расширенному объекту.

Можно также указать собственную функцию секционирования обнаружений. Для получения рекомендаций по написанию этой функции можно ознакомиться с подробностями функции секционирования по умолчанию. partitionDetections, с использованием type команда как:

type partitionDetections

Пример: @myfunction или 'myfunction'

Типы данных: function_handle | char

Коэффициент рождаемости новых целей в плотности, определяемый как скаляр. Коэффициент рождаемости указывает ожидаемое число целевых показателей, добавленных в плотности за единицу времени. Плотность при рождении создается с помощью FilterInitializationFcn из trackingSensorConfiguration используется с трекером. В общем случае трекер добавляет компоненты в функцию плотности двумя способами:

  1. Прогнозируемая плотность при рождении - плотность, инициализированная FilterInitializationFcn функция при вызове без входов.

  2. Адаптивная плотность при рождении - плотность, инициализированная FilterInitializationFcn функция при вызове с входами обнаружений. Обнаружения выбираются трекером на основании их логарифмической вероятности ассоциации с текущими оценками целей.

Обратите внимание, что значение для BirthRate свойство представляет собой суммирование как прогнозирующей плотности при рождении, так и адаптивной плотности при рождении для каждого временного шага.

Пример: 0.01

Типы данных: single | double

Коэффициент смертности компонентов в плотности, определяемый как скаляр. Коэффициент смертности указывает скорость, с которой компонент исчезает в плотности после одного временного шага. Коэффициент смертности (Pd) относится к вероятности выживания (Ps) компонента между последовательными временными шагами на

Ps = (1 Pd) ΔT

где ΔT - временной шаг.

Пример: 1e-4

Типы данных: single | double

Порог выбора обнаружений для инициализации компонента, заданный как положительный скаляр. Во время коррекции трекер вычисляет вероятность ассоциации между существующими дорожками и ячейками обнаружения. Если вероятность ассоциации (заданная отрицательным логарифмическим правдоподобием) ячейки обнаружения для всех существующих дорожек выше порога (что означает, что ячейка обнаружения имеет низкую вероятность ассоциации с существующими дорожками), ячейка обнаружения используется для инициализации новых компонентов в адаптивной плотности рождения.

Пример: 18.1

Типы данных: single | double

Порог инициализации предварительной дорожки, указанный как скаляр. Если вес компонента превышает пороговое значение, заданное ExtractionThreshold свойство, компонент помечается как 'Tentative' трек и дано TrackID.

Пример: 0.45

Типы данных: single | double

Порог подтверждения дорожки, заданный как скаляр. В trackerPHD объект, дорожка может иметь несколько компонентов, совместно использующих один и тот же TrackID. Если суммирование веса компонентов предварительной дорожки выше порога, заданного ConfirmationThreshold свойство, состояние дорожки помечено как 'Confirmed'.

Пример: 0.85

Типы данных: single | double

Порог удаления компонента, заданный как скаляр. В PHD-трекере, если вес компонента ниже значения, указанного DeletionThreshold свойство, компонент удаляется.

Пример: 0.01

Типы данных: single | double

Порог объединения компонентов, заданный как действительный положительный скаляр. В PHD-трекере, если расстояние Kullback-Leibler между компонентами с тем же TrackID меньше значения, указанного MergingThreshold затем эти компоненты объединяются в один компонент. Объединенный вес нового компонента равен сумме весов предварительно объединенных компонентов. Кроме того, если объединенный вес выше первого порога, указанного в LabelingThresholds объединенный вес усекается до первого порога. Обратите внимание, что компоненты с TrackID равно 0 также могут быть объединены друг с другом.

Пример: 30

Типы данных: single | double

Пороговые значения маркировки, определенные как вектор 1 на 3 уменьшающихся положительных значений, [C1, C2, С3]. На основе LabelingThresholds , трекер управляет компонентами в плотности, используя следующие правила:

  1. Вес любого компонента, который выше первого порогового C1, уменьшается до C1.

  2. Для всех компонентов с одинаковым TrackID, если наибольший вес среди этих компонентов больше C2, то компонент с наибольшим весом сохраняется для сохранения TrackID, в то время как все остальные компоненты удалены.

  3. Для всех компонентов с одинаковым TrackID, если отношение наибольшего веса к суммированию веса всех этих компонентов больше C3, то компонент с наибольшим весом сохраняется для сохранения TrackID, в то время как все остальные компоненты удалены.

  4. Если ни условие 2, ни условие 3 не выполняются, то компонент с наибольшим весом сохраняет TrackID, в то время как метки всех других компонентов имеют значение 0. Когда это происходит, это по существу означает, что некоторые компоненты могут представлять другие объекты. Эта обработка сохраняет возможность повторного извлечения этих незарезервированных компонентов в будущем.

Типы данных: single | double

Включить обновление конфигураций датчиков со временем, указанным как false или true. Установить для этого свойства значение true при необходимости обновления конфигурации датчика со временем. Кроме того, если для этого свойства установлено значение true, трекер должен вызываться с вводом конфигурации, config, как показано в синтаксисе использования.

Типы данных: logical

Параметры опорного кадра состояния дорожки, заданные как структура или массив структуры. Трекер передает StateParameters значения свойств для StateParameters свойства созданных дорожек. Эти параметры можно использовать для определения опорной рамки, в которой сообщается о дорожке, или других требуемых атрибутов сгенерированных дорожек.

Например, можно использовать следующую структуру для определения прямоугольной опорной рамки, исходная позиция которой находится в [10 10 0] м и чья исходная скорость составляет [2-2 0] м/с относительно кадра сценария.

Имя поляСтоимость
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

Настраиваемый: Да

Типы данных: struct

Это свойство доступно только для чтения.

Количество дорожек, поддерживаемых трекером, возвращаемых как неотрицательное целое число.

Типы данных: double

Это свойство доступно только для чтения.

Количество подтвержденных дорожек, возвращаемых как неотрицательное целое число. Если IsConfirmed поле выходной структуры пути true, трасса подтверждена.

Типы данных: double

Максимальное количество датчиков, которые могут быть подключены к трекеру, указанное как положительное целое число. MaxNumSensors должно быть больше или равно наибольшему значению SensorIndex найдено во всех обнаружениях, использованных для обновления трекера. SensorIndex является свойством objectDetection объект.

Типы данных: single | double

Максимальное количество дорожек, которое может поддерживать трекер, указанное как положительное целое число.

Типы данных: single | double

Использование

Для обработки обнаружений и обновления треков вызовите трекер с аргументами, как если бы это была функция (описана здесь).

Описание

confirmedTracks = tracker(detections,time) возвращает список подтвержденных дорожек, которые обновляются из списка обнаружений, detections, во время обновления, time. Подтвержденные дорожки корректируются и прогнозируются до времени обновления.

confirmedTracks = tracker(detections,config,time) также определяет входной сигнал конфигурации датчика, config. Этот синтаксис используется при изменении конфигурации датчиков со временем. Чтобы включить этот синтаксис, установите HasSensorConfigurationsInput свойство для true.

[confirmedTracks,tentativeTracks,allTracks] = tracker(___) также возвращает список предварительных дорожек, tentativeTracksи список всех треков, allTracks. Этот выходной синтаксис можно использовать с любым из предыдущих входных синтаксисов.

[confirmedTracks,tentativeTracks,allTracks,analysisInformation] = tracker(___) также возвращает аналитическую информацию, analysisInformation, который может использоваться для анализа дорожек. Этот выходной синтаксис можно использовать с любым из предыдущих входных синтаксисов.

Входные аргументы

развернуть все

Список обнаружения, указанный как массив ячеек objectDetection объекты. Time значение свойства каждого objectDetection объект должен быть меньше или равен текущему времени обновления, timeи больше предыдущего значения времени, использованного для обновления трекера. Также, Time различия между различными objectDetection объекты в массиве ячеек не обязательно должны быть равными.

Время обновления, указанное как скаляр. Трекер обновляет все дорожки до этого времени. Единицы измерения в секундах.

time должно быть больше или равно наибольшему Time значение свойства objectDetection объекты на входе detections список. time должен увеличиваться с каждым обновлением трекера.

Типы данных: single | double

Конфигурации датчиков, определяемые как массив структур, массив ячеек структур или массив ячеек trackingSensorConfiguration объекты. Если значение задается с помощью массива структур или массива ячеек структур, необходимо включить SensorIndex в качестве поля для каждой структуры. Другие необязательные поля в каждой структуре должны иметь то же имя, что и одно из свойств trackingSensorConfiguration объект. Обратите внимание, что необходимо указать только конфигурации датчиков, которые необходимо обновить. Например, если требуется только обновить IsValidTime свойство для пятого датчика, укажите значение для config как struct('SensorIndex',5,'IsValidTime',false).

Зависимости

Чтобы включить этот аргумент, установите HasSensorConfigurationsInput свойство для true.

Выходные аргументы

развернуть все

Подтвержденные дорожки, обновленные до текущего времени, возвращенные в виде структуры или массива структур. Каждая структура соответствует дорожке. Дорожка подтверждается, если суммарный вес ее компонентов превышает порог, заданный ConfirmationThreshold собственность. Если дорожка подтверждена, IsConfirmed поле структуры true. Поля подтвержденной структуры дорожек определяются в структуре дорожек.

Типы данных: struct

Предварительные дорожки, возвращаемые как структура или массив структур. Каждая структура соответствует дорожке. Дорожка является предварительной, если суммарный вес ее компонентов превышает порог, заданный ExtractionThreshold свойство, но ниже порогового значения, указанного ConfirmationThreshold собственность. В этом случае IsConfirmed поле структуры false. Поля структуры определяются в разделе Структура дорожки.

Типы данных: struct

Все дорожки, возвращенные как структура или массив структур. Каждая структура соответствует дорожке. Набор всех треков состоит из подтвержденных и предварительных треков. Поля структуры определяются в разделе Структура дорожки.

Типы данных: struct

Дополнительная информация для анализа обновлений отслеживания, возвращенная в виде структуры. К полям этой структуры относятся:

ОбластьОписание
CorrectionOrder

Порядок, в котором используются датчики для коррекции оценки состояния, возвращаемый в виде вектора строки SensorIndex. Например, [1 3 2 4].

TrackIDsAtStepBeginning

Отслеживать идентификаторы при начале шага.

DeletedTrackIDs

Идентификаторы дорожек, удаленных во время шага.

TrackIDsAtStepEnd

Отслеживать идентификаторы по завершении шага.

SensorAnalysisInfo

Массив данных анализа датчиков.

SensorAnalysisInfo поле может включать в себя несколько отчетов с информацией о датчиках. Каждый отчет представляет собой структуру, содержащую:

ОбластьОписание
SensorIndex

Индекс датчика.

DetectionCells

Ячейки обнаружения, возвращаемые в виде логической матрицы. Каждый столбец матрицы обозначает ячейку обнаружения. В каждом столбце, если i-й элемент равен 1, то i-е обнаружение принадлежит ячейке обнаружения, обозначенной этим столбцом.

DetectionLikelihoods

Возможности ассоциации между компонентами в функции плотности и ячейках обнаружения, возвращаемые в виде матрицы N-by-P. N - количество компонентов в функции плотности, а P - число ячеек детектирования.

IsBirthCells

Указывает, перечислены ли ячейки обнаружения в DetectionCells рождают новые дорожки, возвращаемые как 1-by-P логический вектор, где P - количество ячеек детектирования.

NumPartitions

Количество разделов.

DetectionProbability

Вероятность существующих следов, обнаруживаемых датчиком, определенным как вектор ряда 1 на Н, где N - количество компонентов в плотности распределения.

LabelsBeforeCorrection

Метки компонентов в функции плотности перед коррекцией, возвращаемые в виде вектора строки 1-by-Mb. Мб - количество компонентов, сохраненных в трекере до исправления. Каждый элемент вектора является TrackID. Например, [1 1 2 0 0]. Обратите внимание, что несколько компонентов могут совместно использоваться TrackID.

LabelsAfterCorrection

Метки компонентов в функции плотности после коррекции, возвращаемые в виде вектора строки 1-by-Ma. Ma - количество компонентов, сохраняемых в трекере после коррекции. Каждый элемент вектора является TrackID. Например, [1 1 1 2 2 0 0]. Обратите внимание, что несколько компонентов могут совместно использоваться TrackID.

WeightsBeforeCorrection

Веса компонентов в функции плотности до коррекции, возвращаемые в виде вектора строки 1-by-Mb. Мб - количество компонентов, сохраненных в трекере до исправления. Каждый элемент вектора является весом соответствующего компонента, приведенного в LabelsBeforeCorrection. Например, [0,1 0,5 0,7 0,3 0,2].

WeightsAfterCorrection

Веса компонентов в функции плотности после коррекции, возвращаемые в виде вектора строки 1-by-Ma. Ma - количество компонентов, сохраняемых в трекере после коррекции. Каждый элемент вектора является весом соответствующего компонента, приведенного в LabelsAfterCorrection. Например, [0,1 0,4 0,2 0,6 0,3 0,2 0,2].

Типы данных: struct

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

predictTracksToTimeПрогнозировать состояние дорожки
deleteTrackУдалить существующую дорожку
initializeTrackИнициализировать новую дорожку
sensorIndicesПеречень индексов датчиков
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
isLockedОпределить, используется ли объект System
cloneСоздать повторяющийся объект System
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Настройте конфигурацию датчика, создайте PHD-трекер и сообщите трекеру об обнаружениях.

    % Create sensor configuration. Specify clutter density of the sensor and
    % set the IsValidTime property to true.
    configuration = trackingSensorConfiguration(1);
    configuration.ClutterDensity = 1e-7;   
    configuration.IsValidTime = true;
    
    % Create a PHD tracker.
    tracker = trackerPHD('SensorConfigurations',configuration);
    
    % Create detections near points [5;-5;0] and [-5;5;0] at t=0, and 
    % update the tracker with these detections.
    detections = cell(20,1);
    for i = 1:10
        detections{i} = objectDetection(0,[5;-5;0] + 0.2*randn(3,1));
    end
    for j = 11:20
        detections{j} = objectDetection(0,[-5;5;0] + 0.2*randn(3,1));
    end

    tracker(detections,0);

Обновите трекер еще раз через 0,1 секунд, предположив, что цели движутся с постоянной скоростью [1; 2; 0] единиц в секунду.

    dT = 0.1;
    for i = 1:20
        detections{i}.Time = detections{i}.Time + dT;
        detections{i}.Measurement = detections{i}.Measurement + [1;2;0]*dT;
    end
    [confTracks,tentTracks,allTracks] = tracker(detections,dT);

Визуализация обнаружений и подтвержденных дорожек.

    % Obtain measurements from detections.
    d = [detections{:}];
    measurements = [d.Measurement];
    
    % Extract positions of confirmed tracking using getTrackPositions function.
    % Note that we used the default sensor configuration
    % FilterInitializationFcn, initcvggiwphd, which uses a constant velocity
    % model and defines the states as [x;vx;y;vy;z;vy].
    positionSelector = [1 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 1 0];
    positions = getTrackPositions(confTracks,positionSelector);
    
    figure()
    plot(measurements(1,:),measurements(2,:),'x','MarkerSize',5,'MarkerEdgeColor','b');
    hold on;
    plot(positions(1,1),positions(1,2),'v','MarkerSize',5,'MarkerEdgeColor','r' );
    hold on;
    plot(positions(2,1),positions(2,2),'^','MarkerSize',5,'MarkerEdgeColor','r' );
    legend('Detections','Track 1','Track 2')
    xlabel('x')
    ylabel('y')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Detections, Track 1, Track 2.

Подробнее

развернуть все

Алгоритмы

развернуть все

Ссылки

[1] Granstorm, K., К. Ландкуист и О. Оргунер. «Расширенное отслеживание цели с помощью PHD-фильтра гауссовой смеси». Сделки IEEE по аэрокосмическим и электронным системам. Том 48, номер 4, 2012, стр. 3268-3286.

[2] Грансторм, К. и О. Оргунер ". PHD-фильтр для отслеживания нескольких расширенных целей с помощью случайных матриц ". Транзакции IEEE при обработке сигналов. Том 60, номер 11, 2012, стр. 5657-5671.

[3] Грансторм, К. и А. Натале, П. Брака, Г. Людено и Ф. Серафино. «Гамма-гауссова гипотеза обратной вероятности Вишарта для расширенного сопровождения цели с использованием данных морской РЛС X-диапазона». Сделки IEEE по геологии и дистанционному зондированию. Том 53, номер 12, 2015, стр. 6617-6631.

Расширенные возможности

.
Представлен в R2019a