Этот пример показывает, как отслеживать объекты в Simulink ® с Sensor Fusion и Tracking Toolbox™, когда ассоциация обнаружений датчиков с треками неоднозначна. Он внимательно следует примеру Отслеживать Тесно Расположенные Цели Под Неоднозначностью MATLAB ®.
Датчики сообщают об одном обнаружении для нескольких целей, когда цели расположены так тесно, что датчики не могут разрешить их пространственно. Этот пример иллюстрирует рабочий процесс для отслеживания целей при такой неоднозначности с помощью глобального ближайшего соседа (GNN), совместной вероятностной ассоциации данных (JPDA) и трекеров многофункциональной гипотезы (TOMHT).
Перед запуском этого примера сценарий был сгенерирован, как описано в Отслеживании Тесно Расположенных Целей Под Неоднозначностью. Данные обнаружения и время из этого сценария затем были сохранены в файле сценария CloseSpacedData.mat.
DataLogReader
Блок DataLogReader реализован как блок MATLAB System (Simulink). Код для блока определяется классом helper, HelperDataLogReader. Блок считывает записанные данные из файла CloseSpacedData.mat и выводит обнаружение и время для каждой метки времени.
Шпионы
Блок Trackers является вариантом подсистемы, который имеет шесть подсистем, заданных внутри. Каждая подсистема состоит из одного из трех трекеров и одной из двух моделей движения.
Первая модель движения является моделью постоянной скорости с расширенным фильтром Калмана. The helperCVFilter
функция изменяет фильтр initcvekf
возвращает, чтобы допустить более высокую неопределенность в терминах скорости и более высокое горизонтальное ускорение в технологическом шуме.
Второй фильтр, который вы используете, является взаимодействующим фильтром с несколькими моделями (IMM), который позволяет вам задать две или более моделей движения для целей. Фильтр автоматически обновляет вероятность каждой модели движения на основе приведенных измерений и оценивает целевое состояние и неопределенность на основе этих моделей и вероятностей. В этом примере цели переключаются между прямыми ногами с постоянным движением скорости и ногами с постоянной скоростью поворота. Поэтому вы задаете фильтр IMM с моделью постоянной скорости и постоянной моделью скорости поворота, используя helperIMMFilter
функция.
Можно запустить различные строения, изменив значение Tracker
в рабочей области, как показано в приведенной выше таблице. Можно также использовать Переменные Править и Управлять Рабочей областью, Используя Model Explorer (Simulink) как показано ниже, чтобы изменить значение Tracker
.
TrackAssignmentMetrics
TrackAssignmentMetrics реализован с помощью блока MATLAB System (Simulink). Код для блока определяется классом helper, HelperTrackAssignmentMetrics
.
Визуализация
Блок визуализации реализован с помощью блока MATLAB System (Simulink). Код для блока определяется классом helper, HelperDetectionAndTrackDisplay
.
Обнаружения и отслеживание объектов шины
Блок подсистемы варианта трекеров получает обнаружения как объект шины с временными значениями и выводит дорожки как объект шины в блок визуализации. Визуализировать структуру каждой шины можно с помощью редактора шин (Simulink). Следующие изображения показывают структуру шины для обнаружений и дорожек.
Шина обнаружения
The 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 позволяет трекеруGNN правильно отслеживать маневрирующую цель. Заметьте, что объект 1 истинности имеет нуль пропусков из-за непрерывной истории связанного с ним трека.
Однако даже с IMM-фильтром одна из трасс ломается в области неоднозначности. The trackerGNN
получает только одно обнаружение в этой области неоднозначности, и поэтому может обновить с ней только один из треков. После нескольких обновлений счет покрытой дорожки падает ниже порога удаления, и трекер сбрасывает дорожку.
Вышеуказанные результаты достигаются из третьего строения, где Tracker
= 3 в рабочем пространстве MATLAB. Можно заметить, что trackerJPDA поддерживает оба трека, подтвержденные в области неоднозначности. Однако между двумя треками происходит своп.
Вышеуказанные результаты достигаются из четвертого строения, где Tracker
= 4 в рабочем пространстве MATLAB. Можно наблюдать, что trackerJPDA с IMM-фильтром точнее отслеживает маневрирующие цели и не ломал и не терял трассу даже во время поворотов.
Далее используется пятое строение с trackerTOMHT
и модель постоянной скорости путем установки Tracker
= 5 в рабочем пространстве MATLAB. Можно заметить, что результат trackerTOMHT похож на полученный трекеромJPDA: он поддерживает треки через область неоднозначности, но полагаясь только на модель постоянной скорости заставляет треки меняться местами.
Наконец, мы используем trackerTOMHT
и фильтр IMM путем установки Tracker
= 6 в рабочем пространстве MATLAB. На этот раз трекерTOMHT с IMM-фильтром точнее отслеживает маневрирующие цели и не ломал и не терял трассу даже во время поворотов. Однако время выполнения для trackerTOMHT значительно дольше, чем при помощи trackerJPDA.
В этом примере вы научились отслеживать тесно расположенные цели с помощью трех типов трекеров: глобального ближайшего соседа, совместной вероятностной ассоциации данных и ориентированной на трек множественной гипотезы. Вы видели, как использовать подсистему вариантов в Simulink, чтобы выбрать, какой трекер и фильтр запустить. Вы также узнали, как можно использовать и конфигурировать trackerGNN
, trackerJPDA
, и trackerTOMHT
Блоки Simulink для слежения за маневрирующими целями.
Вы наблюдали, что фильтр постоянной скорости недостаточен при отслеживании целей во время их маневра. В этом случае требуется взаимодействующий фильтр с несколькими моделями. Вы также отметили, что JPDA и TOMHT трекеры могут более точно обрабатывать случай неоднозначной связи обнаружений с трекерами по сравнению с GNN трекером.