trackerTOMHT

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

Описание

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

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

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

  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'. Каждому обнаружению сопоставили метку времени с ним, t d, и средство отслеживания имеет его собственная метка времени, t t, который обновляется в каждом вызове. Средство отслеживания рассматривает измерение как OOSM если t d <t t.

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

  • '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 вектор из неуменьшения положительных значений, [C 1, C 2, C 3], или an1-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) созданием новой ветви от неприсвоенной дорожки. Пороговые значения должны удовлетворить: C 1 <= C 2 <= C 3<=C4.

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

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

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

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

Советы:

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

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

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

Типы данных: 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-скана в виде 'None' или 'Hypothesis'. В сокращении N-скана ветви, которые принадлежат той же дорожке, сокращены (удаленные), если в истории N-сканов они противоречат наиболее вероятной ветви для той же дорожки. Наиболее вероятная ветвь задана одним из двух способов:

  • 'None' – Никакое сокращение N-скана не выполняется.

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

Пример: 'Hypothesis'

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

Типы данных: логический

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

Типы данных: логический

Отследите выходной метод в виде '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 с действительным знаком-by-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) элемент верен, если i-th и j-th ветви совместно использовали обнаружения в их истории или принадлежат той же дорожке.

GlobalHypotheses

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

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

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

GlobalBranchProbabilities

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

BranchesDeletedByPruning

Ветви удалены средством отслеживания.

BranchIDsAtStepEnd

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте 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] Вертманн, J. R.. "Постепенное Описание В вычислительном отношении Эффективной Версии Нескольких Отслеживание Гипотезы". В международном обществе Оптики и Фотоники, Издания 1698, стр 228-301, 1992.

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

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

Введенный в R2018b