В этом примере показано, как настроить и смоделировать полосу движения после приложения с использованием сцены, созданной в инструменте редактирования сцены RoadRunner 3D. Этот пример полностью соответствует примеру «Полоса движения».
Дорожная полоса, следующая за системой, управляет транспортным средством для движения в пределах обозначенной полосы. Он также поддерживает установленную скорость или безопасное расстояние до предшествующего транспортного средства в той же полосе. Система обычно включает в себя обработку изображения, слияние датчиков, логику принятия решений и компоненты управления. Для обеспечения функциональной безопасности и эксплуатационной совместимости эта система требует испытаний на различных дорожных условиях. Например, тестирование сцены с изменяющимися тенями, типами разметки полос движения и дорожными материалами может упростить идентификацию вариантов кромок.
RoadRunner - это интерактивный редактор, позволяющий создавать 3D сцены для моделирования и тестирования автоматизированных систем вождения. RoadRunner можно использовать для создания дорог, разметки полос движения, дорожных знаков, растительности и сцен с различными сложностями в 3D среде.
Пример «Полоса движения по шоссе», на котором основан этот пример, показывает, как моделировать сценарии для криволинейных и прямых дорожных сцен. В этом примере показано, как моделировать сценарии с помощью сцены, созданной в RoadRunner. Сцена содержит изменения теней, типов разметки полос движения и дорожных материалов, предназначенных для проверки влияния обработки изображения на функциональность системы. В этом примере будут выполнены следующие действия:
Просмотр сцены: просмотр сцены и сегментов дороги, созданных в RoadRunner.
Интеграция сцены в сценарий вождения: экспорт дорожной сети из сцены RoadRunner в файл OpenDRIVE ®, а затем импорт этого файла в сценарий вождения. Затем добавьте транспортное средство к сценарию и смоделируйте сценарий.
Интеграция сцены в сценарий Unreal Engine: экспорт сцены RoadRunner в игру Unreal Engine ® и подключение модели Simulink ® к этой сцене. Импортированный сценарий вождения определяет позы транспортного средства. Добавьте датчики к транспортному средству и смоделируйте сценарий.
Интеграция сцены в полосу движения в следующем приложении: Используя методы, описанные в предыдущих разделах, вы интегрируете сцену RoadRunner в сценарий следования полосы движения по шоссе. Затем к сценарию добавляются дополнительные целевые транспортные средства и моделируется система в сценарии, который переходит от отсутствия теней к теням.
Изучение дополнительных сценариев: моделирование дополнительных сценариев для разметки полос движения и изменений типа дороги. Примените эти методы к собственному дизайну.
Шаблоны и методы моделирования, используемые в этом примере, можно использовать для импорта собственных сцен и тестирования алгоритмов.
В этом примере можно включить моделирование на уровне системы путем интеграции с Unreal Engine из Epic Games ®. Для этой среды моделирования требуется 64-разрядная платформа Windows ®.
if ~ispc error(['3D Simulation is only supported on Microsoft', char(174),... ' Windows', char(174), '.']); end
Чтобы обеспечить воспроизводимость результатов моделирования, задайте случайное начальное число.
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 and Scene System (RoadRunner)» можно использовать рабочий процесс. RRHighway.rrscene сцена.
Эта сцена предназначена для создания проблем для следующей за полосой системы. Это изображение показывает, что дорожная сеть разделена на шесть участков. Каждый раздел постепенно добавляет изменения в сцену следующим образом:
Секция 1 содержит пунктирные полосы без ограждающих рельсов.
Секция 2 содержит пунктирные полосы с ограждающими рельсами.
Раздел 3 добавляет деревья, которые отбрасывают тени на разметку полосы движения.
Раздел 4 содержит деревья, которые не отбрасывают тени на разметку полос движения.
Раздел 5 содержит сплошную разметку полосы вместо штриховой разметки полосы.
Участок 6 дорожный материал с более легкой текстурой по сравнению с другими участками дороги.

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

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

На следующем рисунке показан переход между Section-5 (с более темным дорожным материалом) и Section-6 (с более легким дорожным материалом).

Общей мотивацией для импорта сцен в сценарий вождения является возможность добавления транспортных средств и траекторий либо интерактивно, либо программно. Можно интегрировать дорожную сеть из сцены RoadRunner в сценарий вождения с помощью следующих шагов:
Экспорт файла OpenDRIVE из RoadRunner.
Импорт файла OpenDRIVE в сценарий управления.
Добавить транспортное средство и траекторию к сценарию движения.
Моделирование сценария вождения.
Экспорт файла OpenDRIVE из RoadRunner
RoadRunner позволяет экспортировать сцены во многие форматы файлов, включая OpenDRIVE ®. Дополнительные сведения о рабочем процессе экспорта OpenDRIVE см. в разделе Экспорт в OpenDRIVE (RoadRunner). Этот пример включает файл OpenDRIVE (RRHighway.xodr), которая была экспортирована из сцены RoadRunner (RRHighway.rrscene) с использованием процесса, описанного в этом разделе.
Импорт файла OpenDRIVE в сценарий управления
Файлы OpenDRIVE можно импортировать в сценарии cuboid driving. Дополнительные сведения об этом рабочем процессе см. в разделе Планирование траектории магистрали с использованием ссылочного пути Frenet.
Создайте сценарий управления и импортируйте дорожную сеть OpenDRIVE. В данном примере отключите предупреждения от средства импорта OpenDRIVE.
scenario = drivingScenario; warning('off','driving:scenario:OpenDRIVEWarnings'); roadNetwork(scenario,"OpenDrive","RRHighway.xodr");
Добавление транспортного средства и траектории к сценарию вождения
К сценарию можно добавить транспортные средства как в программном, так и в интерактивном режиме. В этом примере показан программный рабочий процесс. Чтобы добавить транспортные средства в интерактивном режиме, используйте приложение «Конструктор сценариев вождения».
Добавление транспортного средства к дорожной сети с использованием набора предварительно определенных ППМ. Эти ППМ прилагаются в качестве вспомогательного файла, 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');
При необходимости можно продолжить изучение, моделирование и редактирование сценария в конструкторе сценариев управления. drivingScenarioDesigner(scenario).
Общей мотивацией для импорта сцен в Unreal Engine является включение имитационных систем с моделями камер, радаров и лидарных сенсоров. Можно интегрировать сцену RoadRunner с моделированием сценария вождения Unreal Engine, выполнив следующие шаги:
Экспорт сцены Unreal Engine из RoadRunner.
Настройка сцены Unreal Engine.
Создание модели испытательного стенда.
Моделирование модели испытательного стенда.
Экспорт нереальной сцены движка из RoadRunner
RoadRunner позволяет экспортировать в сцену Unreal Engine. Дополнительные сведения об этом рабочем процессе см. в разделе Экспорт в нереальный (RoadRunner). Рабочий процесс включает экспорт файлов Filmbox (.fbx) и XML, которые можно импортировать в нереальный редактор. После открытия сцены в редакторе Unreal Engine может потребоваться настроить другие аспекты сцены, такие как освещение.
В этом примере используется сцена Unreal Engine (RRHighway), которая была экспортирована из сцены RoadRunner (RRHighway.rrscene).
Настройка сцены нереального обработчика
Сцена Unreal Engine может совместно моделировать с Simulink с помощью MathWorksSimulation плагин из пакета поддержки Automated Driving Toolbox Interface for Unreal Engine 4 Projects. Для установки пакета поддержки выполните шаги, описанные в разделе Установка пакета поддержки для настройки сцен.
Сцена Нереального движка (RRHighway), использованный в этом примере, был скомпилирован с MathWorksSimulation плагин.
Создание модели испытательного стенда
Модель Simulink можно подключить к Unreal Engine для совместного моделирования. Дополнительные сведения об этом рабочем процессе см. в разделе Моделирование простого сценария вождения и датчика в среде Unreal Engine. Модель испытательного стенда с разомкнутым контуром (RRHighwayTestBench.slx) использует этот рабочий процесс для подключения к сцене Unreal Engine (RRHighway).
Откройте модель тестового стенда для сценария.
open_system("RRHighwayTestBench");

При открытии этой модели запускается helperSLRRHighwaySetup сценарий. Этот сценарий настраивает блок моделирования 3D настройки сцены в RRHighwayTestBench модель.
Эта модель содержит блоки, позволяющие моделировать сценарий управления с Unreal Engine.
Средство чтения сценариев считывает сценарий вождения из базового рабочего пространства и выводит позу эго-транспортного средства.
Моделирование 3D Конфигурация сцены обеспечивает подключение к RRHighway сцена.
Моделирование 3D Транспортное средство с грунтом После управляет позой транспортного средства в сцене
Vehicle To World преобразует позы актера из координат входного эго-транспортного средства в мировые координаты сценария.
Simulation 3D Camera синтезирует изображения с камеры.
Имитационный 3D вероятностный радар синтезирует радиолокационные обнаружения.
3D моделирования Лидар синтезирует данные облака точек Лидара.
Модель также содержит блоки для визуализации камеры и лидарных датчиков. Область действия «Птичий глаз» можно использовать для визуализации радиолокационных и визуальных обнаружений с высоты птичьего полета. Сведения о настройке этой области см. в разделе Визуализация данных датчиков из среды моделирования нереального механизма.
Моделирование модели испытательного стенда
Моделирование модели. Транспортное средство следует траектории, определенной в сценарии движения.
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');
Интеграция сцены в сценарий нереального механизма
HighwayLaneFollowingTestBench модель содержит компоненты алгоритма для обнаружения видения, слияния датчиков переднего транспортного средства и управления. Подсистема Simulation 3D Scription интегрирует модель со сценарием вождения и соответствующей игрой Unreal Engine.
Откройте подсистему моделирования 3D сценария.
open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")

Обратите внимание, что эта подсистема повторно использует методы моделирования и блоки, описанные ранее в этом примере.
Основными отличиями являются:
Эго-транспортное средство находится под замкнутым управлением.
В сценарий добавляются целевые транспортные средства.
В следующем примере для полосы не используется датчик лидара.
Моделирование модели для просмотра поведения транспортного средства ego для сценария.
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');