Этот пример показывает вам, как отследить транспортные средства с помощью измерений от датчика лидара, смонтированного сверху автомобиля, оборудованного датчиком. Из-за высоких разрешающих способностей датчика лидара, каждый скан от датчика содержит большое количество точек, обычно известных как облако точек. Пример иллюстрирует рабочий процесс в Simulink для обработки облака точек и отслеживания объектов. Данные о лидаре, используемые в этом примере, зарегистрированы от магистрали ведущий сценарий. Вы используете записанные данные, чтобы отследить транспортные средства со средством отслеживания объединенной вероятностной ассоциации данных (JPDA) и подходом взаимодействующей многоуровневой модели (IMM). Пример сопровождает Транспортные средства Дорожки Используя Лидар: От Облака точек до примера Track List 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');
Лидар и средство чтения данных изображения
Блоки Читателя Средства чтения данных и Данных изображения Лидара реализованы с помощью блока MATLAB System (Simulink). Код для блоков задан классами помощника, HelperLidarDataReader
и HelperImageDataReader
соответственно. Изображение и средства чтения данных лидара считывают записанные данные из файлов MAT и выводят ссылочное изображение и местоположения точек в облаке точек соответственно.
Детектор ограничительной рамки
Аналогичный описанному ранее, необработанные данные от датчика содержат большое количество точек. Это необработанные данные должно быть предварительно обработано, чтобы извлечь предметы интереса, такие как автомобили, велосипедисты и пешеход. Предварительная обработка сделана с помощью блока Bounding Box Detector. Детектор Ограничительной рамки также реализован как блок MATLAB System™, заданный классом помощника, HelperBoundingBoxDetectorBlock
. Это принимает местоположения облака точек как вход и выходные обнаружения ограничительной рамки, соответствующие препятствиям. Схема показывает процессы, вовлеченные в модель детектора ограничительной рамки, и функции Computer Vision Toolbox™ раньше реализовывали каждый процесс. Это также показывает параметры блока, которые управляют каждым процессом.
Блок выводит обнаружения и информацию о сегментации как Simulink.Bus
Объект (Simulink) под названием detectionBus
и segmentationBus
. Эти шины создаются в базовом рабочем пространстве с помощью функции помощника helperCreateDetectorBus
заданный в PreLoadFcn
'callback'. Смотрите Коллбэки Модели (Simulink) для получения дополнительной информации о функциях обратного вызова.
Отслеживание алгоритма
Алгоритм отслеживания реализован с помощью средства отслеживания объединенной вероятностной ассоциации данных (JPDA), которое использует подход взаимодействующей многоуровневой модели (IMM), чтобы отследить цели. Фильтр IMM реализуется helperInitIMMFilter
, который задан как "Параметр" функции инициализации фильтра блока. В этом примере фильтр IMM сконфигурирован, чтобы использовать две модели, постоянную скоростную модель кубоида и постоянную модель кубоида угловой скорости вращения. Модели задают размерности кубоида как константы во время изменения состояния, и их оценки развиваются вовремя во время этапов коррекции фильтра. Анимация ниже показов эффект смешивания постоянной скорости и постоянных моделей угловой скорости вращения с различными вероятностями во время этапов предсказания фильтра.
Фильтр IMM автоматически вычисляет вероятность каждой модели, когда фильтр корректируется обнаружениями. Анимация ниже показов предполагаемая траектория и вероятность моделей во время маршрута изменяет событие.
Для подробного описания моделей изменения состояния и измерения обратитесь к разделу "Target State and Sensor Measurement Model" примера MATLAB.
Блок средства отслеживания выбирает флажок "Enable all tracks output" и "Enable detectable track IDs input", чтобы вывести все дорожки от средства отслеживания и вычислить их вероятность обнаружения в зависимости от их состояния.
Вычислите обнаружительную способность
Блок Calculate Detectability реализован с помощью блока MATLAB Function (Simulink). Блок вычисляет вход Detectable TrackIDs для средства отслеживания и выводит его как массив с 2 столбцами. Первый столбец представляет TrackIDs дорожек, и второй столбец задает их вероятность обнаружения детектором ограничительной рамки и датчиком.
Визуализация
Блок Visualization также реализован с помощью блока MATLAB System и задан с помощью HelperLidarExampleDisplayBlock
. Блок использует RunTimeObject
параметр блоков, чтобы отобразить их выводы. Смотрите доступ к Данным о Блоке В процессе моделирования (Simulink) для получения дополнительной информации о том, как получить доступ, блокируют выходные параметры в процессе моделирования.
Аналогичный описанному ранее, вводы и выводы различных блоков являются объектами шины. Можно визуализировать структуру каждой шины с помощью Редактора Шины (Simulink). Следующие изображения показывают структуру шины для обнаружений и дорожек.
Обнаружения
detectionBus
выводит вложенный объект шины с 2 элементами, NumDetections
и Detections
.
Первый элемент, NumDetections
, представляет количество обнаружений. Второй элемент Detections
объект шины фиксированного размера, представляющего все обнаружения. Первый NumDetections
элементы объекта шины представляют текущий набор обнаружений. Заметьте, что структура шины похожа на objectDetection
класс.
Дорожки
Шина дорожки похожа на шину обнаружений. Это - вложенная шина, где NumTracks
задает количество дорожек в шине и Tracks
задайте фиксированный размер дорожек. Размером дорожек управляют параметры блоков "Максимальное количество дорожек".
Второй элемент Tracks
объект шины, заданный trackBusTracks
. Эта шина автоматически создается блоком средства отслеживания при помощи имени шины, заданного как префикс. Заметьте, что структура шины похожа на objectTrack
класс.
Алгоритм детектора и средства отслеживания сконфигурирован точно так же, как Транспортные средства Дорожки Используя Лидар: От Облака точек до Списка Дорожек пример MATLAB. После выполнения модели можно визуализировать результаты на фигуре. Анимация ниже показов результаты времени от 0 до 4 секунд. Дорожки представлены зелеными ограничительными рамками. Обнаружения ограничительной рамки представлены оранжевыми ограничительными рамками. Обнаружения также имеют оранжевые точки в них, представляя облако точек, сегментированное как препятствия. Сегментированную землю отображают фиолетовым. Обрезанное или отброшенное облако точек отображают синим. Заметьте, что отслеживаемые объекты могут обеспечить свою форму и кинематический центр путем расположения обнаружений на видимые фрагменты транспортных средств. Это иллюстрирует эффект смещения и уменьшения, смоделированный в функциях измерения.
close_system('TrackVehiclesSimulinkExample');
Этот пример показал, как использовать средство отслеживания JPDA с фильтром IMM к отслеживаемым объектам с помощью датчика лидара. Вы изучили, как необработанное облако точек может быть предварительно обработано, чтобы сгенерировать обнаружения для обычных средств отслеживания, которые принимают одно обнаружение на объект на скан датчика. Вы также изучили, как использовать модель кубоида, чтобы описать расширенные объекты, прослеживаемые средством отслеживания JPDA.