exponenta event banner

Track-Oriented Multi-Гипотеза-трекер

Track-Oriented Multi-Гипотеза-трекер

  • Библиотека:
  • Панель инструментов для слияния и отслеживания датчиков/алгоритмы отслеживания нескольких объектов

  • Track-Oriented Multi-Hypothesis Tracker block

Описание

Блок Track-Oriented Multi-Topeesis 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-на-М, где N - количество ветвей, а M - количество текущих обнаружений.

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

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

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

Зависимости

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

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

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

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

Зависимости

Чтобы включить этот порт, на вкладке Port Setting выберите Enable detectable branch ID 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Массив структур дорожек длиной, заданной параметром Максимальное количество дорожек. Только первый NumTracks из них фактические треки.

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

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

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

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

Зависимости

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

Сводный список подтвержденных и предварительных дорожек, возвращенных в виде шины Simulink, содержащей структуру MATLAB.

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

Зависимости

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

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

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

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

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

CostMatrix

Матрица стоимости назначения.

Assignments

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

UnassignedTracks

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

UnassignedDetections

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

InitialBranchHistory

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

InitialBranchScores

Баллы ветвления перед обрезкой.

KeptBranchHistory

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

KeptBranchScores

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

Clusters

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

TrackIncompatibility

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

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 неубывающих положительных значений, [C1, C2, C3] или вектор a1 на 4 неубывающих положительных значений, [C1, C2, C3, C4]. Если указано как скаляр, указанное значение, val, будет расширено до [0,3,0,7,1,Inf] * вал. Если указан как [C1, C2, C3], он будет расширен как [C1,C2,C3,Inf].

Пороговые значения управляют (1) назначением обнаружения дорожке, (2) созданием новой ветви из обнаружения и (3) созданием новой ветви из неназначенной дорожки. Пороговые значения должны соответствовать: C1 < = C2 < = C3 < = C4.

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

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

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

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

Совет:

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

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

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

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

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

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

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

Если параметр указан как:

  • 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 можно отладить исходный код блока.

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

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

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

Пример: 10

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

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

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

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

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

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

Пример: .003

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

Метод отсечения N-scan, указанный как '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 для ввода времени обновления с помощью входного порта прогнозируемого времени. В противном случае время обновления определяется часами моделирования, управляемыми Simulink.

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

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

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

Выберите этот параметр, чтобы включить вывод всех дорожек через выходной порт 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] Вертманн, Дж. Р. «Пошаговое описание вычислительно эффективной версии отслеживания множественных гипотез». В Международном обществе оптики и фотоники, т. 1698, стр. 228-301, 1992.

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.
Представлен в R2020a