В этом примере показано, как симулировать магистральный маршрут после приложения с контроллером, сплавом датчика и компонентами обработки видения. Эти компоненты тестируются в 3D среде симуляции, которая включает модели датчика камеры и радара.
Магистральная система следования маршрута ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние до предыдущего транспортного средства в том же маршруте. Система обычно использует алгоритмы обработки видения, чтобы обнаружить маршруты и транспортные средства от камеры. Обнаружения транспортного средства от камеры затем сплавлены с обнаружениями от радара, чтобы улучшить способность обнаружить окружающие транспортные средства. Диспетчер использует обнаружения маршрута, обнаружения транспортного средства и скорость набора, чтобы управлять регулированием и ускорением.
Этот пример демонстрирует, как создать тестовую модель, чтобы протестировать обработку видения, сплав датчика и средства управления в 3D среде симуляции. Тестовая модель может быть сконфигурирована для различных сценариев, чтобы протестировать способность следовать за маршрутами и избежать столкновений с другими транспортными средствами. В этом примере, вас:
Исследуйте тестовую модель: модель содержит обработку видения, сплав датчика, средства управления, динамику аппарата, датчики и метрики, чтобы оценить функциональность. Сценарий кубоида задает траектории транспортного средства, задает основную истину и обнаружения моделей от датчика видения. Эквивалентная Нереальная сцена Engine® используется к обнаружениям модели от радарного датчика и изображениям от монокулярного датчика камеры.
Визуализируйте сценарий тестирования: сценарий содержит кривую дорогу с несколькими транспортными средствами.
Симулируйте с вероятностным датчиком обнаружения: модель сконфигурирована, чтобы протестировать интегрирование сплава датчика и управляет компонентами. Обнаружение выходные параметры от видения и радарных датчиков является входными параметрами к алгоритму сплава датчика.
Симулируйте с алгоритмом обработки видения: модель сконфигурирована, чтобы протестировать интегрирование обработки видения, сплава датчика, и управляет компонентами. Выход монокулярного датчика камеры является входом к алгоритму обработки видения. Обнаружение выход из алгоритма обработки видения и обнаружение выход радарного датчика является входными параметрами к алгоритму сплава датчика.
Исследуйте дополнительные сценарии: Эти сценарии тестируют систему под дополнительными условиями.
Тестирование интегрирования контроллера и алгоритма восприятия требует фотореалистической среды симуляции. В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine от Epic Games®. 3D среда симуляции требует Windows® 64-битная платформа.
if ~ispc error(['3D Simulation is only supported on Microsoft', char(174), ' Windows', char(174), '.']) end
Чтобы гарантировать воспроизводимость результатов симуляции, установите случайный seed.
rng(0)
В этом примере вы используете тестовую модель симуляции уровня системы, чтобы исследовать поведение управления и алгоритмов обработки видения для маршрута после системы. Откройте тестовую модель симуляции уровня системы.
open_system("HighwayLaneFollowingTestBench")
Тестовая модель содержит эти подсистемы:
Симуляция 3D Сценарий: Спекифис-Роуд, транспортные средства, камера и радарные датчики используются для симуляции
Вариант Детектора видения: Задает точность двух различных алгоритмов обнаружения видения, чтобы выбрать из
Прямой Fusion Датчика Транспортного средства: Плавит обнаружения транспортных средств перед автомобилем, оборудованным датчиком, которые были получены из радарных датчиков и видения
Маршрут После Решения и Контроллера: Задает боковую и продольную логику решения и маршрут после контроллера
Динамическое транспортное средство: Задает модель динамики для автомобиля, оборудованного датчиком
Метрическая Оценка: Оценивает поведение уровня системы
Прямой Fusion Датчика Транспортного средства, Маршрут После Решения и Контроллера, Динамики аппарата и Метрических подсистем Оценки основаны на подсистемах, используемых в Маршруте После Управления с Fusion Датчика и Обнаружения Маршрута. Этот пример фокусирует на Симуляции 3D подсистемы Варианта Детектора Сценария и Видения.
Симуляция 3D подсистема Сценария конфигурирует дорожную сеть, устанавливает положения транспортного средства и синтезирует датчики. Откройте Симуляцию 3D подсистема Сценария.
open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")
Сцена и дорожная сеть заданы этими частями подсистемы:
Симуляция 3D Блок Configuration Сцены имеет набор параметров SceneName к Curved road
.
Блок Scenario Reader сконфигурирован, чтобы использовать ведущий сценарий, который содержит дорожную сеть, которая тесно совпадает с разделом дорожной сети.
Положения транспортного средства заданы этими частями подсистемы:
Входной порт Эго управляет положением автомобиля, оборудованного датчиком, который задан Симуляцией 3D Транспортное средство с блоком Ground Following 1.
Блок Vehicle To World преобразует положения агента от координат входного автомобиля, оборудованного датчиком к мировым координатам.
Выходные положения агента блока Scenario Reader, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другой Симуляцией 3D Транспортное средство с Землей После блоков.
Блок Cuboid To 3D Simulation преобразует систему координат положения эго (относительно ниже центра задней оси транспортного средства) к 3D системе координат симуляции (относительно ниже центра транспортного средства).
Датчики, присоединенные к автомобилю, оборудованному датчиком, заданы этими частями подсистемы:
Блок Simulation 3D Camera присоединен к автомобилю, оборудованному датчиком, чтобы получить его вид спереди. Выходное изображение от этого блока обрабатывается алгоритмом обработки видения, чтобы обнаружить маршруты и транспортные средства.
Симуляция 3D Вероятностный Радарный Блок Configuration присоединена к автомобилю, оборудованному датчиком, чтобы обнаружить транспортные средства в 3D Среде симуляции.
Блок Measurement Bias Center to Rear Axle преобразует систему координат Симуляции 3D Вероятностный Радарный Блок Configuration (относительно ниже центра транспортного средства) к координатам положения (относительно ниже центра задней оси транспортного средства).
Подсистема Варианта Детектора Видения позволяет вам выбирать точность алгоритма обнаружения видения на основе типов тестов, которые вы хотите запустить. Откройте подсистему Варианта Детектора Видения.
open_system("HighwayLaneFollowingTestBench/Vision Detector Variant")
Вариант Probabilistic Detection Sensor позволяет вам протестировать интегрирование алгоритма управления в 3D среде симуляции, также не интегрируя алгоритм обработки видения. Этот вариант использует блок Vision Detection Generator, чтобы синтезировать транспортное средство и обнаружения маршрута на основе положений основной истины агента. Эта настройка помогает вам проверить взаимодействия с транспортными средствами и радарным датчиком в 3D среде симуляции без алгоритма обработки видения.
Вариант Vision Processing Algorithm позволяет вам протестировать интегрирование алгоритма управления и алгоритма обработки видения в 3D среде симуляции. Откройте вариант Vision Processing Algorithm.
open_system("HighwayLaneFollowingTestBench/Vision Detector Variant/Vision Processing Algorithm")
Этот вариант использует основанный на MATLAB алгоритм обнаружения контура маршрута и алгоритм обнаружения транспортного средства на основе Визуального Восприятия Используя Монокулярный пример Камеры. Главная разница от того примера - то, что в этом примере, обнаружение контура маршрута и алгоритмы обнаружения транспортного средства являются отдельными на отдельные компоненты. Детектор Маркера маршрута является образцом модели. Если у вас есть лицензия Simulink Coder™, то можно сгенерировать Код С++ от этого образца модели. Это использует Систему object™, HelperLaneDetectorWrapper
, обнаружить маркеры маршрута. Это также содержит средство отслеживания маршрута, чтобы улучшать производительность обнаружения маршрута в переполненных условиях. Детектор Транспортного средства видения использует HelperVisionVehicleDetector
Системный объект, чтобы обнаружить транспортные средства. Эти Системные объекты упаковывают выходные данные к шинам, как требуется для последующей обработки. Поскольку алгоритм обработки видения работает с изображением, возвращенным датчиком камеры, Алгоритм Обработки Видения занимает больше времени, чтобы выполниться, чем вариант Probabilistic Detection Sensor.
Функция помощника scenario_LFACC_03_Curve_StopnGo
генерирует ведущий сценарий, который совместим с HighwayLaneFollowingTestBench
модель. Это - сценарий разомкнутого контура на кривой дороге и включает несколько целевых транспортных средств. Дорожные центры и маркировки маршрута тесно совпадают с разделом кривой дорожной сцены, которой предоставляют 3D среду симуляции. Сценарий имеет то же количество транспортных средств как модель, и у них есть те же размерности. В этом сценарии ведущее транспортное средство замедляется перед автомобилем, оборудованным датчиком, в то время как другие транспортные средства перемещаются в смежных маршрутах.
Постройте сценарий разомкнутого контура, чтобы видеть взаимодействия автомобиля, оборудованного датчиком и целевых транспортных средств.
hFigScenario = helperPlotLFScenario("scenario_LFACC_03_Curve_StopnGo");
Автомобиль, оборудованный датчиком не находится под контролем с обратной связью, таким образом, столкновение происходит с более медленным движущимся ведущим транспортным средством. Цель системы с обратной связью состоит в том, чтобы следовать за маршрутом и обеспечить безопасное расстояние от ведущих транспортных средств. В HighwayLaneFollowingTestBench
модель, автомобиль, оборудованный датчиком имеет ту же начальную скорость и исходное положение как в сценарии разомкнутого контура.
Чтобы проверить, что взаимодействия с транспортными средствами и радарным датчиком работают правильно, протестируйте взаимодействия между алгоритмом управления и 3D средой симуляции с помощью вероятностного датчика обнаружения видения. Выполнение так позволяет вам проверить базовое поведение системы, не интегрируя полный алгоритм обработки видения. Сконфигурируйте тестовую модель и запустите симуляцию. Чтобы сократить командное окно выход, выключите сообщения обновления MPC.
helperSLHighwayLaneFollowingSetup(... "scenario_LFACC_03_Curve_StopnGo",... "ProbabilisticDetectionSensor"); mpcverbosity('off'); sim("HighwayLaneFollowingTestBench")
Постройте боковые результаты эффективности контроллера.
hFigLatResults = helperPlotLFLateralResults(logsout);
Исследуйте результаты симуляции.
Обнаруженный график смещений ответвления контура маршрута показывает боковые смещения для обнаруженного лево-маршрута и контуров правильного маршрута. Обнаруженные значения являются рядом с землей истиной маршрута.
Боковой график отклонения показывает боковое отклонение автомобиля, оборудованного датчиком от средней линии маршрута. Боковое отклонение близко к 0, который подразумевает, что автомобиль, оборудованный датчиком сопровождает среднюю линию. Маленькие отклонения происходят, когда транспортное средство изменяет скорость, чтобы избежать столкновения с другим транспортным средством.
Относительный угловой график отклонения от курса показывает относительный угол отклонения от курса между автомобилем, оборудованным датчиком и средней линией маршрута. Относительный угол отклонения от курса очень близко к 0, который подразумевает, что угол рыскания автомобиля, оборудованного датчиком совпадает с углом отклонения от курса средней линии тесно.
Держащийся угловой график показывает держащийся угол автомобиля, оборудованного датчиком. Держащаяся угловая траектория является гладкой.
Постройте продольные результаты эффективности контроллера.
hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,...
default_spacing);
Исследуйте результаты симуляции.
Относительный продольный график расстояния показывает расстояние между автомобилем, оборудованным датчиком и Самым важным объектом (MIO). MIO представляет самое близкое транспортное средство перед и в том же маршруте как автомобиль, оборудованный датчиком. В этом случае автомобиль, оборудованный датчиком приближается к MIO и приближается к нему или превышает безопасное расстояние в некоторых случаях.
Относительный продольный скоростной график показывает относительную скорость между автомобилем, оборудованным датчиком и MIO. В этом примере алгоритм обработки видения только обнаруживает положения, таким образом, средство отслеживания в алгоритме управления оценивает скорость. Предполагаемая скорость изолирует фактическое (основная истина) скорость родственника MIO.
Абсолютный ускоряющий график показывает, что диспетчер управляет, чтобы транспортное средство замедлилось, когда это становится слишком близким к MIO.
Абсолютный скоростной график показывает, что автомобиль, оборудованный датчиком первоначально следует за скоростью набора, но когда MIO замедляется, чтобы избежать столкновения, автомобиль, оборудованный датчиком также замедляется.
В процессе моделирования модель регистрирует сигналы к базовому рабочему пространству как logsout
и записывает выход датчика камеры к forwardFacingCamera.mp4
. Можно использовать plotLFDetectionResults
функция, чтобы визуализировать симулированные обнаружения, похожие на то, как записанные данные исследуются в Прямом Столкновении, Предупреждающем Используя пример Fusion Датчика. Можно также записать визуализируемые обнаружения к видеофайлу, чтобы включить анализ другими, у которых нет доступа к MATLAB.
График обнаружение следует из записанных данных, сгенерируйте видео и откройте видео в Video Viewer (Image Processing Toolbox) приложение.
hVideoViewer = helperPlotLFDetectionResults(... logsout, "forwardFacingCamera.mp4" , scenario, camera, radar,... scenarioFcnName,... "RecordVideo", true,... "RecordVideoFileName", scenarioFcnName + "_PDS",... "OpenRecordedVideoInVideoViewer", true,... "VideoViewerJumpToTime", 10.6);
Проигрывайте сгенерированное видео.
Фронтальная камера показывает изображение, возвращенное датчиком камеры. Левый контур маршрута построен в красном, и правильный контур маршрута построен в зеленом. Эти маршруты возвращены вероятностным датчиком обнаружения. Отслеженные обнаружения также наложены на видео.
График "Бердз Ай" показывает истинным положениям транспортного средства, зонам охвата датчика, вероятностным обнаружениям и дорожке выходные параметры. Заголовок графика включает время симуляции так, чтобы можно было коррелировать события между видео и предыдущими статическими графиками.
Закройте фигуры.
close(hFigScenario) close(hFigLatResults) close(hFigLongResults) close(hVideoViewer)
Теперь, когда вы проверили алгоритм управления, протестируйте алгоритм управления и алгоритм обработки видения вместе в 3D среде симуляции. Это позволяет вам исследовать эффект алгоритма обработки видения на производительности системы. Сконфигурируйте тестовую модель, чтобы использовать тот же сценарий с вариантом обработки видения.
helperSLHighwayLaneFollowingSetup(... "scenario_LFACC_03_Curve_StopnGo",... "VisionProcessingAlgorithm"); sim("HighwayLaneFollowingTestBench")
Постройте боковые результаты эффективности контроллера.
hFigLatResults = helperPlotLFLateralResults(logsout);
Алгоритм обработки видения обнаруживает левые и правые контуры маршрута, но обнаружения являются более шумными, который влияет на боковое отклонение. Боковое отклонение все еще мало, но больше, чем запуск с вероятностным вариантом датчика обнаружения.
Постройте продольные результаты эффективности контроллера.
hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,...
default_spacing);
Относительное расстояние и относительная скорость имеют некоторые разрывы. Эти разрывы происходят из-за недостатков алгоритма обработки видения на производительности системы. Даже с этими разрывами, получившееся ускорение эго и скорость похожи на результаты с помощью вероятностного варианта датчика обнаружения.
График обнаружение следует из записанных данных, сгенерируйте видео и откройте Video Viewer (Image Processing Toolbox) приложение.
hVideoViewer = helperPlotLFDetectionResults(... logsout, "forwardFacingCamera.mp4" , scenario, camera, radar,... scenarioFcnName,... "RecordVideo", true,... "RecordVideoFileName", scenarioFcnName + "_VPA",... "OpenRecordedVideoInVideoViewer", true,... "VideoViewerJumpToTime", 10.6);
Закройте фигуры.
close(hFigLatResults) close(hFigLongResults) close(hVideoViewer)
Предыдущие симуляции протестировали scenario_LFACC_03_Curve_StopnGo
сценарий с помощью и вероятностного датчика обнаружения видения и видения, обрабатывающего варианты алгоритма. Этот пример предоставляет дополнительные сценарии, которые совместимы с HighwayLaneFollowingTestBench
модель:
scenario_LF_01_Straight_RightLane scenario_LF_02_Straight_LeftLane scenario_LF_03_Curve_LeftLane scenario_LF_04_Curve_RightLane 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_LF_
снабдите префиксом, чтобы протестировать обнаружение маршрута и следующие за маршрутом алгоритмы без преграды другими транспортными средствами. Транспортные средства все еще существуют в сценарии, но расположены таким образом, что они не замечены автомобилем, оборудованным датчиком на дороге.
Используйте сценарии с scenario_LFACC_
снабдите префиксом, чтобы протестировать обнаружение маршрута и следующие за маршрутом алгоритмы с другими транспортными средствами на дороге.
Исследуйте комментарии в каждом файле для получения дополнительной информации на дороге и транспортных средствах в каждом сценарии. Можно сконфигурировать HighwayLaneFollowingTestBench
и рабочая область модели, чтобы симулировать эти сценарии с помощью helperSLHighwayLaneFollowingSetup
функция.
Например, при приобретении знаний об эффектах основанного на камере алгоритма обнаружения маршрута для управления с обратной связью, может быть полезно начаться со сценария, который имеет дорогу, но никакие транспортные средства. Чтобы сконфигурировать и рабочую область модели для такого сценария, используйте следующий код.
helperSLHighwayLaneFollowingSetup(... "scenario_LF_04_Curve_RightLane",... "VisionProcessingAlgorithm");
Включите сообщения обновления MPC снова.
mpcverbosity('on');
В этом примере показано, как симулировать магистральный маршрут после приложения с контроллером, сплавом датчика и компонентами обработки видения.