Этот пример показывает, как симулировать слияние датчиков и отслеживание в 3D среде симуляции для беспилотных аппаратов. В примере также показано, как использовать эффективность метрики для оценки эффективности трекера в разомкнутый контур окружения.
Автономное транспортное средство использует несколько датчиков, включая камеры и радар, чтобы воспринимать окружающее окружение. Однако каждый датчик имеет свои ограничения. Слияние информации с различных датчиков может сделать восприятие транспортного средства более устойчивым. Слияние и отслеживание датчиков является центральным элементом процесса принятия решений в различных системах, включая следование по дорожной полосе и предупреждение столкновения. Используя модель слияния и отслеживания датчиков в этом примере, можно запустить тесты на критических сценариях, которые в действительности трудно реализовать. В этом примере необходимо выполнить следующие шаги.
Исследуйте тестовую модель - Модель содержит датчики, алгоритм слияния датчиков и отслеживания и метрики для оценки функциональности. Эквивалентная сцена Unreal Engine ® используется для моделирования обнаружений с радарного датчика и датчика зрения.
Сконфигурируйте датчики и среду - настройте сценарий вождения, который включает автомобиль , оборудованный датчиком с камерой и радаром. Постройте график зоны покрытия каждого датчика с помощью возможностей «птичий глаз».
Выполните слияние и отслеживание датчика - Объедините информацию с двух датчиков с помощью совместного вероятностного объединения данных (JPDA) многообъектного трекера, чтобы отслеживать объекты вокруг автомобиля , оборудованного датчиком.
Оцените эффективность трекера - Используйте обобщённый оптимальный подшаблон (GOSPA), чтобы оценить эффективность трекера.
Симулируйте тестовую модель и анализируйте результаты - можно сконфигурировать тестовую модель для различных сценариев. По умолчанию модель конфигурирует сценарий, в котором целевые транспортные средства приближаются друг к другу перед автомобилем , оборудованным датчиком по трем смежным полосам и представляют проблему для системы слежения. Симулируйте модель и анализируйте компоненты метрики GOSPA, чтобы понять эффективность трекера.
Этот пример проверяет синтез датчика и алгоритм отслеживания в 3D среде симуляции, которая использует Unreal Engine ® из Epic Games ®. Для симуляции движущей среды Unreal Engine требуется 64-разрядная платформа Windows ®.
if ~ispc error(['3D simulation is only supported on Microsoft', char(174), ' Windows', char(174), '.']); end
Чтобы исследовать тестовую модель, откройте рабочую копию файлов примера проекта. MATLAB ® копирует файлы в папку примера, чтобы можно было их редактировать.
addpath(fullfile(matlabroot, 'toolbox', 'driving', 'drivingdemos')); helperDrivingProjectSetup('FVSFTestBench.zip', 'workDir', pwd);
Откройте тестовую модель.
open_system('ForwardVehicleSensorFusionTestBench');
Открытие этой модели запускает helperSLForwardVehicleSensorFusionSetup
скрипт, который инициализирует сценарий с помощью drivingScenario
объект в базовом рабочем пространстве. Он также конфигурирует параметры слияния и отслеживания датчика, параметры транспортного средства и сигналы шины Simulink ®, необходимые для определения входов и выходов для ForwardVehicleSensorFusionTestBench
модель. Тестовая модель содержит следующие подсистемы:
Датчики и Окружение - Эта подсистема задает сцену, транспортные средства и датчики, используемые для симуляции.
Fusion датчика транспортного средства - Эта подсистема реализует радиолокационную кластеризацию, конкатенацию обнаружения, слияние и алгоритмы слежения.
Оценить метрики трекера - Эта подсистема оценивает эффективность трекера с помощью метрики GOSPA между набором треков и их основными истинами.
Подсистема Sensors and Environment конфигурирует дорожную сеть, размещает транспортные средства и синтезирует датчики. Для примера, который использует подобную подсистему, смотрите Highway Lane Following. Откройте Подсистему Датчиков и Окружения.
open_system('ForwardVehicleSensorFusionTestBench/Sensors and Environment');
Подсистема включает два блока датчиков: Simulation 3D Radar и Simulation 3D-видение Detection Generator. Параметры этих моделей заданы helperSLForwardVehicleSensorFusionSetup
скрипт, когда вы открываете тестовую модель. Эти блоки генерируют обнаружения из среды симуляции 3D.
Блок Simulation 3D Probabilistic Radar генерирует обнаружения объектов на основе статистической модели. Этот датчик установлен на автомобиль , оборудованный датчиком со смещением, заданным Position
и Rotation
параметры radar
структура.
disp(radar');
FieldOfView: [40 5] DetectionRanges: [1 100] Position: [3.7290 0 0.8000] PositionSim3d: [2.4240 0 0.8000] Rotation: [0 0 0]
Блок Simulation 3D-видение Detection Generator генерирует обнаружения от измерений камеры, сделанных датчиком зрения, установленным на автомобиле , оборудованном датчиком со смещением, заданным Position
и Rotation
параметры camera
структура.
disp(camera');
NumColumns: 1024 NumRows: 768 FieldOfView: [45 45] ImageSize: [768 1024] PrincipalPoint: [512 384] FocalLength: [512 512] Position: [1.8750 0 1.2000] PositionSim3d: [0.5700 0 1.2000] Rotation: [0 0 0] DetectionRanges: [6 50] LaneDetectionRanges: [6 30] MeasurementNoise: [3×3 double] MinObjectImageSize: [10 10]
Область возможностей птичьего глаза отображает покрытия датчика с помощью кубоидного представления. Зона радиолокационного покрытия и обнаружения находятся в красном цвете. Зона покрытия зрения и обнаружения окрашены в синий цвет.
Модель Fusion Транспортного средства Forward Sensor является образцом модели, которая обрабатывает визуальные и радиолокационные обнаружения и генерирует положение и скорость треков относительно автомобиля , оборудованного датчиком. Откройте образец модели Forward Vehicle Sensor Fusion.
open_system('ForwardVehicleSensorFusion');
Образец модели Forward Vehicle Sensor Fusion содержит следующие блоки:
Кластеризация Обнаружения - Кластер нескольких радаров, поскольку трекер ожидает не более одного обнаружения на каждый объект на датчик.
Обнаружение конкатенации - объедините визуальное и радиолокационное обнаружения на одной выходной шине.
JPDA Tracker - выполнять слияние и управлять треками стационарных и движущихся объектов.
Блок JPDA Tracker является ключевым блоком образца модели Forward Vehicle Sensor Fusion. Трекер запирает информацию, содержащуюся в конкатенированных обнаружениях, и отслеживает объекты вокруг автомобиля , оборудованного датчиком. Трекер выводит список подтвержденных треков. Эти дорожки обновляются во время предсказания, управляемые цифровыми часами в подсистеме Sensors и окружение.
Подсистема Evaluate Tracker Metrics вычисляет различные метрики, чтобы оценить эффективность трекера. Откройте подсистему Evaluate Tracker Metrics.
open_system('ForwardVehicleSensorFusionTestBench/Evaluate Tracker Metrics');
Чтобы оценить эффективность трекера, вы должны удалить актёры, которые находятся вне зоны покрытия датчиков, из основной истины информации. Для этого подсистема использует блок Filter Within Coverage, чтобы фильтровать только те субъекты, которые находятся в зоне покрытия датчиков.
Подсистема содержит метрический блок GOSPA, который вычисляет эти метрики:
Метрика GOSPA - эта метрика измеряет расстояние между набором треков и их основными истинами и объединяет как присвоение, так и точность оценки состояния в одно значение стоимости.
Ошибка локализации - эта ошибка указывает на точность оценки состояния. Более высокое значение указывает, что назначенные дорожки не оценивают состояние истин правильно.
Пропущенная целевая ошибка - эта ошибка указывает на наличие пропущенных целевых объектов. Более высокое значение указывает, что цели не отслеживаются.
Ложная ошибка трека - эта ошибка указывает на наличие ложных треков.
Во время симуляции можно визуализировать сценарий как в окне симуляции 3D, так и с помощью возможностей птичьего глаза.
Чтобы открыть возможности, нажмите Bird 's-Eye Scope в разделе Review Results на панели инструментов Simulink. Затем нажмите Find Signals, чтобы найти сигналы, которые могут отобразить возможности.
Сконфигурируйте ForwardVehicleSensorFusionTestBench
модель для симуляции scenario_LFACC_03_Curve_StopnGo
сценарий. Этот сценарий содержит шесть транспортных средств, включая автомобиль , оборудованный датчиком. Функция сценария также задает их траектории. В этом сценарии автомобиля , оборудованного датчиком имеет головное транспортное средство в своей полосе. В полосе справа от автомобиля , оборудованного датчиком целевые транспортные средства, обозначенные зеленым и синим цветом, движутся в одном направлении. В полосе налево от автомобиля , оборудованного датчиком целевые транспортные средства, обозначенные желтым и фиолетовым цветом, движутся в обратном направлении.
helperSLForwardVehicleSensorFusionSetup("scenarioFcnName","scenario_LFACC_03_Curve_StopnGo");
Симулируйте тестовую модель.
sim('ForwardVehicleSensorFusionTestBench');
ActorName: 'SimulinkVehicle3' ObjectClassID: 0 ActorID: 3 Position: [216.1989 38.4191 0] Velocity: [0 0 0] Rotation: [0 0 -2.6542] AngularVelocity: [0 0 176.6253] ActorName: 'SimulinkVehicle6' ObjectClassID: 0 ActorID: 4 Position: [37.4850 4.5686 0] Velocity: [0 0 0] Rotation: [0 0 0.0324] AngularVelocity: [0 0 -29.4416] ActorName: 'SimulinkVehicle2' ObjectClassID: 0 ActorID: 5 Position: [49.8752 1.1827 0] Velocity: [0 0 0] Rotation: [0 0 0.0521] AngularVelocity: [0 0 -28.3173] ActorName: 'SimulinkVehicle5' ObjectClassID: 0 ActorID: 6 Position: [5.4562 3.9658 0] Velocity: [0 0 0] Rotation: [0 0 5.7500e-04] AngularVelocity: [0 0 -31.2669] ActorName: 'SimulinkVehicle4' ObjectClassID: 0 ActorID: 7 Position: [250.7064 60.2103 0] Velocity: [0 0 0] Rotation: [0 0 -2.5111] AngularVelocity: [0 0 -175.1727] NumLaneBoundaries: 5 LaneBoundaries: [1×5 struct]
Симуляция открывает окно 3D Simulation, в котором отображается сценарий, но не отображаются обнаружения или покрытие датчика. Используйте окно Bird ' s-Eye Scope, чтобы визуализировать актёра эго, целевых актёров, покрытие и обнаружения датчика и подтвержденные дорожки. Чтобы визуализировать только данные о датчике, отключите окно 3D Simulation во время симуляции, очистив Display 3D simulation window
параметр в блоке Simulation 3D Scene Configuration.
Во время симуляции модель выводит метрику GOSPA и ее компоненты. Модель регистрирует метрики с подтвержденными треками и основной истиной информацией в переменном базовом рабочем пространстве logsout
. Можно построить график значений в logsout
при помощи helperPlotForwardVehicleSensorFusionResults
функция.
helperPlotForwardVehicleSensorFusionResults(logsout);
Графики показывают, что ошибка локализации в основном учитывает метрику GOSPA. Заметьте, что пропущенный целевой компонент первоначально начинается с более высокого значения из-за задержки установления трекера и снижается до нуля через некоторое время. Другой peaks в пропущенной целевой кривой происходят из-за той же задержки, когда желтые и фиолетовые целевые транспортные средства заходят в зону покрытия датчиков.
Можно использовать процедуру в этом примере, чтобы исследовать эти другие сценарии, которые совместимы с ForwardVehicleSensorFusionTestBench
:
scenario_LFACC_01_Curve_DecelTarget
scenario_LFACC_02_Curve_AutoRetarget
scenario_LFACC_03_Curve_StopnGo [По умолчанию]
scenario_LFACC_04_Curve_CutInOut
scenario_LFACC_05_Curve_CutInOut_TooClose
scenario_LFACC_06_Straight_StopandGoLeadCar
scenario_FVSF_01_Curve_FourVehicles
scenario_FVSF_02_Straight_FourVehicles
scenario_FVSF_03_Curve_SixVehicles
Используйте эти дополнительные сценарии для анализа ForwardVehicleSensorFusionTestBench
при различных условиях.
Этот пример показал, как моделировать и оценить эффективность компонента слияния и отслеживания датчиков для беспилотного вождения. Эта модель уровня компонента позволяет вам стресс-тестировать ваш проект в разомкнутый контур виртуальных окружений и помогает в настройке параметров трекера путем оценки метрик GOSPA. Следующим логическим шагом является интеграция этой модели уровня компонента в системе с обратной связью, такой как дорожная полоса следования.
Cuboid To 3D Simulation | Multi-Object Tracker | Scenario Reader | Simulation 3D Scene Configuration | Vehicle To World