То В этом примере показано, как сконфигурировать и симулировать магистральный маршрут после приложения с помощью сцены, создало в RoadRunner 3D инструмент редактирования сцены. Этот пример сопровождает Магистральный пример Следующего Маршрута.
Магистральный маршрут после системы ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние до предыдущего транспортного средства в том же маршруте. Система обычно включает обработку видения, сплав датчика, логику решения, и управляет компонентами. Чтобы обеспечить функциональную безопасность и функциональную совместимость, эта система требует тестирования на множестве дорожных условий. Например, тестируя на сцене, которая имеет различные тени, типы маркировки маршрута и дорожные материалы могут облегчить идентифицировать случаи ребра.
RoadRunner является интерактивным редактором, который позволяет сценам проекта 3D для симуляции и тестирования автоматизированных систем вождения. Можно использовать RoadRunner, чтобы создать дороги, маркировки маршрута, дорожные знаки, растительность и сцены с варьировавшимися сложностями в 3D среде.
Магистральный пример Следующего Маршрута, что этот пример на основе показов, как симулировать сценарии для кривых и прямых дорожных сцен. Этот пример демонстрирует, как симулировать сценарии со сценой, созданной в RoadRunner. Сцена содержит изменения теней, типов маркировки маршрута и дорожных материалов, спроектированных, чтобы протестировать удар обработки видения на функциональности системы. В этом примере вы будете:
Сцена анализа: Исследуйте сцену и дорожные сегменты, которые были созданы в RoadRunner.
Интегрируйте сцену в ведущий сценарий: Экспортируйте дорожную сеть от сцены RoadRunner до файла OpenDRIVE®, и затем импортируйте этот файл в ведущий сценарий. Затем добавьте транспортное средство в сценарий и симулируйте сценарий.
Интегрируйте сцену в Нереальный сценарий Engine: Экспортируйте сцену RoadRunner в Нереальную игру Engine® и соедините модель Simulink® с этой сценой. Импортированный ведущий сценарий задает положения транспортного средства. Добавьте датчики в транспортное средство и симулирование сценария.
Интегрируйте сцену в маршрут после приложения: Используя методы, описанные в предыдущих разделах, вы интегрируете сцену RoadRunner в сценарий для магистрального маршрута после. Затем вы добавляете дополнительные целевые транспортные средства в сценарий и симулируете систему в сценарии что переходы ни от каких теней до теней.
Исследуйте дополнительные сценарии: Симулируйте дополнительные сценарии для маркировки маршрута и дорожных изменений типа. Примените эти методы к своему собственному проекту.
Можно использовать шаблоны моделирования и методы, используемые в этом примере, чтобы импортировать собственные сцены и протестировать алгоритмы.
В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine от Epic Games®. Эта среда симуляции требует Windows® 64-битная платформа.
if ~ispc error(['3D Simulation is only supported on Microsoft', char(174),... ' Windows', char(174), '.']); end
Чтобы гарантировать воспроизводимость результатов симуляции, установите случайный seed.
rng(0);
Этот пример также требует, чтобы вы загрузили Интерфейс Automated Driving Toolbox™ для Нереального Engine 4 пакета поддержки Проектов.
pathToUnrealExe = fullfile(... matlabshared.supportpkg.getSupportPackageRoot,... "toolbox","shared","sim3dprojects","driving","RoadRunnerScenes",.... "WindowsPackage", "RRScene.exe"); if (~exist(pathToUnrealExe, 'file')) error('This example requires you to download and install Automated Driving Toolbox Interface for Unreal Engine 4 Projects support package'); end
Этот пример включает сцену (RRHighway.rrscene
) это было спроектировано в RoadRunner. Если вам установили RoadRunner, можно следовать за рабочим процессом в Системе Проекта и Сцены RoadRunner (RoadRunner) тема, чтобы открыть RRHighway.rrscene
сцена.
Эта сцена спроектирована, чтобы поставить проблемы к маршруту после системы. Это изображение показывает, что дорожная сеть разделена на шесть разделов. Каждый раздел инкрементно добавляет изменения в сцену можно следующим образом:
Разделите 1, содержит подчеркнутые штриховой линией маршруты без ограждений.
Разделите 2, содержит подчеркнутые штриховой линией маршруты с ограждениями.
Разделите 3, добавляют деревья, которые делают наклонные тени на маркировках маршрута.
Разделите 4, содержит деревья, которые не делают наклонных теней на маркировках маршрута.
Разделите 5, содержит серьезные маркировки маршрута вместо пунктирных маркировок маршрута.
Разделите 6 дорожных материалов с более легкой структурой по сравнению с другими разделами дороги.
Например, следующее изображение показывает переход между Разделом 3 (с деревьями, которые не делают наклонных теней на маркировках маршрута) и Раздел 4 (с деревьями, которые делают наклонные тени на маркировках маршрута).
Следующее изображение показывает переход между Разделом 4 (с пунктирными маркировками маршрута) и Разделом 5 (с серьезными маркировками маршрута).
Следующее изображение показывает переход между Разделом 5 (с более темным дорожным материалом) и Разделом 6 (с более легким дорожным материалом).
Общая мотивация для импорта сцен в ведущий сценарий должна включить сложение транспортных средств и траекторий, или в интерактивном режиме или программно. Можно интегрировать дорожную сеть от сцены RoadRunner в ведущий сценарий при помощи этих шагов:
Экспортируйте файл OpenDRIVE от RoadRunner.
Импортируйте файл OpenDRIVE в ведущий сценарий.
Добавьте транспортное средство и траекторию к ведущему сценарию.
Симулируйте ведущий сценарий.
Экспортируйте файл OpenDRIVE от RoadRunner
RoadRunner позволяет вам экспортировать сцены во многие форматы файлов, включать OpenDRIVE®. Чтобы узнать больше о рабочем процессе экспорта OpenDRIVE, смотрите Экспорт в OpenDRIVE (RoadRunner). Этот пример включает файл OpenDRIVE (RRHighway.xodr
) это экспортировалось от сцены RoadRunner (RRHighway.rrscene
) использование процесса описано в той теме.
Импортируйте файл OpenDRIVE в управление сценарием
Файлы OpenDRIVE могут быть импортированы в кубоид ведущие сценарии. Чтобы узнать больше об этом рабочем процессе, смотрите, что Магистральная Траектория Планирует Используя Путь к Ссылке Frenet.
Создайте ведущий сценарий и импортируйте дорожную сеть OpenDRIVE. В целях этого примера выключите предупреждения от средства импорта OpenDRIVE.
scenario = drivingScenario; warning('off','driving:scenario:OpenDRIVEWarnings'); roadNetwork(scenario,"OpenDrive","RRHighway.xodr");
Добавьте транспортное средство и траекторию к управлению сценарием
Можно добавить транспортные средства в сценарий или программно или в интерактивном режиме. Этот пример показывает программируемый рабочий процесс. Чтобы добавить транспортные средства в интерактивном режиме, используйте приложение Driving Scenario Designer.
Добавьте транспортное средство в дорожную сеть с помощью ряда предопределенного waypoints. Эти waypoints присоединяются как вспомогательный файл, manualwaypoints.mat
.
v = vehicle(scenario); load("manualWaypoints.mat","waypoints"); speed = 20; % m/s trajectory(v, waypoints, speed);
Симулируйте ведущий сценарий
Постройте ведущий сценарий в мировых координатах. Также постройте сценарий с точки зрения транспортного средства при помощи графика преследования.
hFigScenario = figure; p1 = uipanel('Position',[0 0 0.5 1]); h1 = axes("Parent",p1); plot(scenario,"Waypoints","On","Parent",h1); p2 = uipanel('Position',[0.5 0 0.5 1]); h2 = axes("Parent",p2); chasePlot(v,"Parent",h2);
Установите видимость фигуры к прочь.
set(hFigScenario, 'Visible', 'Off');
Можно опционально продолжить исследовать, симулировать, и редактировать сценарий в Driving Scenario Designer drivingScenarioDesigner(scenario)
.
Общая мотивация для импорта сцен в Нереальный Engine должна включить системы симуляции с камерой, радаром и моделями датчика лидара. Можно интегрировать сцену RoadRunner с Нереальным Engine ведущая симуляция сценария с помощью этих шагов:
Экспортируйте Нереальную сцену Engine из RoadRunner.
Сконфигурируйте Нереальную сцену Engine.
Создайте тестовую модель.
Симулируйте тестовую модель.
Экспортируйте нереальную сцену Engine из RoadRunner
RoadRunner позволяет экспортировать в Нереальную сцену Engine. Чтобы узнать больше об этом рабочем процессе, смотрите Экспорт в Нереальный (RoadRunner). Рабочий процесс включает экспорт Filmbox .f(bx) и XML-файлы, которые могут быть импортированы в Нереальный Редактор. После того, как вы откроете сцену в Нереальном редакторе Engine, вы можете хотеть настроить другие аспекты сцены, такие как подсветка.
Этот пример использует Нереальную сцену Engine (RRHighway
) это экспортировалось от сцены RoadRunner (RRHighway.rrscene
).
Сконфигурируйте нереальную сцену Engine
Нереальная сцена Engine может co-simulate с Simulink с помощью MathWorksSimulation
плагин от Интерфейса Automated Driving Toolbox для Нереального Engine 4 Проекта поддерживает пакет. Чтобы установить пакет поддержки, выполните шаги в Пакете Поддержки Установки для Настройки Сцен.
Нереальная сцена Engine (RRHighway
) используемый в этом примере был скомпилирован с MathWorksSimulation
плагин.
Создайте тестовую модель
Можно соединить модель Simulink с Нереальным Engine для co-симуляции. Чтобы узнать больше об этом рабочем процессе, смотрите, Симулируют Простой Ведущий Сценарий и Датчик в Нереальной Среде Engine. Тестовая модель разомкнутого контура (RRHighwayTestBench.slx
) использование этот рабочий процесс, чтобы соединиться с Нереальной сценой Engine (RRHighway
).
Откройте тестовую модель для сценария.
open_system("RRHighwayTestBench");
Открытие этой модели запускает helperSLRRHighwaySetup
скрипт. Этот скрипт конфигурирует Моделирование 3D Блок Configuration Сцены в RRHighwayTestBench
модель.
Эта модель содержит блоки, которые позволяют симулировать ведущий сценарий с Нереальным Engine.
Читатель сценария читает ведущий сценарий из базового рабочего пространства и выводит положение автомобиля, оборудованного датчиком.
Симуляция 3D Настройка Сцены включает связь с RRHighway
сцена.
Симуляция 3D Транспортное средство с Землей После средств управления положение транспортного средства в сцене
Транспортное средство К Миру преобразует положения агента от координат входного автомобиля, оборудованного датчиком к мировым координатам сценария.
Симуляция 3D Камера синтезирует изображения камеры.
Симуляция 3D Вероятностный Радар синтезирует радарные обнаружения.
Симуляция 3D Лидар синтезирует данные об облаке точек лидара.
Модель также содержит блоки, чтобы визуализировать датчики камеры и лидара. Можно использовать Bird ' s-Eye Scope, чтобы визуализировать радар и обнаружения видения от вида с высоты птичьего полета. Чтобы изучить, как сконфигурировать этот осциллограф, смотрите, Визуализируют Данные о Датчике из Нереальной Среды симуляции Engine.
Симулируйте тестовую модель
Симулируйте модель. Транспортное средство следует за траекторией, заданной в ведущем сценарии.
sim("RRHighwayTestBench");
Можно снова использовать методы, описанные в предыдущих разделах, чтобы симулировать и оценить систему с обратной связью, такую как магистральный маршрут после приложения. Этот раздел модели повторных использований, функции помощника и методы, описанные в Магистральном примере Следующего Маршрута. Откройте и сконфигурируйте модель места размещения тестирования системы.
open_system("HighwayLaneFollowingTestBench"); scenarioFcnName = "scenario_RRHighway_01_NoShadowToShadow"; helperSLHighwayLaneFollowingSetup('scenarioFcnName', scenarioFcnName);
Интегрируйте сцену в управление сценарием
Первый аргумент к helperSLHighwayLaneFollowingSetup
имя функции, которая создает ведущий сценарий, который совместим с HighwayLaneFollowingTestBench
. scenario_RRHighway_01_NoShadowToShadow
функция создает этот ведущий сценарий. Это импортирует RRHighway.xodr
Файл OpenDRIVE и добавляет транспортные средства вокруг дорожного сегмента что переходы ни от какой тени до тени. Можно исследовать эту функцию, чтобы узнать больше о программируемых методах для создания сценариев. Это усиливает несколько функций помощника, которые можно использовать, чтобы упростить добавляющее транспортное средство и их траектории к импортированной дорожной сети. Исследуйте scenario_RRHighway_01_NoShadowToShadow
знать больше о помощнике функционирует и их использование.
helperSLHighwayLaneFollowingSetup
функция создает переменный сценарий в базовом рабочем пространстве. Постройте этот сценарий и заметьте область сцены, которая будет симулирована.
hFigScenario = figure; p1 = uipanel('Position',[0 0 0.5 1]); h1 = axes("Parent",p1); plot(scenario,"Waypoints","On","Parent",h1); p2 = uipanel('Position',[0.5 0 0.5 1]); h2 = axes("Parent",p2); chasePlot(scenario.Actors(1),"Parent",h2)
Установите видимость фигуры к прочь.
set(hFigScenario, 'Visible', 'Off');
Интегрируйте сцену в нереальный сценарий Engine
HighwayLaneFollowingTestBench
модель содержит компоненты алгоритма для обнаружения видения, передайте сплав датчика транспортного средства и средства управления. Симуляция 3D подсистема Сценария интегрирует модель с ведущим сценарием и соответствующей Нереальной игрой Engine.
Откройте Симуляцию 3D подсистема Сценария.
open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")
Заметьте, что эта подсистема снова использует техники моделирования и блоки, описанные ранее в этом примере.
Первичные различия:
Автомобиль, оборудованный датчиком находится под контролем с обратной связью.
Целевые транспортные средства добавляются к сценарию.
Пример следующего маршрута не использует датчик лидара.
Симулируйте модель, чтобы видеть поведение автомобиля, оборудованного датчиком для сценария.
mpcverbosity('off'); sim("HighwayLaneFollowingTestBench");
Система может обнаружить и следовать за маршрутами в условиях, где тени присутствуют. Для получения дополнительной информации о том, как анализировать результаты симуляции, обратитесь к Магистральному примеру Следующего Маршрута.
Закройте фигуру.
close(hFigScenario);
Этот пример предоставляет дополнительные сценарии, которые можно использовать, чтобы протестировать поведение системы.
scenario_RRHighway_02_DashedToSolidMarkings
функция конфигурирует сценарий тестирования, таким образом, что автомобиль, оборудованный датчиком перешел от Раздела 4, чтобы Разделить 5 из сцены. Это позволяет тестировать маршрут после приложения для перехода от пунктирных маркировок маршрута до серьезных маркировок маршрута.
scenario_RRHighway_03_DarkToLightRoadMaterial
функция конфигурирует сценарий тестирования, таким образом, что автомобиль, оборудованный датчиком перешел от Раздела 5, чтобы Разделить 6 из сцены. Это позволяет тестировать маршрут после приложения для перехода от более темного текстурированного дорожного материала до легче текстурированного дорожного материала.
Можно сконфигурировать и рабочую область модели с этими сценариями при помощи helperSLHighwayLaneFollowingSetup
функция. Например, этот код конфигурирует испытательный стенд, чтобы симулировать сценарий в области, где дорожный материал изменяется.
helperSLHighwayLaneFollowingSetup('scenarioFcnName',... "scenario_RRHighway_03_DarkToLightRoadMaterial");
Можно применить эти методы, чтобы интегрировать сцены RoadRunner в ведущие сценарии для симуляции и тестирования систем.
Включите Прогнозирующие сообщения обновления Контроллера Модели и возвратитесь на предупреждениях от средства импорта OpenDRIVE.
mpcverbosity('on'); warning('on','driving:scenario:OpenDRIVEWarnings');