trackerGNN

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

Описание

The 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 в выходах трекера и различает треки, которые поступают от разных трекеров в системе с несколькими трекерами. Вы должны задать это свойство как положительное целое число, чтобы использовать выходы дорожки в качестве входов для track fuser.

Пример: 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 [C 1 ,C 2], где C 1 ≤ C 2. Если задано в виде скаляра, заданное значение, val, будет расширено до [val, Inf].

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

Совет:

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

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

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

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

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

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

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

  • Счет - задайте порог подтверждения как скаляр. Дорожка подтверждается, если ее счет, по крайней мере, так же высока, как порог подтверждения. Значение по умолчанию 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 объект. The 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

Включите вход обнаруживаемых идентификаторов дорожек при каждом обновлении объекта, заданный как 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 объекты. The Time значение свойства каждого objectDetection объект должен быть меньше или равен текущему времени обновления, timeи больше предыдущего значения времени, используемого для обновления трекера. Кроме того, Time различия между различными objectDetection объекты в массиве ячеек не должны быть равными.

Время обновления, заданное как скаляр. Трекер обновляет все треки к этому времени. Модули указаны в секундах.

time должно быть больше или равно самой большой Time значение свойства objectDetection объекты в вход detections список. time необходимо увеличить значение с каждым обновлением трекера.

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

Матрица стоимости, заданная как матрица N -by - 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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте trackerGNN объект с 2-D по умолчанию функцией инициализации фильтра Калмана с постоянной скоростью, 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 Radar Library, Бостон, 1999.

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

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