Дорожная полоса следования со сценой RoadRunner

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

Введение

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

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

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

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

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

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

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

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

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

В этом примере вы активируете симуляцию уровня системы путем интегрирования с Unreal Engine из Epic Games ®. Для этой среды симуляции требуется 64-разрядная платформа Windows ®.

if ~ispc
    error(['3D Simulation is only supported on Microsoft', char(174),...
          ' Windows', char(174), '.']);
end

Чтобы гарантировать воспроизводимость результатов симуляции, установите случайный seed.

rng(0);

Этот пример также требует загрузки пакета поддержки Automated Driving Toolbox™ Interface for Unreal Engine 4 Projects.

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 Project и Scene System (RoadRunner), чтобы открыть RRHighway.rrscene сцена.

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

  • Раздел 1 содержит штриховые полосы без защитных рельсов.

  • Раздел 2 содержит штриховые полосы с защитными рельсами.

  • Раздел 3 добавляет деревья, которые отбрасывают тени на разметке маршрута.

  • Раздел 4 содержит деревья, которые не отбрасывают тени на разметке маршрута.

  • Раздел 5 содержит сплошную разметку маршрута вместо штриховой разметки маршрута.

  • Дорожный материал секции 6 с более легкой текстурой по сравнению с другими участками дороги.

Например, на следующем изображении показан переход между Section-3 (с деревьями, которые не отбрасывают тени на разметке маршрута) и Section-4 (с деревьями, которые отбрасывают тени на разметке маршрута).

На следующем изображении показан переход между Section-4 (с штриховой разметкой маршрута) и Section-5 (с сплошной разметкой маршрута).

На следующем изображении показан переход между Section-5 (с более темным дорожным материалом) и Section-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.

Добавить транспортное средство к сети дорог с помощью набора предопределенных путевых точек. Эти путевые точки присоединены как вспомогательный файл, 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).

Интеграция сцены с сценарием Unreal Engine

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

  1. Экспорт сцены Unreal Engine из RoadRunner.

  2. Сконфигурируйте сцену Unreal Engine.

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

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

Экспорт нереальной сцены Engine из RoadRunner

RoadRunner включает экспорт в сцену Unreal Engine. Дополнительные сведения об этом рабочем процессе см. в разделе Экспорт в Unreal (RoadRunner). Рабочий процесс включает экспорт файлов Filmbox (.fbx) и XML, которые можно импортировать в Unreal Editor. После открытия сцены в редакторе Unreal Engine можно настроить другие аспекты сцены, такие как подсветка.

Этот пример использует сцену Unreal Engine (RRHighway), который был экспортирован из сцены RoadRunner (RRHighway.rrscene).

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

Сцена Unreal Engine может совместное моделирование с Simulink с помощью MathWorksSimulation плагин из пакета поддержки Automated Driving Toolbox Interface for Unreal Engine 4 Projects. Для установки пакета поддержки выполните шаги в разделе Установка пакета поддержки для сцен пользовательской настройки.

Сцена Unreal Engine (RRHighway), используемый в этом примере, был скомпилирован со MathWorksSimulation плагин.

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

Можно подключить модель Simulink к Unreal Engine для ко-симуляции. Дополнительные сведения об этом рабочем процессе см. в разделах Моделирование простого сценария вождения и Датчик в Unreal Engine Окружения. The разомкнутого контура тестовой модели (RRHighwayTestBench.slx) использует этот рабочий процесс для подключения к сцене Unreal Engine (RRHighway).

Откройте тестовую модель для сценария.

open_system("RRHighwayTestBench");

Открытие этой модели запускает helperSLRRHighwaySetup скрипт. Этот скрипт конфигурирует блок Simulation 3D Scene Configuration в RRHighwayTestBench модель.

Эта модель содержит блоки, которые позволяют симулировать сценарий вождения с Unreal Engine.

Модель также содержит блоки для визуализации камеры и датчиков лидара. Можно использовать Bird 's-Eye Scope, чтобы визуализировать радары и обнаружения зрения с высоты птичьего полета. Чтобы узнать, как настроить эти возможности, см. Раздел «Визуализация данных о датчике из Unreal Engine Среды симуляции».

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

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

sim("RRHighwayTestBench");

Интеграция сцены с полосой движения после приложения

Можно повторно использовать методы, описанные в предыдущих разделах, для моделирования и оценки замкнутой системы, такой как дорожная полоса, следующая за приложением. В этом разделе повторно используются модели, вспомогательные функции и методы, описанные в примере Highway Lane Following. Откройте и сконфигурируйте тестовую модель системы.

open_system("HighwayLaneFollowingTestBench");
scenarioFcnName = "scenario_RRHighway_01_NoShadowToShadow";
helperSLHighwayLaneFollowingSetup('scenarioFcnName', scenarioFcnName);

Интеграция сцены с сценарием вождения

Первый аргумент в helperSLHighwayLaneFollowingSetup - имя функции, которая создает сценарий вождения, совместимый со HighwayLaneFollowingTestBench. The scenario_RRHighway_01_NoShadowToShadow функция создает этот сценарий вождения. Он импортирует RRHighway.xodr OpenDRIVE файла и добавляет автомобили вокруг сегмента дороги, который переходит от тени к тени. Можно исследовать эту функцию, чтобы узнать больше о программных методах для создания сценариев. Он использует несколько вспомогательных функций, которые можно использовать, чтобы упростить добавление транспортного средства и его траекторий к импортированной дорожной сети. Исследуйте scenario_RRHighway_01_NoShadowToShadow чтобы узнать больше о вспомогательных функциях и их использовании.

The 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');

Интеграция сцены с сценарием Unreal Engine

The HighwayLaneFollowingTestBench модель содержит компоненты алгоритма для обнаружения зрения, слияния датчиков транспортного средства и органов управления. Подсистема Симуляции 3D Scenario интегрирует модель со сценарием вождения и соответствующей игрой Unreal Engine.

Откройте подсистему Simulation 3D Scenario.

open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")

Заметьте, что эта подсистема повторно использует методы моделирования и блоки, описанные ранее в этом примере.

Основными различиями являются:

  • Автомобиль , оборудованный датчиком находится под управлением с обратной связью.

  • В сценарий добавляются целевые транспортные средства.

  • В следующем примере маршрута не используется датчик лидара.

Симулируйте модель, чтобы увидеть поведение автомобиль , оборудованный датчиком для сценария.

mpcverbosity('off');
sim("HighwayLaneFollowingTestBench");

Система способна обнаруживать и следовать по полосам в условиях, когда присутствуют тени. Для получения дополнительной информации о том, как анализировать результаты симуляции, смотрите пример Highway Lane Following.

Закройте рисунок.

close(hFigScenario);

Исследуйте дополнительные сценарии

Этот пример предоставляет дополнительные сценарии, которые можно использовать для тестирования поведения системы.

  • scenario_RRHighway_02_DashedToSolidMarkings функция конфигурирует тестовый сценарий таким образом, чтобы автомобиль , оборудованный датчиком перемещался от раздела 4 до раздела 5 сцены. Это позволяет тестировать полосу следования для перехода от штриховой разметки маршрута к сплошной разметке маршрута.

  • scenario_RRHighway_03_DarkToLightRoadMaterial функция конфигурирует тестовый сценарий таким образом, чтобы автомобиль , оборудованный датчиком перемещался от раздела 5 до раздела 6 сцены. Это позволяет тестировать полосу движения после применения перехода от более темного текстурированного дорожного материала к более легкому текстурированному дорожному материалу.

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

helperSLHighwayLaneFollowingSetup('scenarioFcnName',...
    "scenario_RRHighway_03_DarkToLightRoadMaterial");

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

Включите обновление сообщений Model Predictive Controller и включите предупреждения от импортера OpenDRIVE.

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

См. также

Блоки

Функции

Приложения

Похожие темы