Multi-Object Tracker

Создание и управление треками нескольких объектов

  • Библиотека:
  • Automated Driving Toolbox

  • Multi-Object Tracker block

Описание

Блок Multi-Object Tracker инициализирует, подтверждает, предсказывает, исправляет и удаляет дорожки движущихся объектов. Входами к трекеру мультиобъекта являются отчеты об обнаружении, сгенерированные блоками Driving Radar Data Generator и Vision Detection Generator. Мультиобъектный трекер принимает обнаружения от нескольких датчиков и присваивает их трекам с помощью глобального критерия ближайшего соседа (GNN). Каждое обнаружение присваивается отдельной дорожке. Если обнаружение не может быть назначено ни одному треку, многообъектный трекер создает новую дорожку.

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

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

Порты

Вход

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

Список обнаружений, заданный как шина Simulink, содержащая структуру MATLAB. См. раздел Группирование сигнальных линий в виртуальные шины (Simulink). Структура имеет форму:

ОбластьОписаниеНапечатать
NumDetectionsКоличество обнаруженийцелое число
IsValidTimeЛожь, когда обновления запрашиваются в моменты времени, которые находятся между интервалами вызова блоковБулев
DetectionsОбнаружения объектовМассив структур обнаружения объектов. Первый NumDetections из этих обнаружений являются фактическими обнаружениями.

Определения структур обнаружения объектов содержатся в Detections описаниях выходных портов блоков Driving Radar Data Generator и Vision Detection Generator.

Примечание

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

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

Примечание

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

Зависимости

Чтобы включить этот порт, установите Prediction time source равным Input port.

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

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

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

Зависимости

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

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

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

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

Зависимости

Чтобы включить этот порт, на вкладке 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. См. «Создание невиртуальных шин» (Simulink).

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

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

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

ОбластьОпределение
TrackIDУникальный идентификатор дорожки, используемый для различения нескольких дорожек.
BranchIDУникальный идентификатор ветви дорожки, используемый для различения нескольких ветвей дорожки.
SourceIndexУникальный исходный индекс, используемый для различения источников отслеживания в среде нескольких трекеров.
UpdateTimeВремя обновления дорожки. Модули указаны в секундах.
AgeКоличество обновлений дорожки.
State

Значение вектора состояния во время обновления.

StateCovariance

Ковариационная матрица неопределенности.

ObjectClassIDЦелое значение, представляющее классификацию объектов. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным трекам.
TrackLogicТип логики подтверждения и удаления. Это значение всегда 'History' для радарных датчиков, чтобы указать основанную на истории логику.
TrackLogicState

Текущее состояние типа логики дорожки, возвращаемое как 1-байтовый K логический массив. K - количество последних зарегистрированных логических состояний трека. В массиве 1 обозначает удар и 0 обозначает промах.

IsConfirmedСтатус подтверждения. Это поле true если дорожка подтверждена как действительная цель.
IsCoastedСостояние скручивания. Это поле true если дорожка обновляется без нового обнаружения.
IsSelfReported

Укажите, сообщает ли трек трекер. Это поле используется в среде слияния треков. Возвращается следующим true по умолчанию.

ObjectAttributesДополнительная информация о дорожке.

Для получения дополнительной информации об этих полях смотрите objectTrack.

Дорожка подтверждается, если:

  • По меньшей мере M обнаружения назначаются дорожке во время первых обновлений N после инициализации дорожки. Чтобы задать значения M и N, используйте параметр M and N for the M-out-of-N confirmation.

  • Обнаружение, инициирующее дорожку, имеет ObjectClassID больше нуля.

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

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

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

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

ОбластьОпределение
TrackIDУникальный идентификатор дорожки, используемый для различения нескольких дорожек.
BranchIDУникальный идентификатор ветви дорожки, используемый для различения нескольких ветвей дорожки.
SourceIndexУникальный исходный индекс, используемый для различения источников отслеживания в среде нескольких трекеров.
UpdateTimeВремя обновления дорожки. Модули указаны в секундах.
AgeКоличество обновлений дорожки.
State

Значение вектора состояния во время обновления.

StateCovariance

Ковариационная матрица неопределенности.

ObjectClassIDЦелое значение, представляющее классификацию объектов. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным трекам.
TrackLogicТип логики подтверждения и удаления. Это значение всегда 'History' для радарных датчиков, чтобы указать основанную на истории логику.
TrackLogicState

Текущее состояние типа логики дорожки, возвращаемое как 1-байтовый K логический массив. K - количество последних зарегистрированных логических состояний трека. В массиве 1 обозначает удар и 0 обозначает промах.

IsConfirmedСтатус подтверждения. Это поле true если дорожка подтверждена как действительная цель.
IsCoastedСостояние трассировки. Это поле true если дорожка обновляется без нового обнаружения.
IsSelfReported

Укажите, сообщает ли трек трекер. Это поле используется в среде слияния треков. Возвращается следующим true по умолчанию.

ObjectAttributesДополнительная информация о дорожке.

Для получения дополнительной информации об этих полях смотрите objectTrack.

Зависимости

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

Объединенный список подтвержденных и ориентировочных дорожек, возвращенных как шина Simulink, содержащая структуру MATLAB. См. «Создание невиртуальных шин» (Simulink).

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

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

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

ОбластьОпределение
TrackIDУникальный идентификатор дорожки, используемый для различения нескольких дорожек.
BranchIDУникальный идентификатор ветви дорожки, используемый для различения нескольких ветвей дорожки.
SourceIndexУникальный исходный индекс, используемый для различения источников отслеживания в среде нескольких трекеров.
UpdateTimeВремя обновления дорожки. Модули указаны в секундах.
AgeКоличество обновлений дорожки.
State

Значение вектора состояния во время обновления.

StateCovariance

Ковариационная матрица неопределенности.

ObjectClassIDЦелое значение, представляющее классификацию объектов. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным трекам.
TrackLogicТип логики подтверждения и удаления. Это значение всегда 'History' для радарных датчиков, чтобы указать основанную на истории логику.
TrackLogicState

Текущее состояние типа логики дорожки, возвращаемое как 1-байтовый K логический массив. K - количество последних зарегистрированных логических состояний трека. В массиве 1 обозначает удар и 0 обозначает промах.

IsConfirmedСтатус подтверждения. Это поле true если дорожка подтверждена как действительная цель.
IsCoastedСостояние трассировки. Это поле true если дорожка обновляется без нового обнаружения.
IsSelfReported

Укажите, сообщает ли трек трекер. Это поле используется в среде слияния треков. Возвращается следующим true по умолчанию.

ObjectAttributesДополнительная информация о дорожке.

Для получения дополнительной информации об этих полях смотрите objectTrack.

Зависимости

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

Параметры

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

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

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

Пример: 1

Функция инициализации фильтра Калмана, заданная как имя функции. Тулбокс обеспечивает несколько функций инициализации. Для примера функции инициализации см. initcvekf.

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

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

  • При установке N, учитывайте количество раз, которое вы хотите обновить трекер, прежде чем он подтвердит дорожку. Например, если трекер обновляется каждые 0,05 секунды, и вы позволяете 0,5 секунды принять решение о подтверждении, установите N = 10.

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

Пример: [3,5]

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

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

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

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

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

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

  • 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 входной порт.

Входы и выходы

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

Пример: Auto

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

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

Источник имени выхода шины, заданный как Auto или Property.

  • Если вы выбираете Autoблок автоматически создает имя шины.

  • Если вы выбираете Propertyукажите имя шины с помощью параметра Specify an output bus name.

Зависимости

Чтобы включить этот параметр, установите параметр Source of output bus name равным Property.

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

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

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

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

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

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

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