Соедините вероятностное средство отслеживания ассоциации данных
trackerJPDA
Система object™ является средством отслеживания, способным к обработке обнаружений нескольких целей от нескольких датчиков. Использование средства отслеживания соединяет вероятностную ассоциацию данных, чтобы присвоить обнаружения каждой дорожке. Средство отслеживания применяет мягкое присвоение, где несколько обнаружений могут способствовать каждой дорожке. Средство отслеживания инициализирует, подтверждает, корректирует, предсказывает (выполняет каботажное судоходство), и удаляет дорожки. Входные параметры к средству отслеживания являются отчетами обнаружения, сгенерированными objectDetection
, radarSensor
, monostaticRadarSensor
, irSensor
, или sonarSensor
объекты. Средство отслеживания оценивает вектор состояния и оценочную ошибочную ковариационную матрицу состояния для каждой дорожки. Каждое обнаружение присвоено по крайней мере одной дорожке. Если обнаружение не может быть присвоено никакой существующей дорожке, средство отслеживания создает новый трек.
Любой новый трек запускается в предварительном состоянии. Если достаточно обнаружений присвоено предварительной дорожке, ее изменениям состояния в подтвержденном (см. ConfirmationThreshold
свойство. Если обнаружение уже имеет известную классификацию (т.е. ObjectClassID
поле возвращенной дорожки является ненулевым), что соответствующая дорожка сразу подтверждена. Когда дорожка подтверждена, средство отслеживания полагает, что дорожка представляет физический объект. Если обнаружения не присвоены дорожке в specifiable количестве обновлений, дорожка удалена.
Отслеживать цели с помощью этого объекта:
Создайте trackerJPDA
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает tracker
= trackerJPDAtrackerJPDA
Системный объект со значениями свойств по умолчанию.
свойства наборов для средства отслеживания с помощью одной или нескольких пар "имя-значение". Например, tracker
= trackerJPDA(Name,Value
)trackerJPDA('FilterInitializationFcn',@initcvukf,'MaxNumTracks',100)
создает мультиобъектное средство отслеживания, которое использует постоянную скорость, сигма-точечный фильтр Калмана и позволяет максимум 100 дорожек. Заключите каждое имя свойства в кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
TrackerIndex
— Уникальный идентификатор средства отслеживания
(значение по умолчанию) | неотрицательное целое числоУникальный идентификатор средства отслеживания, заданный как неотрицательное целое число. Это свойство используется в качестве SourceIndex
в средстве отслеживания выходные параметры, и отличают дорожки, которые прибывают из различных средств отслеживания в системе нескольких-средств-отслеживания. Необходимо задать это свойство как положительное целое число, чтобы использовать дорожку выходные параметры в качестве входных параметров к термофиксатору дорожки.
Пример 1
FilterInitializationFcn
— Отфильтруйте функцию инициализации@initcvekf
(значение по умолчанию) | указатель на функцию | вектор символовОтфильтруйте функцию инициализации, определенный функцией указатель или как вектор символов, содержащий имя допустимой функции инициализации фильтра. Средство отслеживания использует функцию инициализации фильтра при создании новых треков.
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
EventGenerationFcn
— Выполнимая объединенная функция генерации событий@jpdaEvents
(значение по умолчанию) | указатель на функцию | вектор символовВыполнимая объединенная функция генерации событий, определенный функцией указатель или как вектор символов, содержащий имя выполнимой объединенной функции генерации событий. Функция генерации генерирует выполнимые объединенные матрицы события от допустимых событий (обычно даваемый матрицей валидации) сценария отслеживания. Матрица валидации является бинарной матрицей, перечисляющей все возможные ассоциации обнаружений к дорожке. Для получения дополнительной информации смотрите jpadEvents
.
Можно также записать собственную функцию генерации. Функция должна иметь следующий синтаксис:
FJE = myfunction(ValidationMatrix)
jpdaEvents
. Для руководства в записи этой функции используйте type
команда, чтобы исследовать детали jpdaEvents
:
type jpdaEvents
Пример:
@myfunction
или 'myfunction'
Типы данных: function_handle
| char
MaxNumTracks
— Максимальное количество дорожек
(значение по умолчанию) | положительное целое числоМаксимальное количество дорожек, которые средство отслеживания может обеспечить, заданный как положительное целое число.
Типы данных: single
| double
MaxNumSensors
— Максимальное количество датчиков
(значение по умолчанию) | положительное целое числоМаксимальное количество датчиков, которые могут быть соединены со средством отслеживания, задало как положительное целое число. MaxNumSensors
должен быть больше или быть равен самому большому значению SensorIndex
найденный во всех обнаружениях раньше обновлял средство отслеживания. SensorIndex
свойство objectDetection
объект. MaxNumSensors
свойство определяет сколько наборов ObjectAttributes
каждая дорожка может иметь.
Типы данных: single
| double
StateParameters
— Параметры дорожки утверждают систему координатstruct([])
(значение по умолчанию) | struct
| struct array
Параметры дорожки утверждают систему координат, заданную как struct или массив структур. Используйте это свойство задать систему координат состояния дорожки и как преобразовать дорожку от средства отслеживания (названный источником) система координат к системе координат термофиксатора.
Это свойство является настраиваемым.
Типы данных: struct
AssignmentThreshold
— Порог присвоения обнаружения30*[1 Inf]
(значение по умолчанию) | положительная скалярная величина | 1 2 вектор положительных значенийПорог присвоения обнаружения (или порог пропускания), заданный как положительная скалярная величина или 1 2 вектор [C 1,C2], где C 1 ≤ C 2. Если задано как скаляр, заданное значение, val, расширено до [val, Inf
].
Первоначально, средство отслеживания выполняет крупную оценку для нормированного расстояния между всеми дорожками и обнаружениями. Средство отслеживания только вычисляет точное нормированное расстояние для комбинаций, крупное нормированное расстояние которых меньше C 2. Кроме того, средство отслеживания может только присвоить обнаружение дорожке, если точное нормированное расстояние между ними меньше C 1. Смотрите distance
функция используется с отслеживанием фильтров (таких как trackingCKF
и trackingEKF
) для объяснения расчета расстояния.
Советы:
Увеличьте значение C 2, если существует дорожка и комбинации обнаружения, которые должны быть вычислены для присвоения, но не являются. Уменьшите это значение, если расчет стоимости занимает слишком много времени.
Увеличьте значение C 1, если существуют обнаружения, которые должны быть присвоены дорожкам, но не являются. Уменьшите это значение, если существуют обнаружения, которые присвоены дорожкам, которым они не должны быть присвоены (слишком далеко).
DetectionProbability
— Вероятность обнаружения
(значение по умолчанию) | скаляр в области значений [0,1]Вероятность обнаружения, заданного как скаляр в области значений [0,1]. Это свойство используется в вычислениях крайних апостериорных вероятностей ассоциации и вероятности существования дорожки при инициализации и обновлении дорожки.
Пример: 0.85
Типы данных: single
| double
InitializationThreshold
— Порог, чтобы инициализировать дорожку
(значение по умолчанию) | скаляр в области значений [0,1]Порог вероятности, чтобы инициализировать новый трек, заданный как скаляр в области значений [0,1]. Если вероятности соединения обнаружения с какой-либо из существующих дорожек все меньше, чем InitializationThreshold
, обнаружение будет использоваться, чтобы инициализировать новый трек. Это позволяет обнаружения, которые являются в логическом элементе валидации дорожки, но имеют вероятность ассоциации ниже, чем порог инициализации, чтобы породить новый трек.
Пример: 0.1
Типы данных: single
| double
TrackLogic
— Отследите тип логики подтверждения и удаления'History'
(значение по умолчанию) | 'Integrated'
Подтверждение и тип логики удаления, заданный как:
'History'
– Отследите подтверждение, и удаление основано на числе раз, дорожка была присвоена обнаружению в последних обновлениях средства отслеживания.
'Integrated'
– Отследите подтверждение, и удаление основано на вероятности существования дорожки, которое интегрировано в функции присвоения.
ConfirmationThreshold
— Порог для подтверждения дорожкиПорог для подтверждения дорожки, заданного как скаляр или 1 2 вектор. Порог зависит от типа логики подтверждения и удаления дорожки, которую вы устанавливаете с TrackLogic
свойство:
'History'
– Задайте порог подтверждения как 1 2 вектор [M
N]. Дорожка подтверждена, если она записала, по крайней мере, хиты M в последних обновлениях N. trackerJPDA
указывает хит по логике истории дорожки согласно HitMissThrehold
. Значением по умолчанию является [2 3]
.
'Integrated'
– Задайте порог подтверждения как скаляр. Дорожка подтверждена, если ее вероятность существования больше или равна порогу подтверждения. Значением по умолчанию является 0.95
.
Типы данных: single
| double
DeletionThreshold
— Порог для удаления дорожкиПорог для удаления дорожки, заданного как скаляр или с действительным знаком 1 2 вектор. Порог зависит от типа логики подтверждения и удаления дорожки, которую вы устанавливаете с TrackLogic
свойство:
'History'
– Задайте порог подтверждения как [P
R]. Дорожка удалена, если она записала, по крайней мере, P промахи в последних обновлениях R . trackerJPDA
укажет мисс по логике истории дорожки согласно HitMissThrehold
свойство. Значением по умолчанию является [5,5]
.
'Integrated'
– Задайте порог удаления как скаляр. Дорожка удалена, если ее вероятность существования опускается ниже порога. Значением по умолчанию является 0.1
.
Пример: 0.2
или [5,6]
Типы данных: single
| double
HitMissThreshold
— Порог для регистрации как попалоПорог для регистрации случайного, заданного как скаляр в области значений [0,1]. Логика истории дорожки укажет мисс, и дорожка будет курсироваться, если сумма безусловных вероятностей присвоений будет ниже HitMissThreshold
. В противном случае логика истории дорожки укажет хит.
Пример: 0.3
Чтобы включить этот аргумент, установите TrackLogic
свойство к 'History'
.
Типы данных: single
| double
ClutterDensity
— Пространственная плотность измерений помехи1e-6
(значение по умолчанию) | положительная скалярная величинаПространственная плотность измерений помехи, заданных как положительная скалярная величина. Плотность помехи описывает ожидаемое количество ложных положительных обнаружений на единичный объем. Это используется в качестве параметра модели помехи Пуассона. Когда TrackLogic
установлен в 'Integrated'
, ClutterDensity
также используется в вычислении начальной вероятности существования дорожки.
Пример: 1e-5
Типы данных: single
| double
NewTargetDensity
— Пространственная плотность новых целей1e-5
(значение по умолчанию) | положительная скалярная величинаПространственная плотность новых целей, заданных как положительная скалярная величина. Новая целевая плотность описывает ожидаемое количество новых треков на единичный объем на пробеле измерения. Это используется в вычислении вероятности существования дорожки во время инициализации дорожки.
Пример: 1e-3
Чтобы включить этот аргумент, установите TrackLogic
свойство к 'Integrated'
.
Типы данных: single
| double
DeathRate
— Уровень времени целевых смертельных случаев
(значение по умолчанию) | скаляр в области значений [0,1]Уровень времени целевых смертельных случаев, заданных как скаляр в области значений [0,1]. DeathRate
описывает вероятность, с которой исчезают истинные цели. Это связано с распространением вероятности существования дорожки (PTE):
где δt является временным интервалом с предыдущего раза обновления t.
Чтобы включить этот аргумент, установите TrackLogic
свойство к 'Integrated'
.
Типы данных: single
| double
InitialExistenceProbability
— Начальная вероятность существования дорожки
(значение по умолчанию) | скаляр в области значений [0,1]Это свойство доступно только для чтения.
Начальная вероятность существования дорожки, заданного как скаляр в области значений [0,1] и вычисленный как InitialExistenceProbability = NewTargetDensity*DetectionProbability/(ClutterDensity + NewTargetDensity*DetectionProbability)
.
Чтобы включить это свойство, установите TrackLogic
свойство к 'Integrated'
. Когда TrackLogic
свойство установлено в 'History'
, это свойство не доступно.
Типы данных: single
| double
HasCostMatrixInput
— Включите матричный вход стоимостиfalse
(значение по умолчанию) | true
Включите матрицу стоимости, заданную как false
или true
. Если true
, можно обеспечить матрицу стоимости присвоения как входной параметр при вызове объекта.
Типы данных: логический
HasDetectableTrackIDsInput
— Включите вход обнаруживаемых идентификаторов дорожкиfalse
(значение по умолчанию) | true
Включите вход обнаруживаемых идентификаторов дорожки при каждом обновлении объекта, заданном как false
или true
. Установите это свойство на true
если вы хотите предоставить список обнаруживаемых идентификаторов дорожки. Этот список сообщает средству отслеживания всех дорожек, что датчики, как ожидают, обнаружат и, опционально, вероятность обнаружения для каждой дорожки.
Типы данных: логический
NumTracks
— Количество дорожек обеспечено средством отслеживанияЭто свойство доступно только для чтения.
Количество дорожек обеспечено средством отслеживания, возвращенным как неотрицательное целое число.
Типы данных: single
| double
NumConfirmedTracks
— Количество подтвержденных дорожекЭто свойство доступно только для чтения.
Количество подтвержденных дорожек, возвращенных как неотрицательное целое число. Если IsConfirmed
полем выходной структуры дорожки является true
, дорожка подтверждена.
Типы данных: single
| double
TimeTolerance
— Абсолютный допуск времени между обнаружениями1e-5
(значение по умолчанию) | положительная скалярная величинаАбсолютный допуск времени между обнаружениями для того же датчика, заданного как положительная скалярная величина. Идеально, 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(___)
detections
— Список обнаруженийobjectDetection
объектыСписок обнаружений, заданный как массив ячеек objectDetection
объекты. Time
значение свойства каждого objectDetection
объект должен быть меньше чем или равен текущему времени обновления, time
, и больше, чем предыдущая временная стоимость раньше обновлял средство отслеживания. Кроме того, Time
различия между различным objectDetection
объекты в массиве ячеек не должны быть равными.
time
— Время обновленияВремя обновления, заданного как скаляр. Средство отслеживания обновляет все дорожки к этому времени. Модули находятся в секундах.
time
должен быть больше или быть равен самому большому Time
значение свойства objectDetection
объекты во входе detections
список. time
должен увеличиться в значении с каждым обновлением средства отслеживания.
Типы данных: single
| double
costMatrix
— Стойте матрицыСтойте матрицы, заданной как M с действительным знаком-by-N матрица, где M является количеством существующих дорожек в предыдущем обновлении, и N является количеством текущих обнаружений. Строки матрицы стоимости должны быть в том же порядке как список дорожек, и столбцы должны быть в том же порядке как список обнаружений. Получите правильный порядок списка дорожек от третьего выходного аргумента, allTracks
, когда средство отслеживания обновляется.
При первом обновлении средства отслеживания или когда средство отслеживания не будет иметь никаких предыдущих дорожек, задайте матрицу стоимости, чтобы быть пустыми с размером [0,numDetections]
. Обратите внимание на то, что стоимость должна быть дана так, чтобы более низкие цены указали на более высокую вероятность присвоения обнаружения к дорожке. Чтобы препятствовать тому, чтобы определенные обнаружения были присвоены определенным дорожкам, можно установить соответствующую матричную запись стоимости в Inf
.
Чтобы включить этот аргумент, установите HasCostMatrixInput
свойство к true
.
Типы данных: double |
single
detectableTrackIDs
— Обнаруживаемые идентификаторы дорожкиОбнаруживаемые идентификаторы дорожки, заданные как M с действительным знаком-by-1 вектор или M-by-2 матрица. Обнаруживаемые дорожки являются дорожками, которые датчики ожидают обнаруживать. Первый столбец матрицы содержит список идентификаторов дорожки, о которых датчики сообщают как обнаруживаемые. Дополнительный второй столбец позволяет вам добавлять вероятность обнаружения для каждой дорожки.
Дорожки, идентификаторы которых не включены в detectableTrackIDs
рассматриваются необнаруживаемыми. В этом случае логика удаления дорожки не считает отсутствие обнаружения для той дорожки как пропущенное обнаружение в целях удаления дорожки.
Чтобы включить этот входной параметр, установите detectableTrackIDs
свойство к true
.
Типы данных: single
| double
confirmedTracks
— Подтвержденные дорожкиobjectTrack
объекты | массив структурПодтвержденные дорожки, возвращенные как массив objectTrack
объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
.
Дорожка подтверждена, если она удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold
свойство. В этом случае, IsConfirmed
свойством объекта или полем структуры является true
.
Типы данных: struct |
object
tentativeTracks
— Предварительные дорожкиobjectTrack
объекты | массив структурПредварительные дорожки, возвращенные как массив objectTrack
объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
.
Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, заданному в ConfirmationThreshold
свойство. В этом случае, IsConfirmed
свойством объекта или полем структуры является false
.
Типы данных: struct |
object
allTracks
— Все дорожкиobjectTrack
объекты | массив структурВсе дорожки, возвращенные как массив objectTrack
объекты в MATLAB, и возвратились как массив структур в генерации кода. В генерации кода имена полей возвращенной структуры - то же самое с именами свойства objectTrack
. Все дорожки состоят из подтвержденных и предварительных дорожек.
Типы данных: struct |
object
analysisInformation
— Дополнительная информация для анализа обновлений дорожкиДополнительная информация для анализа обновлений дорожки, возвращенных как структура. Поля этой структуры:
Поле | Описание |
TrackIDsAtStepBeginning | Отследите идентификаторы, когда шаг начался. |
CostMatrix | Стойте матрицы за присвоение. |
Clusters | Массив ячеек кластерных отчетов. |
InitiatedTrackIDs | Идентификаторы дорожек инициируются во время шага. |
DeletedTrackIDs | Идентификаторы дорожек удалены во время шага. |
TrackIDsAtStepEnd | Отследите идентификаторы когда законченный шаг. |
Clusters
поле может включать несколько кластерных отчетов. Каждый кластерный отчет является структурой, содержащей:
Поле | Описание |
DetectionIndices | Индексы кластеризованных обнаружений. |
TrackIDs | Отследите идентификаторы кластеризованных дорожек. |
ValidationMatrix | Матрица валидации кластера. Смотрите jpadEvents для получения дополнительной информации. |
SensorIndex | Индекс инициирующего датчика кластеризованных обнаружений. |
TimeStamp | Средняя метка времени кластеризованных обнаружений. |
MarginalProbabilities | Матрица крайних следующих объединенных вероятностей ассоциации. |
Типы данных: struct
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
trackerJPDA
predictTracksToTime | Предскажите состояние дорожки |
getTrackFilterProperties | Получите свойства фильтра дорожки |
setTrackFilterProperties | Установите свойства фильтра дорожки |
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');
Чтобы получить положение и скорость, создайте селекторы положения и скорости.
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 -----------------------------
Когда средство отслеживания JPDA обнаружения процессов, создание дорожки и управление выполняет эти шаги.
Средство отслеживания делит обнаружения на несколько групп инициирующим датчиком.
Для каждого датчика:
Средство отслеживания вычисляет расстояния от обнаружений до существующих дорожек и формирует costMatrix
.
Средство отслеживания создает матрицу валидации на основе порога присвоения (или порога логического элемента) существующих дорожек. Матрица валидации является бинарной матрицей, перечисляющей все возможные ассоциации обнаружений к дорожке. Для получения дополнительной информации смотрите Выполнимые Объединенные События.
Дорожки и обнаружения затем разделены на кластеры. Кластер может содержать одну дорожку или несколько дорожек, если эти дорожки совместно используют общие обнаружения в своих логических элементах валидации. Логический элемент валидации является пространственным контуром, в котором предсказанное обнаружение дорожки имеет высокую вероятность, чтобы упасть. Для получения дополнительной информации смотрите Выполнимые Объединенные События.
Обновите все кластеры, выполняющие приказ средней метки времени обнаружения в кластере. Для каждого кластера, средства отслеживания:
Генерирует все выполнимые объединенные события. Для получения дополнительной информации смотрите jpdaEvents
.
Вычисляет апостериорную вероятность каждого объединенного события.
Вычисляет безусловную вероятность каждой отдельной пары дорожки обнаружения в кластере.
Сообщают слабые обнаружения. Слабые обнаружения являются обнаружениями, которые являются в логическом элементе валидации по крайней мере одной дорожки, но имеют ассоциацию вероятности ко всем дорожкам меньше, чем IntitializationThreshold
.
Обновления отслеживают в кластере с помощью correctjpda
.
Неприсвоенные обнаружения (они не находятся ни в каком кластере) и слабые обнаружения порождают новые треки.
Средство отслеживания проверяет все дорожки на удаление. Дорожки удалены на основе количества сканирований без ассоциации с помощью 'History'
логика или на основе их вероятности существования using'Integrated'
логика дорожки.
Все дорожки предсказаны к последней временной стоимости (или вход времени, если обеспечено или последняя средняя кластерная метка времени).
В типичном рабочем процессе для системы слежения средство отслеживания должно определить, может ли обнаружение быть сопоставлено с какой-либо из существующих дорожек. Если средство отслеживания только обеспечивает одну дорожку, присвоение может быть сделано путем оценки логического элемента валидации вокруг предсказанного измерения и решения, находится ли измерение в пределах логического элемента валидации. На пробеле измерения логический элемент валидации является пространственным контуром, таким как 2D эллипс или 3-D эллипсоид, сосредоточенный при предсказанном измерении. Логический элемент валидации задан с помощью информации о вероятности (оценка состояния и ковариация, например) существующей дорожки, такой, что правильные или идеальные обнаружения имеют высокую вероятность (97%-я вероятность, например) нахожения в пределах этого логического элемента валидации.
Однако, если средство отслеживания обеспечивает несколько дорожек, процесс ассоциации данных становится более сложным, потому что одно обнаружение может находиться в пределах логических элементов валидации нескольких дорожек. Например, в следующем рисунке, T дорожек 1 и T 2 активно обеспечен в средстве отслеживания, и у каждого из них есть свой собственный логический элемент валидации. Начиная с обнаружения D 2 находится в пересечении логических элементов валидации и T 1 и T 2, две дорожки (T 1 и T 2) соединяются и формируют кластер. Кластер является набором связанных дорожек и их связанных обнаружений.
Чтобы представлять отношение ассоциации в кластере, матрица валидации обычно используется. Каждая строка матрицы валидации соответствует обнаружению, в то время как каждый столбец соответствует дорожке. Чтобы составлять возможность каждого обнаружения, являющегося помехой, первый столбец добавляется и обычно называемый "Дорожкой 0" или T 0. Если обнаружение D, i - в логическом элементе валидации дорожки D j, то (j, i +1) запись матрицы валидации равняется 1. В противном случае это - нуль. Для показанного на рисунке кластера матрица валидации Ω
Обратите внимание на то, что все элементы в первом столбце Ω равняются 1, потому что любое обнаружение может быть помехой или ложным предупреждением. Один важный шаг в логике объединенной вероятностной ассоциации данных (JPDA) должен получить все выполнимые независимые объединенные события в кластере. Два предположения для выполнимых объединенных событий:
Обнаружение не может быть испущено больше чем одной дорожкой.
Дорожка не может быть обнаружена несколько раз датчиком во время одного сканирования.
На основе этих двух предположений могут быть сформулированы выполнимые объединенные события (FJEs). Каждый FJE сопоставлен с матрицей FJE Ωp из начальной матрицы валидации Ω. Например, с матрицей валидации Ω, восемь матриц FJE могут быть получены:
Как прямое следствие этих двух предположений, Ωp матрицы имеют точно одно "1" значение на строку. Кроме того, за исключением первого столбца, который сопоставляет с помехой, может быть самое большее один "1" для каждого столбца. Когда количество связанных дорожек растет в кластере, количестве увеличений FJE быстро. jpdaEvents
функционируйте использует эффективный алгоритм поиска в глубину, чтобы сгенерировать все выполнимые объединенные матрицы события.
[1] Фортманн, T. Y. Панель шалом и М. Шефф. "Отслеживание гидролокатора Нескольких Целей Используя Объединенную Вероятностную Ассоциацию Данных". Журнал IEEE Океанской Разработки. Издание 8, Номер 3, 1983, стр 173-184.
[2] Musicki, D. и Р. Эванс. "Объединенная Интегрированная Вероятностная Ассоциация Данных: JIPDA". Транзакции IEEE на Космических и Электронных системах. Издание 40, Номер 3, 2004, стр 1093-1099.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Все обнаружения, используемые с мультиобъектным средством отслеживания, должны иметь свойства с теми же размерами и типами.
Если вы используете ObjectAttributes
поле в objectDetection
объект, необходимо задать это поле как ячейку, содержащую структуру. Структура для всех обнаружений должна иметь те же поля, и значения в этих полях должны всегда иметь тот же размер и тип. Форма структуры не может измениться в процессе моделирования.
Если ObjectAttributes
содержатся в обнаружении, SensorIndex
значение обнаружения не может быть больше 10.
Первое обновление мультиобъектного средства отслеживания должно содержать по крайней мере одно обнаружение.
objectDetection
| objectTrack
| trackHistoryLogic
| trackingABF
| trackingCKF
| trackingEKF
| trackingIMM
| trackingKF
| trackingUKF
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.