Track-Oriented Multi-Hypothesis Tracker

Track-Oriented Multi-Hypothesis Tracker

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

  • Track-Oriented Multi-Hypothesis Tracker block

Описание

Блок Track-Oriented Multi-Hypothesis Tracker обрабатывает обнаружения нескольких целей с нескольких датчиков. Блок трекера инициализирует, подтверждает, предсказывает, исправляет и удаляет треки. Входами к блоку трекера являются отчеты об обнаружении, сгенерированные objectDetection, fusionRadarSensor, irSensor, или sonarSensor объекты. Блок трекера оценивает вектор состояния и векторную ковариационную матрицу состояния для каждой дорожки. Трекер присваивает обнаружения на основе ориентированного на дорожки подхода с несколькими гипотезами.

Любой новый трек запускается в предварительном состоянии. Если предварительному дорожке назначено достаточное количество обнаружений, его статус меняется на подтвержденный. Если обнаружение уже имеет известную классификацию (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 -by - M, где N - количество ветвей, а M - количество текущих обнаружений.

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

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

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

Зависимости

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

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

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

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

Зависимости

Чтобы включить этот порт, на вкладке Port Setting, выберите Enable detectable branch 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.

Дорожка подтверждается, если она удовлетворяет порогу, заданному в параметре Confirmation threshold под вкладкой Track Logic .

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

Идентификаторы ветвей при начале обновления.

CostMatrix

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

Assignments

Назначения, возвращенные из assignTOMHT функция.

UnassignedTracks

Идентификаторы неназначенных ветвей, возвращенные с трекера.

UnassignedDetections

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

InitialBranchHistory

История ветви после ответвления и до обрезки.

InitialBranchScores

Ветви счетов перед обрезкой.

KeptBranchHistory

История ветви после начальной обрезки.

KeptBranchScores

Счета ветви после начальной обрезки.

Clusters

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

TrackIncompatibility

Матрица несовместимости ветвей. The (i,j) элемент true, если i -th и j -th ветви имеют общие обнаружения в своей истории или относятся к одной дорожке.

GlobalHypotheses

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

GlobalHypScoresОбщий счет глобальных гипотез.
PrunedBranches

Логический массив ветвей, которые pruneTrackBranches функция определяет, чтобы обрезать.

GlobalBranchProbabilities

Глобальная вероятность каждой ветви, существующей в глобальных гипотезах.

BranchesDeletedByPruning

Ветви, удаленные трекером.

BranchIDsAtStepEnd

Идентификаторы ветвей, когда обновление закончилось.

Зависимости

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

Все ветви, возвращенные как шина Simulink, содержащая структуру MATLAB.

Поля структуры ветви совпадают с полями структуры трека.

Зависимости

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

Параметры

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

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

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

Пример: 1

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

Sensor Fusion and Tracking Toolbox™ обеспечивает много функций инициализации, которые совместимы с этим блоком.

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

Можно также записать собственную функцию инициализации. Функция должна иметь следующий синтаксис:

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

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

type initcvekf

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

Пороговое значение для назначения обнаружений трекам, заданное как положительный скаляр, вектор 1 на 3 не уменьшающихся положительных значений, [C 1, C 2, C 3] или вектор a1 на 4 не уменьшающихся положительных значений, [C 1, C 2, C 3, C 4]. Если задано в виде скаляра, заданное значение, val, будет расширено до [0,3,0,7,1, Inf] * val. Если задано как [C 1, C 2, C 3], то оно будет развернуто как [C 1, C 2, C 3, Inf].

Пороги управляют (1) присвоением обнаружения дорожке, (2) созданием новой ветви от обнаружения и (3) созданием новой ветви от неназначенной дорожки. Пороговые значения должны удовлетворить: <<reservedrangesplaceholder6> 1 <reservedrangesplaceholder5> <reservedrangesplaceholder4> 2 <reservedrangesplaceholder3> <reser vedrangesplaceholder2> 3 <reservedrangesplaceholder1> <reservedrangesplaceholder0> 4 .

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

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

  • C 3 определяет максимальное расстояние для назначения обнаружения дорожке.

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

Совет:

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

  • Увеличение значений C 1 и C 2 помогает контролировать количество созданных ветвей дорожки. Однако это уменьшает количество ветвей (гипотез), которые имеет каждая дорожка.

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

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

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

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

Обработка измерений вне последовательности, заданная как 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 входной порт.

Отследите метод выхода, заданный как 'Tracks', 'Hypothesis', или 'Clusters'.

  • 'Tracks' - Вывод центроида каждой дорожки на основе ее ветвей дорожки.

  • 'Hypothesis' - Выходные ветви, которые находятся в определенных гипотезах. Если вы выбираете эту опцию, перечислите гипотезы, которые нужно вывести с помощью HypothesesToOutput свойство.

  • 'Clusters' - Вывод центроида каждого кластера. Подобно 'Tracks' выход, но включает все дорожки в кластере.

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

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

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

Управление гипотезами

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

Пример: 10

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

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

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

Максимальное количество сканов, поддерживаемых в истории ветвей, задается как положительное целое число. Количество сканов истории дорожек обычно составляет от 2 до 6. Большие значения увеличивают вычислительную нагрузку.

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

Минимальная вероятность, необходимая для сохранения ветви трека, заданная как положительная скалярная величина менее единицы. Любая дорожка с вероятностью ниже заданной вероятности обрезается. Типичные значения: от 0,001 до 0,005.

Пример: .003

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

Метод обрезки N-сканирования, заданный как 'None' или 'Hypothesis'. При обрезке N-сканирования ветви, которые относятся к одной дорожке, обрезаются (удаляются), если в истории N-сканирований они противоречат наиболее вероятной ветви для той же дорожки. Наиболее вероятная ветвь определяется одним из двух способов:

  • 'None' - обрезка N-образного сканирования не выполняется.

  • 'Hypothesis' - Выбранная ветвь находится в наиболее вероятной гипотезе.

Пример: 'Hypothesis'

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

Минимальный счет, требуемое для подтверждения дорожки, задаётся как положительная скалярная величина. Любой трек с счета, превышающей этот порог, подтверждается.

Пример: 12

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

Максимальное падение счета перед удалением дорожки, заданное как скаляр. Любой трек с счетом, который падает больше, чем этот параметр, из максимального счета удаляется. На порог удаления влияет вероятность ложного предупреждения.

Пример: -1

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

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

Пример: 0.5

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

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

Пример: 1e-5

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

Объем интервала измерения датчика, заданный как положительная скалярная величина. Для примера, если радар производит 4-D измерение, которое включает азимут, повышения, диапазон и скорость области значений, объем 4-D определяется шириной углового луча радара, диапазоном интервала шириной и частотой интервала области значений. Объем используется при вычислении счета дорожки при инициализации и обновлении дорожки.

Пример: 1.5

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

Частота новых треков на модуль том, заданная как положительная скалярная величина. Параметр используется при вычислении счета дорожки во время инициализации дорожки.

Пример: 2.5

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

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

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

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

Выберите этот параметр, чтобы включить Detectable branch IDs входной порт.

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

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

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

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

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

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

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

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

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

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

Зависимости

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

Алгоритмы

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

Ссылки

[1] Werthmann, J. R. «Пошаговое описание вычислительно эффективной версии отслеживания нескольких гипотез». В Международном обществе оптики и фотоники, том 1698, стр. 228 - 301, 1992.

[2] Блэкмен, С. и Р. Пополи. Проект и анализ современных систем слежения. Artech House Radar Library, Бостон, 1999.

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

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

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