В этом примере показано, как отслеживать объекты в Simulink ® с помощью Sensor Fusion и Tracking Toolbox™, когда связь обнаруженных датчиков с дорожками неоднозначна. Он точно соответствует примеру отслеживания близко расположенных целей в условиях неоднозначности MATLAB ®.
Датчики сообщают об одном обнаружении нескольких целей, когда цели расположены так близко, что датчики не могут разрешить их пространственно. Этот пример иллюстрирует рабочий процесс для отслеживания целей при такой неоднозначности с использованием глобальных ближайшего соседа (GNN), совместной вероятностной ассоциации данных (JPDA) и трекеров, ориентированных на множественные гипотезы (TOMHT).
Перед выполнением этого примера был создан сценарий, описанный в разделе Отслеживание близко расположенных целей в условиях неоднозначности. Данные обнаружения и времени из этого сценария были затем сохранены в файле сценария TCDa.mat.

DataLogReader
Блок DataLogReader реализован как блок системы MATLAB (Simulink). Код блока определяется вспомогательным классом HelperDataLogReader. Блок считывает записанные данные из файла POTDa.mat и выводит обнаружение и время для каждой временной метки.
Шпионы
Блок трекеров - это блок вариационной подсистемы, который имеет шесть внутренних подсистем. Каждая подсистема состоит из одного из трех трекеров и одной из двух моделей движения.
![]()
Первая модель движения представляет собой модель постоянной скорости с расширенным калмановым фильтром. helperCVFilter функция изменяет фильтр initcvekf возвращается, чтобы обеспечить более высокую неопределенность в терминах скорости и более высокое горизонтальное ускорение в шуме процесса.
Вторым используемым фильтром является взаимодействующий фильтр с несколькими моделями (IMM), который позволяет определить две или более моделей движения для целей. Фильтр автоматически обновляет вероятность каждой модели движения на основе заданных измерений и оценивает целевое состояние и неопределенность на основе этих моделей и вероятностей. В этом примере цели переключаются между прямыми ветвями при движении с постоянной скоростью и ветвями с постоянной скоростью поворота. Поэтому фильтр IMM с моделью постоянной скорости и моделью постоянной скорости поворота определяется с помощью helperIMMFilter функция.
Можно выполнить различные конфигурации, изменив значение Tracker в рабочей области, как показано в приведенной выше таблице. Можно также использовать команду Править переменные рабочей области (Edit and Manage Workspace Variables) с помощью проводника моделей (Simulink), как показано ниже, чтобы изменить значение Tracker.
![]()
TrackAssignmentMetrics
TrackAssignureMetrics реализуется с использованием блока MATLAB System (Simulink). Код блока определяется классом помощника, HelperTrackAssignmentMetrics.
Визуализация
Блок визуализации реализуется с использованием блока MATLAB System (Simulink). Код блока определяется классом помощника, HelperDetectionAndTrackDisplay.
Обнаружение и отслеживание объектов шины
Блок подсистемы вариантов трекеров принимает обнаружения как объект шины со значениями времени и выводит дорожки как объект шины в блок визуализации. Структуру каждой шины можно визуализировать с помощью редактора шин (Simulink). На следующих рисунках показана структура шины для обнаружений и дорожек.
Шина обнаружения
detectionBus выводит вложенный объект шины с 2 элементами, NumDetections и Detections.

Первый элемент Detections является объектом шины фиксированного размера, представляющим все обнаруженные объекты. Второй элемент, NumDetections, представляет количество обнаружений. Структура шины аналогична objectDetection класс.

Гусеничная шина
Шина пути аналогична шине обнаружений. шина пути является вложенной, где NumTracks определяет количество дорожек в шине и Tracks определите фиксированный размер дорожек. Размер дорожек определяется параметром блока Maximum number of tracks. На рисунке ниже показана конфигурация объекта шины путей для trackerGNN. Конфигурация объекта шины путей для trackerJPDA и trackerTOMHT аналогична.

Второй элемент Tracks - объект шины, определенный trackBus_GNNTracks для конфигурации trackerGNN. Эта шина автоматически создается блоком трекера с использованием имени шины, указанного в качестве префикса. Структура шины аналогична objectTrack класс.

Конфигурация трекера в блоке подсистемы вариантов трекеров аналогична конфигурации трекера в примере «Отслеживание близко расположенных целей под неоднозначностью MATLAB ®».
Вы можете запустить trackerGNN, trackerJPDA, и trackerTOMHT блоки в моделях Simulink ® посредством интерпретированного выполнения или генерации кода. При интерпретированном выполнении модель моделирует блок с помощью механизма выполнения MATLAB ®, который позволяет ускорить время запуска и увеличить время выполнения. При генерации кода модель использует подмножество кода MATLAB, поддерживаемое для генерации кода, что обеспечивает более высокую производительность, чем интерпретируемое выполнение.
После выполнения модели можно визуализировать результаты на фигурах.
![]()
Вышеуказанные результаты достигаются из первой конфигурации, где Tracker = 1 в рабочей области MATLAB. Эти результаты показывают, что есть два объекта истины. Однако трекер генерирует три подтверждённых трека, и один из треков не выжил до конца сценария. В конце сценария трекер связывает объект 1 истинности с дорожкой 8. Трекер создал дорожку 8 по сценарию после удаления дорожки 2. Трекер назначил объект 2 истинности для дорожки 1 в конце сценария после двух разрывов дорожки в истории слежения.
![]()
Вышеуказанные результаты достигаются из второй конфигурации, где Tracker = 2 в рабочей области MATLAB. Фильтр IMM позволяет trackerGNN правильно отслеживать цель маневрирования. Обратите внимание, что объект истинности 1 имеет нулевые разрывы из-за непрерывной истории связанной с ним дорожки.
Однако даже с помощью фильтра IMM одна из дорожек обрывается в области неоднозначности. trackerGNN принимает только одно обнаружение в этой области неоднозначности и, следовательно, может обновлять только одну из дорожек вместе с ней. После нескольких обновлений оценка совмещенной дорожки падает ниже порога удаления, и трекер сбрасывает дорожку.
![]()
Вышеуказанные результаты достигаются из третьей конфигурации, где Tracker = 3 в рабочей области MATLAB. Можно заметить, что trackerJPDA поддерживает обе дорожки, подтвержденные в области неоднозначности. Однако между этими двумя путями происходит своп.
![]()
Вышеуказанные результаты достигаются из четвертой конфигурации, где Tracker = 4 в рабочей области MATLAB. Можно заметить, что trackerJPDA с фильтром IMM более точно отслеживает маневрирующие цели и не ломал и не терял трассу даже во время поворотов.
![]()
Далее используется пятая конфигурация с trackerTOMHT и модель постоянной скорости путем установки Tracker = 5 в рабочей области MATLAB. Можно заметить, что результат trackerTOMHT аналогичен результату, полученному trackerJPDA: он поддерживает треки через область неоднозначности, но полагаясь только на модель постоянной скорости, заставляет треки поменяться местами.
![]()
Наконец, мы используем trackerTOMHT и фильтр IMM путем установки Tracker = 6 в рабочей области MATLAB. На этот раз trackerTOMHT с IMM-фильтром более точно отслеживает маневрирующие цели и не ломал и не терял трассу даже во время поворотов. Однако время выполнения trackerTOMHT значительно длиннее, чем при использовании trackerJPDA.
В этом примере вы научились отслеживать близко расположенные цели с помощью трех типов трекеров: глобальный ближайший сосед, совместная вероятностная ассоциация данных и отслеживаемая множественная гипотеза. Было показано, как использовать подсистему вариантов в Simulink для выбора трекера и фильтра для запуска. Вы также узнали, как можно использовать и настраивать trackerGNN, trackerJPDA, и trackerTOMHT Блоки имитации для слежения за маневрирующими целями.
Вы заметили, что фильтр постоянной скорости недостаточен при сопровождении целей во время их маневра. В этом случае требуется взаимодействующий фильтр с несколькими моделями. Вы также заметили, что трекеры JPDA и TOMHT могут более точно обрабатывать случай неоднозначной ассоциации обнаружений с треками по сравнению с трекером GNN.