trackerPHD

Мультидатчик, средство отслеживания мультиобъекта PHD

Описание

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

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

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

  1. Создайте объект trackerPHD и установите его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

tracker = trackerPHD
tracker = trackerPHD(Name,Value)

Описание

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

пример

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Настройка отслеживания датчиков, заданных как массив ячеек объектов 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

Уровень смертности компонентов в плотности, заданной как скаляр. Уровень смертности указывает на уровень, на котором компонент исчезает в плотности после одного временного шага. Уровень смертности относится к вероятности выживания (P s) компонента между последовательными временными шагами

где Δ 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 вектор уменьшения положительных значений, [C 1, C 2, C 3]. На основе свойства LabelingThresholds средство отслеживания управляет компонентами в плотности, использующей эти правила:

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

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

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

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

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

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

Типы данных: логический

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис

confirmedTracks = tracker(detections,time)
confirmedTracks = tracker(detections,config,time)
[confirmedTracks,tentativeTracks,allTracks] = tracker(___)
[confirmedTracks,tentativeTracks,allTracks,analysisInformation] = tracker(___)

Описание

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 должен быть больше, чем или равным самому большому значению свойства Time объектов objectDetection в списке входов detections. time должен увеличиться в значении с каждым обновлением средства отслеживания.

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

Настройки датчика, заданные как массив структур, массив ячеек структур или массив ячеек объектов trackingSensorConfiguration. Если вы задаете значение с помощью массива структур или массива ячеек структур, необходимо включать SensorIndex как поле для каждого struct. Другие дополнительные поля в каждом struct должны иметь то же имя как одно из свойств объекта 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 th элемент равняется 1, то i th обнаружение принадлежит ячейке обнаружения, обозначенной тем столбцом.

DetectionLikelihoods

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

IsBirthCells

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

NumPartitions

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

DetectionProbability

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

LabelsBeforeCorrection

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

LabelsAfterCorrection

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

WeightsBeforeCorrection

Веса компонентов в функции плотности перед исправлением, возвращенным как 1 Mb вектором - строкой. M b является количеством компонентов, сохраняемых в средстве отслеживания перед исправлением. Каждый элемент вектора является весом соответствующего компонента, данного в LabelsBeforeCorrection. Например, [0.1 0.5 0.7 0.3 0.2].

WeightsAfterCorrection

Веса компонентов в функции плотности после исправления, возвращенного как 1 Ma вектором - строкой. M количества компонентов, сохраняемых в средстве отслеживания после исправления. Каждый элемент вектора является весом соответствующего компонента, данного в LabelsAfterCorrection. Например, [0.1 0.4 0.2 0.6 0.3 0.2 0.2].

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

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

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

release(obj)

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

predictTracksToTimeПредскажите состояние дорожки
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
isLockedОпределите, используется ли Системный объект
cloneСоздайте объект дублированной системы
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Настройте настройку датчика, создайте средство отслеживания 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')

Больше о

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

Алгоритмы

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

Ссылки

[1] Granstorm, K., К. Ландкуист и О. Оргунер. "Расширенное целевое отслеживание с помощью фильтра Gaussian-mixture PHD". Транзакции IEEE на Космических и Электронных системах. Издание 48, Номер 4, 2012, стр 3268-3286.

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

[3] Granstorm, K., и А. Натале, П. Брэка, Г. Лудено и Ф. Серафино. "Гамма Гауссова инверсия плотность гипотезы вероятности Уишарта для расширенной целевой X-полосы использования отслеживания морские радарные данные". Транзакции IEEE на Геонауке и Дистанционном зондировании. Издание 53, Номер 12, 2015, стр 6617-6631.

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

Введенный в R2019a