trackerPHD

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

Описание

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

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

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

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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

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

Ps=(1DeathRate)Δ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 вектора уменьшения положительных значений, [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, как показано в синтаксисе использования.

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

Параметры дорожки утверждают систему координат в виде struct или массива структур. Используйте это свойство задать систему координат состояния дорожки и как преобразовать дорожку от средства отслеживания (названный источником) система координат к системе координат термофиксатора.

Это свойство является настраиваемым.

Типы данных: 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 как поле для каждого 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Предскажите состояние дорожки
deleteTrackУдалите существующую дорожку
initializeTrackИнициализируйте новый трек
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