Joint Probabilistic Data Association Multi Object Tracker

Совместный вероятностный трекер ассоциации данных

  • Библиотека:
  • Sensor Fusion and Tracking Toolbox/Мультиобъектные алгоритмы отслеживания

  • Joint Probabilistic Data Association Multi Object Tracker block

Описание

Блок Joint Probabilistic Data Association Multi Object Tracker способен обрабатывать обнаружения нескольких целей с нескольких датчиков. Трекер использует совместную вероятностную ассоциацию данных, чтобы назначить обнаружения каждой дорожке. Трекер применяет мягкое назначение, в котором несколько обнаружений могут внести свой вклад в каждую дорожку. Трекер инициализирует, подтверждает, исправляет, предсказывает (выполняет покатывание) и удаляет треки. Трекер оценивает вектор состояния и оценивает состояние ковариационной матрицы ошибки для каждой дорожки. Каждое обнаружение назначается, по меньшей мере, одной дорожке. Если обнаружение не может быть назначено какому-либо существующему треку, трекер создает новый трек.

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

Порты

Вход

расширить все

Список обнаружений, заданный как шина Simulink, содержащая структуру MATLAB. Структура имеет форму:

ОбластьОписаниеНапечатать
NumDetectionsКоличество обнаруженийЦелое число
DetectionsОбнаружения объектовМассив objectDetection структуры. Первый NumDetections из этих обнаружений являются фактическими обнаружениями.

Области обнаружения:

ОбластьОписаниеНапечатать
TimeВремя измеренияSingle или Double
MeasurementИзмерения объектаSingle или Double
MeasurementNoiseМатрица ковариации шума измеренияSingle или Double
SensorIndexУникальный идентификатор датчикаSingle или Double
ObjectClassIDИдентификатор классификации объектовSingle или Double
MeasurementParametersПараметры, используемые функциями инициализации фильтров отслеживанияШина Simulink
ObjectAttributesТрекеру передана дополнительная информацияШина Simulink

См. objectDetection для более подробного объяснения этих полей.

Примечание

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

Отследите время обновления, заданное как действительный скаляр в секундах. Трекер обновляет все треки к этому времени. Время обновления должно всегда увеличиваться с каждым вызовом блока. Время обновления должно быть как минимум таким же большим, как и самое большое Time задается в Detections входном порте.

Если порт не включен, время обновления определяется временем симуляции, управляемым Simulink.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting задайте Prediction time source Input port.

Матрица стоимости, заданная как вещественная N t-by- N d-матрица, где N t - количество существующих треков, а N d - количество текущих обнаружений.

Строки матрицы затрат соответствуют существующим трекам. Столбцы соответствуют обнаружениям. Дорожки упорядочиваются так, как они появляются в списке дорожек из All Tracks выходного порта при предыдущем вызове блока.

В первом обновлении трекера или если у трекера нет предыдущих треков, присвойте матрице затрат размер [0, N d]. Стоимость должна быть рассчитана так, чтобы более низкие затраты указывали на более высокую вероятность того, что трекер присваивает обнаружение дорожке. Чтобы предотвратить назначение определенных обнаружений определенным трекам, используйте Inf.

Если этот порт не включен, фильтр, инициализированный Filter initialization function, вычисляет матрицу затрат с помощью метода расстояния.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable cost matrix input.

Обнаруживаемые идентификаторы дорожек, заданные как действительный вектор M -by-1 или M -by-2 матрица. Обнаруживаемые дорожки являются треками, которые датчики ожидают обнаружить. Первый столбец матрицы содержит список идентификаторов дорожек, которые датчики сообщают как обнаруживаемые. Дополнительный второй столбец позволяет добавить вероятность обнаружения для каждой дорожки.

Дорожки, идентификаторы которых не включены в Detectable TrackIDs, считаются неопределяемыми. Логика удаления дорожки не рассчитывает отсутствие обнаружения как «пропущенное обнаружение» в целях удаления дорожки.

Если этот порт не включен, трекер принимает, что все дорожки обнаруживаются при каждом вызове блока.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable detectable track IDs Input.

Отслеживайте параметры состояния, заданные как шина Simulink, содержащая структуру MATLAB. Структура имеет форму:

ОбластьОписание
NumParametersКоличество параметров, не являющихся параметрами состояния по умолчанию, заданное в виде неотрицательного целого числа
ParametersМассив структур параметров состояния

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

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

Имя поляЗначение
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

Зависимости

Чтобы включить этот порт, на вкладке Tracker Configuration выберите параметр Update track state parameters with time.

Выход

расширить все

Подтвержденные дорожки, возвращенные как шина Simulink, содержащая структуру MATLAB. Структура имеет форму:

ОбластьОписание
NumTracksКоличество дорожек
TracksМассив структур дорожки длиной, заданной параметром Maximum number of tracks. Только первый NumTracks из них являются фактическими треками.

Поля структуры дорожки показаны в Track Structure.

В зависимости от логики дорожки, дорожка подтверждается, если:

  • История - трек получает как минимум M обнаружений в последней N обновления. M и N указаны в Confirmation threshold для History логика.

  • Интегрированный - Интегрированная вероятность существования дорожки выше порога подтверждения, заданного в Confirmation threshold для Integrated логика.

Ориентировочные дорожки, возвращенные как шина Simulink, содержащая структуру MATLAB. Дорожка является ориентировочной, прежде чем она будет подтверждена.

Поля структуры дорожки показаны в Track Structure.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable tentative tracks output.

Объединенный список подтвержденных и ориентировочных дорожек, возвращенных как шина Simulink, содержащая структуру MATLAB.

Поля структуры дорожки показаны в Track Structure.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable all tracks output.

Дополнительная информация для анализа обновлений трека, возвращенная как шина Simulink, содержащая структуру MATLAB.

В этой таблице показаны поля информационной структуры:

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

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

CostMatrix

Матрица затрат для присвоения.

Clusters

Массив ячеек из отчетов кластера. Для получения дополнительной информации см. раздел «Допустимые совместные события».

InitiatedTrackIDs

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

DeletedTrackIDs

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

TrackIDsAtStepEnd

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

The Clusters поле может включать несколько отчетов кластеров. Каждый отчет кластера представляет собой структуру, содержащую:

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

Индексы кластеризованных обнаружений.

TrackIDs

Отслеживайте идентификаторы кластеризованных дорожек.

ValidationMatrixМатрица валидации кластера. Для получения дополнительной информации см. раздел «Допустимые совместные события».
SensorIndex

Индекс исходного датчика кластеризованных обнаружений.

TimeStampСредняя метка времени кластеризованных обнаружений.
MarginalProbabilitiesМатрица краевых вероятностей ассоциации апостериорных соединений.

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable information output.

Параметры

расширить все

Управление трекерами

Функция инициализации фильтра, заданная как указатель на функцию или как вектор символов, содержащий имя действительной функции инициализации фильтра. Трекер использует функцию инициализации фильтра при создании новых треков.

Sensor Fusion and Tracking Toolbox™ обеспечивает многие функции инициализации:

Функция инициализацииОпределение функции
initcvkfИнициализируйте линейный фильтр Калмана с постоянной скоростью.
initcakfИнициализируйте линейный фильтр Калмана с постоянным ускорением.
initcvabfИнициализируйте альфа-бета фильтр с постоянной скоростью
initcaabfИнициализируйте альфа-бета фильтр с постоянным ускорением
initcvekfИнициализируйте расширенный фильтр Калмана с постоянной скоростью.
initcaekfИнициализируйте расширенный фильтр Калмана с постоянным ускорением.
initrpekfИнициализируйте параметризованный расширенный фильтр Калмана с постоянной скоростью.
initapekfИнициализируйте расширенный фильтр Калмана с параметризацией угла постоянной скорости.
initctekf Инициализируйте расширенный фильтр Калмана с постоянной скоростью поворота.
initcackfИнициализируйте кубический фильтр с постоянным ускорением.
initctckfИнициализируйте кубический фильтр постоянной скорости поворота.
initcvckfИнициализируйте кубический фильтр постоянной скорости.
initcvukfИнициализируйте сигма-точечный фильтр Калмана с постоянной скоростью.
initcaukf Инициализируйте сигма-точечный фильтр Калмана постоянного ускорения.
initctukfИнициализируйте неароматизированный сигма-точечный фильтр Калмана с постоянной скоростью поворота.
initcvmscekfИнициализируйте расширенный фильтр Калмана с постоянной скоростью в измененных сферических координатах.
initekfimmИнициализируйте отслеживающий фильтр IMM.

Вы также можете написать свою собственную функцию инициализации с помощью этого синтаксиса:

filter = filterInitializationFcn(detection)
Вход этой функции является отчетом об обнаружении, подобным тем, которые были созданы objectDetection. Выходные выходы этой функции должны быть объектом фильтра: trackingKF, trackingEKF, trackingUKF, trackingCKF, trackingGSF, trackingIMM, trackingMSCEKF, или trackingABF.

Для руководства при написании этой функции используйте type команда для исследования деталей встроенных функций MATLAB. Для примера:

type initcvekf

Примечание

trackerJPDA не принимает все функции инициализации фильтра в Sensor Fusion and Tracking Toolbox. Полный список функций инициализации фильтра, доступных в Sensor Fusion and Tracking Toolbox, приведен в Initialization разделе Оценочных фильтров.

Значение k для k-лучшего JPDA, заданное в виде положительного целого числа. Этот параметр определяет максимальное количество допустимых совместных событий для ассоциации дорожки и обнаружения каждого кластера. Установка этого свойства на конечное значение позволяет вам запустить k-лучший JPDA-трекер, который генерирует максимум k событий на кластер.

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

Вы также можете написать свою собственную функцию генерации.

  • Если для параметра Value of k for k-best JPDA задано значение infфункция должна иметь следующий синтаксис:

    FJE = myfunction(ValidationMatrix)
    Вход и выход из этой функции должны точно следовать форматам, используемым в jpdaEvents.

  • Если параметр Value of k for k-best JPDA установлен в конечное значение, функция должна иметь следующий синтаксис:

    [FJE,FJEProbs] = myfunction(likelihoodMatrix,k)
    Вход и выход из этой функции должны точно следовать форматам, используемым в jpdaEvents.

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

type jpdaEvents

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

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

Максимальное количество датчиков, которые может обработать блок, заданное как положительное целое число. Это значение должно быть больше или равно самому высокому SensorIndex значение входного параметра в Detections входном порте.

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

Обработка измерений вне последовательности, заданная как Terminate или Neglect. Каждое обнаружение имеет сопоставленную с ним временную метку, t d, и блок трекера имеет свою собственную временную метку, t t, которая обновляется в каждом вызове. Блок трекера рассматривает измерение как OOSM, если t d < t t.

Когда параметр задан как:

  • Terminate - Блок перестает запускаться, когда сталкивается с любыми несогласованными измерениями.

  • Neglect - Блок пренебрегает любыми несовпадающими измерениями и продолжает выполняться.

Примечание

Трекер требует всех входных обнаружений, которые имеют одинаковые SensorIndex иметь свои Time различия, ограниченные параметром Absolute tolerance between time stamps of detections. Поэтому, когда вы устанавливаете параметр Out-of-sequence measurements handling равным Neglectпри запуске трекера необходимо убедиться, что обнаружение вне последовательности имеет временные метки строго меньше, чем предыдущая временная метка.

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

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

Имя поляЗначение
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

Можно обновить параметры состояния дорожки через State Parameters входной порт, выбрав параметр Update track state parameters with time.

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

Выберите этот параметр, чтобы включить входной порт для параметров состояния дорожки через State Parameters входной порт.

  • Interpreted execution - Симулируйте модель с помощью интерпретатора MATLAB. Эта опция сокращает время запуска. В Interpreted execution mode, можно отлаживать исходный код блока.

  • Code generation - Симулируйте модель с помощью сгенерированного кода C. При первом запуске симуляции Simulink генерирует код С для блока. Код С повторно используется для последующих симуляций, пока модель не меняется. Эта опция требует дополнительного времени запуска.

Назначение

Порог для назначения обнаружений трекам (или порогу стробирования), заданный как положительный скаляр или вектор 1 на 2 [C 1 ,C 2], где C 1 ≤ C 2. Если задано в виде скаляра, заданное значение, val, расширяется до [val, Inf].

Первоначально трекер выполняет грубую оценку нормированного расстояния между всеми треками и обнаружениями. Трекер вычисляет только точное нормированное расстояние для комбинаций, грубое нормированное расстояние которых меньше C 2. Кроме того, трекер может только назначить обнаружение дорожке, если точное нормированное расстояние между ними меньше C 1. См. distance функция, используемая с отслеживающими фильтрами (такими как trackingCKF и trackingEKF) для пояснения расчета расстояния.

Совет:

  • Увеличьте значение C 2, если существуют комбинации дорожки и обнаружения, которые должны быть рассчитаны для назначения, но не являются. Уменьшите это значение, если вычисление стоимости занимает слишком много времени.

  • Увеличьте значение C 1, если есть обнаружения, которые должны быть назначены трекам, но не имеют. Уменьшите это значение, если есть обнаружения, которые назначены трекам, которым они не должны быть назначены (слишком далеко ).

Порог вероятности для инициализации новой дорожки, заданный как скаляр в области значений [0, 1]. Если вероятность связи обнаружения с любым из существующих треков меньше InitializationThresholdобнаружение используется для инициализации новой дорожки. Это позволяет обнаружениям, которые находятся в пределах логики валидации дорожки, но имеют вероятность ассоциации ниже, чем порог инициализации, чтобы породить новую дорожку.

Пример: 0.1

Вероятность обнаружения, заданная как скаляр в области значений [0, 1]. Это свойство используется в вычислениях маргинальных апостериорных вероятностей ассоциации и вероятности существования дорожки при инициализации и обновлении дорожки.

Пространственная плотность измерений загромождения, заданная в виде положительной скалярной величины. Плотность загромождения описывает ожидаемое количество ложных положительных обнаружений на модуль объема. Он используется как параметр модели загромождения Пуассона. Когда Type of track confirmation and deletion logic установлено на 'Integrated', этот параметр также используется при вычислении начальной вероятности существования дорожки.

Отслеживайте логику

Тип логики подтверждения и удаления, выбранный как:

  • History - Подтверждение и удаление отслеживания основаны на количестве раз, когда трек был назначен обнаружению в последних обновлениях трекера.

  • Integrated - Подтверждение и удаление трека основано на вероятности существования трека, которая интегрирована в функцию назначения.

Отследите порог подтверждения для логики истории, заданный как действительный вектор 1 на 2 положительных целых чисел [M N]. Дорожка подтверждается, если она получает хотя бы M обнаружений в последней N обновления.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'History'.

Отследите порог удаления для логики истории, заданный как действительный вектор 1 на 2 положительных целых чисел, [P Q]. Если, в P последнего Q tracker updates, подтвержденная дорожка не назначается никакому обнаружению, которое имеет вероятность больше, чем параметр Threshold for registering 'hit' or 'miss', затем эта дорожка удаляется.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'History'.

Порог для регистрации 'hit' или 'miss', заданное как скаляр в области значений [0, 1]. Логика истории треков регистрирует 'miss', и трек будет покрыт, если сумма предельных вероятностей назначений ниже HitMissThreshold. В противном случае логика истории треков регистрирует 'hit'.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'History'.

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

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'Integrated'.

Отследите порог удаления для интегрированной логики, заданный как положительная скалярная величина. Дорожка удаляется, если ее вероятность существования падает ниже этого порога.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'Integrated'.

Пространственная плотность новых целей, заданная как положительная скалярная величина. Новая целевая плотность описывает ожидаемое количество новых треков на модуль объема в пространстве измерений. Используется при вычислении вероятности существования дорожки во время инициализации дорожки.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'Integrated'.

Частота времени истинных целевых смертей, заданная как скаляр в области значений [0, 1]. Этот параметр описывает вероятность, с которой исчезают истинные цели. Оно связано с распространением вероятности существования дорожки (PTE):

PTE(t+δt)=(1DeathRate)δtPTE(t)

где DeathRate - частота времени истинных целевых смертей, а δt - временной интервал с момента предыдущего t времени обновления.

Зависимости

Чтобы включить этот параметр, установите Type of track confirmation and deletion logic равным 'Integrated'.

Настройка порта

Источник для времени предсказания, заданный как Input port или Auto. Выберите Input port для ввода времени обновления с помощью Prediction Time входного порта. В противном случае часы симуляции, управляемые Simulink, определяют время обновления.

Установите этот флажок, чтобы включить вход матрицы затрат с помощью Cost Matrix входного порта.

Установите этот флажок, чтобы включить Detectable track IDs входной порт.

Установите этот флажок, чтобы включить выход предварительных дорожек через Tentative Tracks выходной порт.

Установите этот флажок, чтобы включить выход всех дорожек через All Tracks выходной порт.

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

Источник выхода магистральной шины, заданный как:

  • Auto - Блок автоматически создает выход шины трека.

  • Property - Задайте имя выходной шины дорожки с помощью параметра Specify an output bus name.

Источник имени информационной шины выхода, заданный как один из следующих опций:

  • Auto - Блок автоматически создает имя выходной информационной шины.

  • Property - Задайте имя выходной информационной шины с помощью параметра Specify an output bus name.

Примеры моделей

Алгоритмы

расширить все

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ Simulink ®

.
Введенный в R2019b