exponenta event banner

trackerGNN

Мультисенсорный, многообъектный трекер с назначением GNN

Описание

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

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

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

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

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

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

Создание

Описание

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

пример

tracker = trackerGNN(Name,Value) задает свойства для трекера, используя одну или несколько пар имя-значение. Например, trackerGNN('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

Алгоритм назначения, указанный как 'MatchPairs', 'Munkres', 'Jonker-Volgenant', 'Auction', или 'Custom'. Munkres является единственным алгоритмом назначения, который гарантирует оптимальное решение, но он также является самым медленным, особенно для большого количества обнаружений и дорожек. Другие алгоритмы не гарантируют оптимального решения, но могут быть быстрее для проблем с 20 или более дорожками и обнаружениями. Использовать'Custom' чтобы определить собственную функцию назначения и указать ее имя в CustomAssignmentFcn собственность.

Пример: 'Custom'

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

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

 [assignment,unTrs,unDets] = f(cost,costNonAssignment)
Пример функции назначения и описание ее аргументов см. в разделе assignmunkres.

Зависимости

Чтобы включить это свойство, установите значение Assignment свойство для 'Custom'.

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

Порог назначения обнаружения (или порог стробирования), заданный как положительный скаляр или вектор 1 на 2 [C1, C2], где C1≤C2. Если указано как скаляр, указанное значение, val, будет расширено до [val ,Inf].

Первоначально трекер выполняет грубую оценку для нормализованного расстояния между всеми дорожками и обнаружениями. Трекер вычисляет только точное нормированное расстояние для комбинаций, грубое нормированное расстояние которых меньше C2. Кроме того, трекер может назначать обнаружение дорожке только в том случае, если их точное нормированное расстояние меньше C1. См. раздел distance функция, используемая с фильтрами слежения (например, trackingCKF и trackingEKF) для пояснения расчета расстояния.

Совет:

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

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

Логический тип подтверждения и удаления, указанный как 'History' или 'Score'.

  • 'History' - Подтверждение и удаление трека основано на количестве назначений трека обнаружению в последних обновлениях трекера.

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

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

  • История - укажите порог подтверждения как вектор 1 на 2 [M N]. Дорожка подтверждается, если она получает по крайней мере M обнаружения в последнем N обновления. Значение по умолчанию: [2,3].

  • Оценка (Score) - укажите порог подтверждения как скаляр. Дорожка подтверждается, если ее оценка по меньшей мере равна порогу подтверждения. Значение по умолчанию: 20.

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

Минимальный балл, необходимый для удаления дорожки, указанный как скаляр или действительный вектор 1 на 2. Пороговое значение зависит от типа логики подтверждения и удаления дорожки, установленной с помощью TrackLogic свойство:

  • История - укажите порог подтверждения как [P R]. Если подтвержденная дорожка не назначена никакому обнаружению P время в последнем R трекер обновляется, затем трек удаляется.

  • Оценка - дорожка удаляется, если ее оценка уменьшается хотя бы на порог от максимальной оценки дорожки.

Пример: 3

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

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

Пример: 0.5

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

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

Пример: 1e-5

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

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

Пример: 2.5

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

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

Пример: 1.5

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

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

Типы данных: 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

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

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

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

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

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

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

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

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

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

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

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

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

Описание

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

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

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

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

Чтобы включить этот синтаксис, установите HasDetectableTrackIDsInput свойство для 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 - количество текущих обнаружений. Строки матрицы затрат должны находиться в том же порядке, что и список дорожек. Столбцы должны находиться в том же порядке, что и список обнаружений. Получить правильный порядок списка дорожек из третьего выходного аргумента, allTracks, когда трекер обновлен.

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отслеживать идентификаторы при начале шага

CostMatrix

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

Assignments

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

UnassignedTracks

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

UnassignedDetections

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

InitiatedTrackIDs

Идентификаторы дорожек, инициированных во время шага

DeletedTrackIDs

Идентификаторы дорожек, удаленных во время шага

TrackIDsAtStepEnd

Отслеживать идентификаторы по завершении шага

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

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

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

release(obj)

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

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

Примеры

свернуть все

Построить trackerGNN объект с дефолтом 2-я постоянная скорость функция инициализации фильтра Кальмана, initcvkf.

tracker = trackerGNN('FilterInitializationFcn', @initcvkf, ...
    'ConfirmationThreshold', [4 5], ...
    'DeletionThreshold', 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     0
     0    10

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

     0     0
     0     0

Алгоритмы

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

Ссылки

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

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

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