trackerJPDA

Соедините вероятностное средство отслеживания ассоциации данных

Описание

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

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

Можно включить различные режимы отслеживания JPDA путем определения свойств TrackLogic и MaxNumEvents.

  • Установка свойства TrackLogic к 'Integrated' включить соединение интегрировало ассоциацию данных (JIPDA) средство отслеживания, в котором подтверждение дорожки и удаление основаны на вероятности существования дорожки.

  • Установка свойства MaxNumEvents до конечного целого числа включить k-best соединяет интегрированную ассоциацию данных (k-best JPDA) средство отслеживания, которое генерирует максимум k событий на кластер.

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

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

Пример 1

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

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

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

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

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

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

type initcvekf

Примечание

trackerJPDA не принимает все функции инициализации фильтра в Sensor Fusion and Tracking Toolbox. Полный список функций инициализации фильтра, доступных в Sensor Fusion and Tracking Toolbox, дан в разделе Initialization Фильтров Оценки.

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

Значение k для k-best JPDA в виде положительного целого числа. Это свойство задает максимальное количество выполнимых объединенных событий для дорожки и ассоциации обнаружения каждого кластера. Установка этого свойства к конечному значению позволяет вам запустить k-best JPDA средство отслеживания, которое генерирует максимум k событий на кластер.

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

Выполнимая объединенная генерация событий функционирует в виде указателя на функцию или как вектор символов, содержащий имя выполнимой объединенной функции генерации событий. Функция генерации генерирует выполнимые объединенные матрицы события от допустимых событий (обычно даваемый матрицей валидации или матрицей вероятности) сценария. Для получения дополнительной информации смотрите jpadEvents.

Можно также записать собственную функцию генерации.

  • Если MaxNumEvents свойство установлено в Inf, функция должна иметь следующий синтаксис:

    FJE = myfunction(ValidationMatrix)
    Вход и из этой функции должен точно следовать за форматами, используемыми в jpdaEvents.

  • Если MaxNumEvents свойство установлено в конечное значение, функция должна иметь следующий синтаксис:

    [FJE,FJEProbs] = myfunction(likelihoodMatrix,k)
    Вход и из этой функции должен точно следовать за форматами, используемыми в jpdaEvents.

Для руководства в записи этой функции используйте type команда, чтобы исследовать детали jpdaEvents:

type jpdaEvents

Пример: @myfunction или 'myfunction'

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

Максимальное количество дорожек, которые средство отслеживания может обеспечить в виде положительного целого числа.

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

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

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

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

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

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

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

  • 'Terminate' — Средство отслеживания прекращает запускаться, когда оно сталкивается с любыми измерениями из последовательности.

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

Примечание

Средство отслеживания требует всех входных обнаружений, которые совместно используют тот же SensorIndex имейте их Time различия ограничены свойством TimeTolerance. Когда вы устанавливаете OOSMHandling свойство к 'Neglect', необходимо убедиться, что обнаружения из последовательности имеют метки времени строго меньше, чем предыдущая метка времени при выполнении средства отслеживания.

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

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

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

Имя поляЗначение
Frame"Rectangular"
Position[10 10 0]
Velocity[2 -2 0]

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

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

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

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

Советы:

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

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

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

Пример: 0.85

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

Порог вероятности, чтобы инициализировать новый трек в виде скаляра в области значений [0,1]. Если вероятности соединения обнаружения с какой-либо из существующих дорожек все меньше, чем InitializationThreshold, обнаружение будет использоваться, чтобы инициализировать новый трек. Это позволяет обнаружения, которые являются в логическом элементе валидации дорожки, но имеют вероятность ассоциации ниже, чем порог инициализации, чтобы породить новый трек.

Пример: 0.1

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

Подтверждение и тип логики удаления в виде:

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

  • 'Integrated' – Отследите подтверждение, и удаление основано на вероятности существования дорожки, которое интегрировано в функции присвоения. Выбор этого значения включает интегрированную ассоциацию данных соединения (JIPDA) средство отслеживания.

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

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

  • 'Integrated' – Задайте порог подтверждения как скаляр. Дорожка подтверждена, если ее вероятность существования больше или равна порогу подтверждения. Значением по умолчанию является 0.95.

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

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

  • 'History' – Задайте порог подтверждения как [P R]. Если, в P из последнего R обновления средства отслеживания, подтвержденная дорожка не присвоена никакому обнаружению, которое имеет вероятность, больше, чем HitMissThreshold свойство, затем та дорожка удалена. Значением по умолчанию является [5,5].

  • 'Integrated' – Задайте порог удаления как скаляр. Дорожка удалена, если ее вероятность существования опускается ниже порога. Значением по умолчанию является 0.1.

Пример: 0.2 или [5,6]

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

Порог для регистрации случайного в виде скаляра в области значений [0,1]. Логика истории дорожки укажет мисс, и дорожка будет курсироваться, если сумма безусловных вероятностей присвоений будет ниже HitMissThreshold. В противном случае логика истории дорожки укажет хит.

Пример: 0.3

Зависимости

Чтобы включить этот аргумент, установите TrackLogic свойство к 'History'.

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

Пространственная плотность измерений помехи в виде положительной скалярной величины. Плотность помехи описывает ожидаемое количество ложных положительных обнаружений на единичный объем. Это используется в качестве параметра модели помехи Пуассона. Когда TrackLogic установлен в 'Integrated', ClutterDensity также используется в вычислении начальной вероятности существования дорожки.

Пример: 1e-5

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

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

Пример: 1e-3

Зависимости

Чтобы включить этот аргумент, установите TrackLogic свойство к 'Integrated'.

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

Уровень времени целевых смертельных случаев в виде скаляра в области значений [0,1]. DeathRate описывает вероятность, с которой исчезают истинные цели. Это связано с распространением вероятности существования дорожки (PTE):

PTE(t+δt)=(1DeathRate)δtPTE(t)

где δt является временным интервалом с предыдущего раза обновления t.

Зависимости

Чтобы включить этот аргумент, установите TrackLogic свойство к 'Integrated'.

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

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

Начальная вероятность существования дорожки в виде скаляра в области значений [0,1] и вычисленный как InitialExistenceProbability = NewTargetDensity*DetectionProbability/(ClutterDensity + NewTargetDensity*DetectionProbability).

Зависимости

Чтобы включить это свойство, установите TrackLogic свойство к 'Integrated'. Когда TrackLogic свойство установлено в 'History', это свойство не доступно.

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

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

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

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

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

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

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

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

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

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

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

Абсолютный допуск времени между обнаружениями для того же датчика в виде положительной скалярной величины. Идеально, trackerJPDA ожидает, что обнаружения из датчика будут иметь идентичные метки времени. Однако, если различия в метках времени между обнаружениями датчика в поле, заданном TimeTolerance, эти обнаружения будут использоваться, чтобы обновить оценку дорожки на основе среднего времени этих обнаружений.

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

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

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

Описание

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

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

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

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

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

[confirmedTracks,tentativeTracks,allTracks] = tracker(___) также возвращает список предварительных дорожек и список всех дорожек. Можно комбинировать с любым синтаксом из перечисленных выше.

[confirmedTracks,tentativeTracks,allTracks,analysisInformation] = tracker(___) также возвращает информацию об анализе, которая может использоваться для анализа дорожки. Можно комбинировать с любым синтаксом из перечисленных выше.

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

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

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

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

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

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

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

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

Зависимости

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

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

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

Дорожки, идентификаторы которых не включены в 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

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

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

Индексы измерений из последовательности

TrackIDsAtStepBeginning

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

CostMatrix

Стойте матрицы за присвоение.

UnassingedTracks

Идентификаторы неприсвоенных дорожек.

UnassingedDetections

Индексы неприсвоенных обнаружений в detections входной параметр.

Clusters

Массив ячеек кластерных отчетов.

InitiatedTrackIDs

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

DeletedTrackIDs

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

TrackIDsAtStepEnd

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

Clusters поле может включать несколько кластерных отчетов. Каждый кластерный отчет является структурой, содержащей:

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

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

TrackIDs

Отследите идентификаторы кластеризованных дорожек.

ValidationMatrixМатрица валидации кластера. Смотрите jpadEvents для получения дополнительной информации.
SensorIndex

Индекс инициирующего датчика кластеризованных обнаружений.

TimeStampСредняя метка времени кластеризованных обнаружений.
MarginalProbabilitiesМатрица крайних следующих объединенных вероятностей ассоциации.

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте объект trackerJPDA с постоянной скоростью по умолчанию, Расширенный Фильтр Калмана и 'История' отслеживают логику. Установите AssignmentThreshold на 100 позволять дорожкам быть совместно сопоставленными.

tracker = trackerJPDA('TrackLogic','History', 'AssignmentThreshold',100,...
    'ConfirmationThreshold', [4 5], ...
    'DeletionThreshold', [10 10]);

Задайте истинные исходные положения и скорости двух объектов.

pos_true = [0 0 ; 40 -40 ; 0 0];
V_true = 5*[cosd(-30) cosd(30)  ; sind(-30) sind(30) ;0 0];

Создайте театральный график визуализировать дорожки и обнаружения.

tp = theaterPlot('XLimits',[-1 150],'YLimits',[-50 50]);
trackP = trackPlotter(tp,'DisplayName','Tracks','MarkerFaceColor','g','HistoryDepth',0);
detectionP = detectionPlotter(tp,'DisplayName','Detections','MarkerFaceColor','r');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Tracks, Detections.

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

positionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0 0 0]; % [x, y, 0]
velocitySelector = [0 1 0 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 0 ]; % [vx, vy, 0]

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

dt = 0.2;
for time = 0:dt:30
    % Update the true positions of objects.
    pos_true = pos_true + V_true*dt;
    
    % Create detections of the two objects with noise.
    detection(1) = objectDetection(time,pos_true(:,1)+1*randn(3,1));
    detection(2) = objectDetection(time,pos_true(:,2)+1*randn(3,1));
    
    % Step the tracker through time with the detections.
    [confirmed,tentative,alltracks,info] = tracker(detection,time);
    
    % Extract position, velocity and label info.
    [pos,cov] = getTrackPositions(confirmed,positionSelector);
    vel = getTrackVelocities(confirmed,velocitySelector);
    meas = cat(2,detection.Measurement);
    measCov = cat(3,detection.MeasurementNoise);
    
    % Update the plot if there are any tracks.
    if numel(confirmed)>0
        labels = arrayfun(@(x)num2str([x.TrackID]),confirmed,'UniformOutput',false);
        trackP.plotTrack(pos,vel,cov,labels);
    end
    detectionP.plotDetection(meas',measCov);
    drawnow;
    
    % Display the cost and marginal probability of distribution every eight
    % seconds.
    if time>0 && mod(time,8) == 0
        disp(['At time t = ' num2str(time) ' seconds,']);
        disp('The cost of assignment was: ')
        disp(info.CostMatrix);
        disp(['Number of clusters: ' num2str(numel(info.Clusters))]);
        if numel(info.Clusters) == 1
            
            disp('The two tracks were in the same cluster.')
            disp('Marginal probabilities of association:')
            disp(info.Clusters{1}.MarginalProbabilities)
        end
        disp('-----------------------------')
    end
end
At time t = 8 seconds,
The cost of assignment was: 
   1.0e+03 *

    0.0020    1.1523
    1.2277    0.0053
Number of clusters: 2
-----------------------------
At time t = 16 seconds,
The cost of assignment was: 
    1.3968    4.5123
    2.0747    1.9558
Number of clusters: 1
The two tracks were in the same cluster.
Marginal probabilities of association:
    0.8344    0.1656
    0.1656    0.8344
    0.0000    0.0000
-----------------------------
At time t = 24 seconds,
The cost of assignment was: 
   1.0e+03 *

    0.0018    1.2962
    1.2664    0.0013
Number of clusters: 2
-----------------------------

Figure contains an axes object. The axes object contains 6 objects of type line, patch, text. These objects represent Tracks, Detections.

Алгоритмы

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

Ссылки

[1] Фортманн, T. Y. Панель шалом и М. Шефф. "Отслеживание гидролокатора Нескольких Целей Используя Объединенную Вероятностную Ассоциацию Данных". Журнал IEEE Океанской Разработки. Издание 8, Номер 3, 1983, стр 173-184.

[2] Musicki, D. и Р. Эванс. "Объединенная Интегрированная Вероятностная Ассоциация Данных: JIPDA". Транзакции IEEE на Космических и Электронных системах. Издание 40, Номер 3, 2004, стр 1093-1099.

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

Введенный в R2019a