Магистральный маршрут после со сценой RoadRunner

То В этом примере показано, как сконфигурировать и симулировать магистральный маршрут после приложения с помощью сцены, создало в RoadRunner™ 3D инструмент редактирования сцены. Этот пример сопровождает Магистральный пример Следующего Маршрута.

Введение

Магистральный маршрут после системы ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние до предыдущего транспортного средства в том же маршруте. Система обычно включает обработку видения, сплав датчика, логику решения, и управляет компонентами. Чтобы обеспечить функциональную безопасность и функциональную совместимость, эта система требует тестирования на множестве дорожных условий. Например, тестируя на сцене, которая имеет различные тени, типы маркировки маршрута и дорожные материалы могут облегчить идентифицировать случаи ребра.

RoadRunner является интерактивным редактором, который позволяет сценам проекта 3D для симуляции и тестирования автоматизированных систем вождения. Можно использовать RoadRunner, чтобы создать дороги, маркировки маршрута, дорожные знаки, растительность и сцены с варьировавшимися сложностями в 3D среде.

Магистральный пример Следующего Маршрута, что этот пример на основе показов, как симулировать сценарии для кривых и прямых дорожных сцен. Этот пример демонстрирует, как симулировать сценарии со сценой, созданной в RoadRunner. Сцена содержит изменения теней, типов маркировки маршрута и дорожных материалов, спроектированных, чтобы протестировать удар обработки видения на функциональности системы. В этом примере вы будете:

  1. Сцена анализа: Исследуйте сцену и дорожные сегменты, которые были созданы в RoadRunner.

  2. Интегрируйте сцену в ведущий сценарий: Экспортируйте дорожную сеть от сцены RoadRunner до файла OpenDRIVE®, и затем импортируйте этот файл в ведущий сценарий. Затем добавьте транспортное средство в сценарий и симулируйте сценарий.

  3. Интегрируйте сцену в Нереальный сценарий Engine: Экспортируйте сцену RoadRunner в Нереальную игру Engine® и соедините модель Simulink® с этой сценой. Импортированный ведущий сценарий задает положения транспортного средства. Добавьте датчики в транспортное средство и симулирование сценария.

  4. Интегрируйте сцену в маршрут после приложения: Используя методы, описанные в предыдущих разделах, вы интегрируете сцену RoadRunner в сценарий для магистрального маршрута после. Затем вы добавляете дополнительные целевые транспортные средства в сценарий и симулируете систему в сценарии что переходы ни от каких теней до теней.

  5. Исследуйте дополнительные сценарии: Симулируйте дополнительные сценарии для маркировки маршрута и дорожных изменений типа. Примените эти методы к своему собственному проекту.

Можно использовать шаблоны моделирования и методы, используемые в этом примере, чтобы импортировать собственные сцены и протестировать алгоритмы.

В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным 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 в ведущий сценарий при помощи этих шагов:

  1. Экспортируйте файл OpenDRIVE от RoadRunner.

  2. Импортируйте файл OpenDRIVE в ведущий сценарий.

  3. Добавьте транспортное средство и траекторию к ведущему сценарию.

  4. Симулируйте ведущий сценарий.

Экспортируйте файл 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

Общая мотивация для импорта сцен в Нереальный Engine должна включить системы симуляции с камерой, радаром и моделями датчика лидара. Можно интегрировать сцену RoadRunner с Нереальным Engine ведущая симуляция сценария с помощью этих шагов:

  1. Экспортируйте Нереальную сцену Engine из RoadRunner.

  2. Сконфигурируйте Нереальную сцену Engine.

  3. Создайте тестовую модель.

  4. Симулируйте тестовую модель.

Экспортируйте нереальную сцену 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.

Модель также содержит блоки, чтобы визуализировать датчики камеры и лидара. Можно использовать Bird ' s-Eye Scope, чтобы визуализировать радар и обнаружения видения от вида с высоты птичьего полета. Чтобы изучить, как сконфигурировать этот осциллограф, смотрите, Визуализируют Данные о Датчике из Нереальной Среды симуляции Engine.

Симулируйте тестовую модель

Симулируйте модель. Транспортное средство следует за траекторией, заданной в ведущем сценарии.

sim("RRHighwayTestBench");

Интегрируйте сцену в маршрут после приложения

Можно снова использовать методы, описанные в предыдущих разделах, чтобы симулировать и оценить систему с обратной связью, такую как магистральный маршрут после приложения. Этот раздел модели повторных использований, функции помощника и методы, описанные в Магистральном примере Следующего Маршрута. Откройте и сконфигурируйте модель места размещения тестирования системы.

open_system("HighwayLaneFollowingTestBench");
scenarioFcnName = "scenario_RRHighway_01_NoShadowToShadow";
visionVariant = "VisionProcessingAlgorithm";
helperSLHighwayLaneFollowingSetup(scenarioFcnName,visionVariant);

Интегрируйте сцену в управление сценарием

Первый аргумент к 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(...
    "scenario_RRHighway_03_DarkToLightRoadMaterial",...
    "VisionProcessingAlgorithm");

Можно применить эти методы, чтобы интегрировать сцены RoadRunner в ведущие сценарии для симуляции и тестирования систем.

Включите Прогнозирующие сообщения обновления Контроллера Модели и возвратитесь на предупреждениях от средства импорта OpenDRIVE.

mpcverbosity('on');
warning('on','driving:scenario:OpenDRIVEWarnings');

Смотрите также

Блоки

Функции

Приложения

Похожие темы