В этом примере показано, как отслеживать транспортные средства с помощью измерений с помощью лидарного датчика, установленного поверх эго-транспортного средства. Благодаря высокой разрешающей способности лидарного датчика каждое сканирование датчика содержит большое количество точек, обычно известных как облако точек. Пример иллюстрирует рабочий процесс в Simulink для обработки облака точек и отслеживания объектов. Данные лидара, используемые в этом примере, записываются из сценария движения по шоссе. Записанные данные используются для отслеживания транспортных средств с помощью совместного трекера вероятностных данных (JPDA) и подхода, основанного на взаимодействии нескольких моделей (IMM). Пример точно соответствует примеру Track Vehicles Using Lidar: From Point Cloud to Track List (Sensor Fusion and Tracking Toolbox) MATLAB ®.
Данные лидара, используемые в этом примере, доступны по следующей ссылке: https://ssd.mathworks.com/supportfiles/lidar/data/TrackVehiclesUsingLidarExampleData.zip
Загрузите файлы данных в текущую рабочую папку. Если требуется поместить файлы в другую папку, измените имя каталога в последующих инструкциях.
% Load the data if unavailable. if ~exist('lidarData_1.mat','file') dataUrl = 'https://ssd.mathworks.com/supportfiles/lidar/data/TrackVehiclesUsingLidarExampleData.zip'; datasetFolder = fullfile(pwd); unzip(dataUrl,datasetFolder); end
load_system('TrackVehiclesSimulinkExample'); set_param('TrackVehiclesSimulinkExample','SimulationCommand','update'); open_system('TrackVehiclesSimulinkExample');

Устройство чтения данных Lidar и изображений
Блоки Lidar Data Reader и Image Data Reader реализуются с использованием блока MATLAB System (Simulink). Код для блоков определяется классами-помощниками, HelperLidarDataReader и HelperImageDataReader соответственно. Считыватели изображений и лидарных данных считывают записанные данные из файлов MAT и выводят опорное изображение и местоположения точек в облаке точек соответственно.
Детектор ограничивающих рамок
Как описано выше, необработанные данные от датчика содержат большое количество точек. Эти необработанные данные должны быть предварительно обработаны для извлечения объектов, представляющих интерес, таких как автомобили, велосипедисты и пешеходы. Предварительная обработка выполняется с помощью блока «Детектор ограничивающих рамок». Детектор ограничивающей рамки также реализован в виде блока System™ MATLAB, определяемого классом вспомогательного устройства. HelperBoundingBoxDetectorBlock. Она принимает расположения облаков точек в качестве входных данных и выводит обнаружения ограничивающих рамок, соответствующие препятствиям. На схеме показаны процессы, задействованные в модели детектора ограничивающей рамки, и функции Computer Vision Toolbox™, используемые для реализации каждого процесса. Он также показывает параметры блока, которые управляют каждым процессом.

Блок выводит информацию об обнаружениях и сегментации в виде Simulink.Bus (Simulink) объект с именем detectionBus и segmentationBus. Эти шины создаются в базовом рабочем пространстве с помощью вспомогательной функции helperCreateDetectorBus указано в PreLoadFcn обратный вызов. Дополнительные сведения о функциях обратного вызова см. в разделе Обратные вызовы модели (Simulink).
Алгоритм отслеживания
Алгоритм слежения реализован с использованием трекера совместной вероятностной ассоциации данных (JPDA), который использует взаимодействующий подход множественной модели (IMM) для отслеживания целей. Фильтр IMM реализован helperInitIMMFilter, который указан как параметр «Filter initialization function» блока. В этом примере фильтр IMM настроен на использование двух моделей: кубовидной модели с постоянной скоростью и кубовидной модели с постоянной скоростью поворота. Модели определяют размеры кубоида как константы во время перехода состояния и их оценки эволюционируют во времени во время этапов коррекции фильтра. Анимация ниже показывает эффект смешивания моделей постоянной скорости и постоянной скорости поворота с различными вероятностями на этапах прогнозирования фильтра.

Фильтр IMM автоматически вычисляет вероятность каждой модели, когда фильтр корректируется с помощью обнаружений. Анимация ниже показывает расчетную траекторию и вероятность моделей во время события изменения полосы движения.

Подробное описание моделей перехода состояния и измерения см. в разделе «Модель измерения состояния цели и датчика» примера MATLAB.
Блок трекера устанавливает флажки «Enable all tracks output» и «Enable detectable track ID input» для вывода всех треков из трекера и вычисления их вероятности обнаружения в зависимости от их состояния.
Вычислить обнаруживаемость
Блок Calculate Detectability реализован с использованием блока MATLAB Function (Simulink). Блок вычисляет идентификаторы обнаруживаемого трафика для трекера и выводит его в виде массива с 2 столбцами. Первый столбец представляет TrackID дорожек, а второй столбец указывает их вероятность обнаружения датчиком и детектором ограничивающей рамки.
Визуализация
Блок визуализации также реализуется с помощью системного блока MATLAB и определяется с помощью HelperLidarExampleDisplayBlock. Блок использует RunTimeObject параметр блоков для отображения их выходов. Дополнительные сведения о доступе к выводам блоков во время моделирования см. в разделе Доступ к данным блоков во время моделирования (Simulink).
Как описано выше, входы и выходы различных блоков являются объектами шины. Структуру каждой шины можно визуализировать с помощью редактора шин (Simulink). На следующих рисунках показана структура шины для обнаружений и дорожек.
Обнаружения
detectionBus выводит вложенный объект шины с 2 элементами, NumDetections и Detections.
Первый элемент, NumDetections, представляет количество обнаружений. Второй элемент Detections является объектом шины фиксированного размера, представляющим все обнаруженные объекты. Первое NumDetections элементы объекта шины представляют текущий набор обнаружений. Обратите внимание, что структура шины аналогична objectDetection (Sensor Fusion and Tracking Toolbox) класс.
Следы
Шина пути аналогична шине обнаружений. это вложенная шина, где NumTracks определяет количество дорожек в шине и Tracks определите фиксированный размер дорожек. Размер дорожек определяется параметром блока «Максимальное количество дорожек».
Второй элемент Tracks - объект шины, определенный trackBusTracks. Эта шина автоматически создается блоком трекера с использованием имени шины, указанного в качестве префикса. Обратите внимание, что структура шины аналогична objectTrack (Sensor Fusion and Tracking Toolbox) класс.
Алгоритм детектора и трекера настраивается точно так же, как и в примере MATLAB Track Vehicles Using Lidar: From Point Cloud to Track List (Sensor Fusion and Tracking Toolbox). После запуска модели можно визуализировать результаты на рисунке. В анимации ниже показаны результаты от 0 до 4 секунд. Дорожки представлены зелеными ограничивающими прямоугольниками. Обнаруженные ограничивающие рамки представлены оранжевыми ограничивающими рамками. Обнаруженные объекты также имеют оранжевые точки внутри, представляющие облако точек, сегментированное как препятствия. Сегментированный грунт показан фиолетовым цветом. Обрезанное или удаленное облако точек отображается синим цветом. Обратите внимание, что отслеживаемые объекты могут сохранять свою форму и кинематический центр, размещая детекторы на видимых участках транспортных средств. Это иллюстрирует эффект смещения и усадки, смоделированный в функциях измерения.
![]()
close_system('TrackVehiclesSimulinkExample');
В этом примере показано, как использовать JPDA-трекер с IMM-фильтром для отслеживания объектов с помощью лидарного датчика. Вы узнали, как облако исходных точек может быть предварительно обработано для создания обнаружений для обычных трекеров, которые предполагают одно обнаружение на объект на сканирование датчика. Также было показано, как использовать кубовидную модель для описания расширенных объектов, отслеживаемых JPDA-трекером.
Мультиобъектный трекер совместной вероятностной ассоциации данных (панель инструментов слияния датчиков и отслеживания)