trackerGNN

Мультидатчик, мультиобъектное средство отслеживания с помощью присвоения GNN

Описание

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

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

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

  1. Создайте объект trackerGNN и установите его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

tracker = trackerGNN
tracker = trackerGNN(Name,Value)

Описание

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

пример

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

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

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.

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

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

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

type initcvekf

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

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

Пример: 'Custom'

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

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

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

Зависимости

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

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

Порог присвоения обнаружения (или порог пропускания), заданный как положительная скалярная величина или 1 2 вектор [C 1,C2], где C 1≤C2. Если задано как скаляр, заданное значение, 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]. Дорожка удалена, если в последних обновлениях R она была присвоена меньше, чем обнаружения P.

  • Счет – дорожка удалена, если ее счет уменьшается, по крайней мере, порогом с максимального счета дорожки.

Пример 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

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис

confirmedTracks = tracker(detections,time)
confirmedTracks = tracker(detections,time,costMatrix)
confirmedTracks = tracker(___,detectableTrackIDs)
[confirmedTracks,tentativeTracks,allTracks] = tracker(___)
[___,analysisInformation] = tracker(___)

Описание

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.

[___,analysisInformation] = tracker(___) также возвращает информацию, analysisInformation, который может использоваться для анализа дорожки.

Входные параметры

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

Список обнаружений, заданный как массив ячеек объектов objectDetection. Значение свойства Time каждого объекта objectDetection должно быть меньше чем или равным текущему времени обновления, time, и больше, чем предыдущая временная стоимость раньше обновляла средство отслеживания.

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

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

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

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

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

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

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

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

Все дорожки, возвращенные как структура или массив структур. Каждая структура соответствует дорожке. Набор всех дорожек состоит из подтвержденных и предварительных дорожек. Поля структуры заданы в Структуре Дорожки.

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

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

Поле Описание
TrackIDsAtStepBeginning

Отследите идентификаторы, когда шаг начался

CostMatrix

Стоимость матрицы присвоения

Assignments

Присвоения возвращены в assignTOMHT

UnassignedTracks

Идентификаторы неприсвоенных дорожек возвращены в средство отслеживания

UnassignedDetections

Идентификаторы неприсвоенных обнаружений возвращены в trackerGNN

InitiatedTrackIDs

Идентификаторы дорожек инициируются во время шага

DeletedTrackIDs

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

TrackIDsAtStepEnd

Отследите идентификаторы когда законченный шаг

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

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

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

release(obj)

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

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

Примеры

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

Создайте объект trackerGNN с 2D функцией инициализации Фильтра Калмана постоянной скорости по умолчанию, 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)
velocities = getTrackVelocities(tracks,velocitySelector)
positions =

    10     0
     0    10


velocities =

     0     0
     0     0

Больше о

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

Ссылки

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

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

Введенный в R2018b