exponenta event banner

trackerTOMHT

Multi-гипотеза, multi-sensor, многообъектный трекер

Описание

trackerTOMHT Система object™ представляет собой трекер с несколькими гипотезами, способный обрабатывать обнаружения множества целей от множества датчиков. Трекер инициализирует, подтверждает, прогнозирует, корректирует и удаляет дорожки. Входами в трекер являются отчеты об обнаружении, генерируемые objectDetection, fusionRadarSensor, irSensor, или sonarSensor объекты. Трекер оценивает вектор состояния и матрицу ковариации вектора состояния для каждой дорожки. Трекер назначает обнаружения, основываясь на ориентированном на дорожки подходе с несколькими гипотезами. Каждое обнаружение назначается, по меньшей мере, одной дорожке. Если обнаружение не может быть назначено какой-либо дорожке, трекер создает дорожку.

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

Для отслеживания объектов с помощью трекера с несколькими гипотезами:

  1. Создать trackerTOMHT и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

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

пример

tracker = trackerTOMHT(Name,Value) задает свойства для многообъектного трекера, используя одну или несколько пар имя-значение. Например, trackerTOMHT('FilterInitializationFcn',@initcvukf,'MaxNumTracks',100) создает многообъектный трекер, использующий фильтр Калмана с постоянной скоростью и допускающий максимум 100 дорожек. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

Пример: 1

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

Sensor Fusion and Tracking Toolbox™ предоставляет множество функций инициализации, которые можно использовать для определения FilterInitializationFcn.

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

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

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

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

type initcvekf

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

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

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

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

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

Обрабатывать измерения вне последовательности (OOSM), указанные как 'Terminate' или 'Neglect'. Каждое обнаружение имеет связанную с ним временную метку td, и трекер имеет собственную временную метку tt, которая обновляется в каждом вызове. Трекер рассматривает измерение как OOSM, если td < tt.

Когда свойство указано как

  • 'Terminate' - Трекер прекращает работу, когда он сталкивается с какими-либо неупорядоченными измерениями.

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

Настраиваемый: Да

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

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

Имя поляСтоимость
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

Настраиваемый: Да

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

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

Пример: 10

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

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

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

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

Пример: 6

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

Порог назначения обнаружения, заданный как положительный скаляр, вектор 1 на 3 неубывающих положительных значений, [C1, C2, C3] или вектор 1 на 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

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

Пример: 12

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

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

Пример: 12

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

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

Пример: 0.5

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

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

Пример: 1e-5

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

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

Пример: 2.5

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

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

Пример: 1.5

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

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

Пример: .003

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

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

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

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

Пример: 'Hypothesis'

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

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

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

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

Метод вывода дорожки, указанный как 'Tracks', 'Hypothesis', или 'Clusters'.

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

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

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

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

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

Настраиваемый: Да

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

Количество подтвержденных дорожек, возвращаемых как неотрицательное целое число. Если IsConfirmed поле выходной структуры пути true, трасса подтверждена.

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

Использование

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

Описание

confirmedTracks = tracker(detections,time) возвращает список подтвержденных дорожек, которые обновляются из списка обнаружений, detections, во время обновления, time. Подтвержденные дорожки корректируются и прогнозируются до времени обновления.

confirmedTracks = tracker(detections,time,costMatrix) также определяет матрицу затрат, costMatrix.

Чтобы включить этот синтаксис, установите HasCostMatrixInput свойство для true.

confirmedTracks = tracker(___,detectableBranchIDs) также определяет список ожидаемых обнаруживаемых ветвей, detectableBranchIDs.

Чтобы включить этот синтаксис, установите HasDetectableBranchIDsInput свойство для 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

Матрица затрат, заданная как действительная матрица N-за-M, где N - количество ветвей, а M - количество текущих обнаружений. Строки матрицы затрат должны находиться в том же порядке, что и список ветвей. Столбцы должны находиться в том же порядке, что и список обнаружений. Получить правильный порядок списка ветвей с помощью getBranches объектная функция. Столбцы матрицы соответствуют обнаружениям.

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

Зависимости

Чтобы включить этот аргумент, установите HasCostMatrixInput свойство для true.

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

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

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

Зависимости

Чтобы включить этот входной аргумент, установите HasDetectableBranchIDs свойство для true.

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

Выходные аргументы

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

Подтвержденные дорожки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.

Дорожка подтверждается, если она удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры true.

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

Предварительные треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.

Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры false.

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

Все треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack. Все треки состоят из подтвержденных и предварительных треков.

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

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

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

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

CostMatrix

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

Assignments

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

UnassignedTracks

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

UnassignedDetections

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

InitialBranchHistory

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

InitialBranchScores

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

KeptBranchHistory

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

KeptBranchScores

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

Clusters

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

TrackIncompatibility

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

GlobalHypotheses

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

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

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

GlobalBranchProbabilities

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

BranchesDeletedByPruning

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

BranchIDsAtStepEnd

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

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

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

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

getTrackFilterPropertiesПолучение свойств фильтра дорожки
setTrackFilterPropertiesЗадать свойства фильтра дорожки
getBranchesПеречисляет ветви пути
predictTrackToTimeПрогнозировать состояние дорожки
initializeTrackИнициализировать новую дорожку
deleteTrackУдалить существующую дорожку
initializeBranchИнициализировать новую ветвь пути
deleteBranchУдалить существующую ветвь пути
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System
isLockedОпределить, используется ли объект System
cloneСоздать повторяющийся объект System

Примеры

свернуть все

Создать trackerTOMHT Системный объект с функцией инициализации фильтра Калмана с постоянной скоростью, initcvkf.

tracker = trackerTOMHT('FilterInitializationFcn',@initcvkf, ...
    'ConfirmationThreshold',20, ...
    'DeletionThreshold',-7, ...
    'MaxNumHypotheses',10);

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

detections = {objectDetection(1,[10;0],'SensorIndex',1, ...
    'ObjectClassID',5,'ObjectAttributes',{struct('ID',1)}); ...
    objectDetection(1,[0;10],'SensorIndex',1, ...
    'ObjectClassID',2,'ObjectAttributes',{struct('ID',2)})};
time = 2;
tracks = tracker(detections,time);

Поиск и отображение положений и скоростей.

positionSelector = [1 0 0 0; 0 0 1 0];
velocitySelector = [0 1 0 0; 0 0 0 1];
positions = getTrackPositions(tracks,positionSelector)
positions = 2×2

   10.0000         0
         0   10.0000

velocities = getTrackVelocities(tracks,velocitySelector)
velocities = 2×2

     0     0
     0     0

Алгоритмы

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

Ссылки

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

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

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

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