В этом примере показано, как спроектировать и симулировать транспортное средство, чтобы согласовать светофор в Нереальном Engine® ведущая среда симуляции.
Логика решения для согласования светофора является основным компонентом автоматизированных ведущих приложений. Логика решения взаимодействует с контроллером, чтобы регулировать автомобиль, оборудованный датчиком на основе состояния светофора и других транспортных средств в маршруте эго. Симуляция реальных сценариев трафика с реалистическими условиями может обеспечить больше понимания взаимодействий между логикой решения и контроллером. Automated Driving Toolbox™ обеспечивает 3D среду симуляции, приводимую в действие Нереальным Engine® от Epic Games®. Можно использовать этот механизм, чтобы визуализировать движение транспортного средства в предварительно созданной 3D сцене. Этот механизм обеспечивает интуитивный способ анализировать эффективность логики решения и алгоритмов управления при согласовании светофора на пересечении.
Для получения информации о том, как спроектировать логику решения и средства управления для согласования светофора в среде кубоида, смотрите пример Согласования Светофора. В этом примере показано, как управлять светофором в Нереальной сцене и затем как симулировать и визуализировать поведение транспортного средства для различных сценариев тестирования. В этом примере вы будете:
Исследуйте архитектуру тестовой модели: модель содержит датчики и среду, логику решения светофора, средства управления и динамику аппарата.
Управляйте светофором в Нереальной сцене: Simulation
3D
Traffic
Light
Controller
блок помощника конфигурирует модель, чтобы управлять состоянием светофора в Нереальной сцене при помощи Simulink®.
Симулируйте поведение транспортного средства во время зеленого к красному переходу: модель анализирует взаимодействия между логикой решения и контроллером, когда изменения состояния светофора от зеленого до красного и автомобиля, оборудованного датчиком на расстоянии 10 метров от линии остановки.
Симулируйте поведение транспортного средства во время красного к зеленому переходу: модель анализирует взаимодействия между логикой решения и контроллером, когда переходы светофора от красного до зеленого и автомобиля, оборудованного датчиком на расстоянии 11 метров от линии остановки. В этом случае автомобиль, оборудованный датчиком также согласовывает светофор, когда другое транспортное средство пересекает пересечение.
Исследуйте другие сценарии: Эти сценарии тестируют систему под дополнительными условиями.
Можно применить шаблоны моделирования, используемые в этом примере, чтобы протестировать собственную логику решения и средства управления, чтобы согласовать светофор в Нереальной сцене.
В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine. Эта среда требует Windows® 64-битная платформа.
if ~ispc error(['3D Simulation is only supported on Microsoft', char(174), ' Windows', char(174), '.']); end
Чтобы исследовать тестовую модель, скопируйте файлы проекта в качестве примера в рабочую папку. Используйте workDir
аргумент helperDrivingProjectSetup
функция, чтобы задать путь к файлу. Длина пути к файлу должна быть меньше 25 символов, чтобы избежать максимального символьного предела для пути к файлу Windows.
addpath(fullfile(matlabroot, 'toolbox', 'driving', 'drivingdemos')); helperDrivingProjectSetup('TLNUnreal.zip', 'workDir', pwd);
Чтобы исследовать поведение системы согласования светофора, откройте тестовую модель симуляции для системы.
open_system("TrafficLightNegotiationWithUnrealTestBench");
Открытие этой модели запускает helperSLTrafficLightNegotiationWithUnrealSetup
скрипт, чтобы инициализировать сценарий тестирования, сохраненный как drivingScenario
объект в базовом рабочем пространстве. Сценарий тестирования по умолчанию, scenario_03_TLN_straight_greenToRed_with_lead_vehicle
, содержит один автомобиль, оборудованный датчиком и два неавтомобиля, оборудованных датчиком. Этот скрипт настройки также конфигурирует параметры проектирования контроллера, параметры модели транспортного средства и сигналы шины Simulink® задать вводы и выводы для TrafficLightNegotiationWithUnrealTestBench
модель.
Тестовая модель содержит следующие подсистемы:
Датчики и Среда: Моделирует дорожную сеть, транспортные средства, камеру и радарные датчики, используемые для симуляции. Подсистема использует Simulation
3D
Traffic
Light
Controller
блок помощника, чтобы управлять состоянием светофора в Нереальной сцене.
Логика Решения Светофора: Выносит решение между светофором и другими ведущими транспортными средствами или транспортными средствами перекрестного трафика на пересечении.
Следующий за маршрутом Контроллер: Генерирует продольные и боковые средства управления для автомобиля, оборудованного датчиком.
Динамика аппарата: Моделирует автомобиль, оборудованный датчиком с помощью Велосипедного блока Model и обновляет его состояние с помощью команд, полученных от Маршрута После образца модели Контроллера.
Логика Решения Светофора, Маршрут После образцов модели Контроллера и подсистема Динамики аппарата снова используются из примера Согласования Светофора. Этот пример изменяет Датчики и подсистему Среды, чтобы сделать его совместимым для симуляции с Нереальной сценой.
Подсистема Датчиков и Среды конфигурирует дорожную сеть, устанавливает положения транспортного средства, синтезирует датчики и плавит обнаружения транспортного средства от датчиков видения и радара. Откройте подсистема Среды и Датчики.
open_system("TrafficLightNegotiationWithUnrealTestBench/Sensors and Environment");
Выберите Scenario
Сцена и дорожная сеть, требуемая для тестовой модели, заданы следующими частями этой подсистемы:
Параметр имени сцены Scene name
из Симуляции 3D Блок Configuration Сцены установлен в Городской квартал США. Дорожная сеть городского квартала США состоит из пятнадцати односторонних пересечений с двумя светофорами на каждом пересечении. Этот пример использует раздел сцены городского квартала США, чтобы протестировать модель.
Блок Scenario Reader берет информацию об автомобиле, оборудованном датчиком, как введено и выполняет симуляцию с обратной связью. Этот блок читает drivingScenario
объект scenario
от базового рабочего пространства. Сценарий содержит желаемую дорожную сеть. Дорожная сеть тесно соответствует с разделом сцены городского квартала США и содержит одно пересечение.
Можно отобразить выбранный раздел сцены городского квартала США при помощи helperDisplayTrafficLightScene
функция.
Задайте x и пределы y, чтобы выбрать желаемую область сцены и построить извлеченную сцену.
xlimit = [-110 70]; ylimit = [-105 105]; hFigure = helperDisplayTrafficLightScene(xlimit, ylimit); snapnow; close(hFigure);
helperGetTrafficLightScenario
функция задает ссылочный путь для автомобиля, оборудованного датчиком, чтобы следовать, когда информация о маршруте не доступна. Блок Reference Path Info читает ссылочный путь, сохраненный в переменной referencePathInfo
базового рабочего пространства. Автомобиль, оборудованный датчиком может или пойти прямо или повернуть налево на пересечении на основе ссылочной траектории. Можно выбрать одну из этих ссылочных траекторий путем установки входных значений
helperGetTrafficLightScenario
функция. Установите значение к
Straight
- Заставить автомобиль, оборудованный датчиком переместиться сквозной пересечение.
Left
- Заставить автомобиль, оборудованный датчиком повернуть налево на пересечении.
Блок Set Velocity читает скоростное значение из переменной setVelocity
базового рабочего пространства и дает как вход контроллеру.
Установите положения транспортного средства
Сценарий содержит один автомобиль, оборудованный датчиком и два неавтомобиля, оборудованных датчиком. Положения для каждого транспортного средства в сценарии заданы этими частями подсистемы:
3D Транспортное средство Симуляции с блоком Ground Following обеспечивает интерфейс, который меняет положение и ориентацию транспортного средства в 3D сцене.
Входной порт Эго управляет положением автомобиля, оборудованного датчиком, который задан Simulation
3D
Vehicle
with
Ground
Following
1 блок. ActorName
параметр маски Simulation
3D
Vehicle
with
Ground
Following
1 блок задан как EgoVehicle
.
Блок Cuboid To 3D Simulation преобразует систему координат положения эго (относительно ниже центра задней оси транспортного средства) к 3D системе координат симуляции (относительно ниже центра транспортного средства).
Блок Scenario Reader также выходная информация об основной истине маршрутов и агента позирует в координатах автомобиля, оборудованного датчиком целевым транспортным средствам. В этом примере существует два целевых транспортных средства, которые заданы другой Симуляцией 3D Транспортное средство с Землей После блоков.
Блок Vehicle To World преобразует координаты положения агента от координат автомобиля, оборудованного датчиком до мировых координат.
Обнаружения транспортного средства предохранителей подсистемы Отслеживания и Cочетания датчиков от Управления Радарным Генератором Данных и Генератором Обнаружения Видения блокируют и отслеживают сплавленные обнаружения с помощью блока Multi-Object Tracker, чтобы обеспечить объектные дорожки, окружающие автомобиль, оборудованный датчиком. Блок Vision Detection Generator также обеспечивает обнаружения маршрута относительно автомобиля, оборудованного датчиком, который помогает в идентификации транспортных средств, существующих в маршруте эго.
Эта модель использует Симуляцию 3D Контроллер Светофора блок помощника, чтобы сконфигурировать и управлять состоянием светофора в Нереальной сцене. Симуляция 3D Контроллер Светофора блок помощника управляет состоянием светофора при помощи Timer-Based
или State-Based
режим. Можно выбрать желаемый режим при помощи Control
mode
параметр маски. По умолчанию эта модель использует State-Based
режим. Для получения информации о Timer-Based
режим, см. описание маски блока.
В State-Based
режим, блок перезаписывает состояние светофора, заданного Traffic
Light
ID
входной порт. Значение для Traffic
Light
ID
входной порт установлен intersectionInfo.trafficLightToNegotiate
переменная в helperGetTrafficLightScenario
функция. В этой модели, значении для Traffic
Light
ID
входной порт установлен в 16. Это подразумевает, что блок управляет светофором со Значением идентификатора 16 в сцене городского квартала США. Состояния всего светофора, существующего в сцене городского квартала США, возвращены Ground
Truth
выходной порт Simulation
3D
Traffic
Light
Controller
блок помощника. Модель тестирует логику решения и средства управления при помощи информации об основной истине и не требует основанного на восприятии обнаружения светофора.
Traffic
Light
Select
блок извлекает состояние светофора со Значением идентификатора 16 от Ground
Truth
вывод . Образец модели Логики Решения Светофора использует значение состояния, чтобы вынести решение между ведущим автомобилем и светофором. Для получения дополнительной информации об образце модели Логики Решения Светофора, смотрите пример Согласования Светофора.
Блок Traffic Light Stop Line Position обеспечивает положение линии остановки на пересечении, соответствующем выбранному светофору trafficLightToNegotiate
. Значение положения линии остановки задано intersectionInfo.tlStopLinePosition
.
Блок Intersection Center обеспечивает позицию перекрестного центра дорожной сети в сценарии. Это получено с помощью intersectionInfo
, выход от helperGetTrafficLightScenario
.
Часто важно протестировать логику решения и средства управления, когда автомобиль, оборудованный датчиком близко к светофору, и светофор изменяет свое состояние. Модель, используемая в этом примере, позволяет светофору изменить состояние когда EgoVehicle
близко к светофору.
Distance
To
Traffic
Light
Stop
Line
блок вычисляет Евклидово расстояние между линией остановки, соответствующей выбранному светофору trafficLightToNegotiate
и текущее положение автомобиля, оборудованного датчиком.
Логика Решения Светофора использует значение расстояния, чтобы решить самый важный объект (MIO), самый близкий объект перед автомобилем, оборудованным датчиком. Это может быть ведущее транспортное средство или светофор в маршруте эго.
Светофор, Переключающий Логический блок выходные параметры tlState
, состояние светофора, который должен быть установлен. Это реализовано с помощью Stateflow® и использует значение расстояния, чтобы инициировать изменение состояния когда EgoVehicle
ближе к светофору, чем заданное расстояние.
Откройте Светофор, Переключающий Логический блок.
open_system("TrafficLightNegotiationWithUnrealTestBench/Sensors and Environment/Traffic Light Switching Logic", 'force');
Светофор, Переключающий Логику, использует Configuration params
параметр маски, чтобы считать настройку светофора, trafficLightConfig
, от базового рабочего пространства. Можно использовать trafficLightConfig
структура, чтобы сконфигурировать различные сценарии тестирования. Эта структура задана в функции сценария тестирования и имеет следующие поля: stateChangeDistance
, initialState
, и changeState
.
initialState
задает состояние светофора перед изменением состояния.
stateChangeDistance
задает пороговое расстояние EgoVehicle
к светофору, на котором должно произойти изменение состояния.
changeState
задает состояние светофора, который будет установлен после изменения состояния.
Переключение состояния происходит на основе настройки набора и когда EgoVehicle
достигает stateChangeDistance
. Когда initialState
Red
и changeState
Green
диаграмма Stateflow переключается от Red
утвердите к Green
состояние. С другой стороны, когда initialState
Green
и changeState
Red
диаграмма Stateflow моделируется таким образом, что изменение состояния происходит от Green
утвердите к Yellow
состояние и после одной секунды, светофор переключается на Red
состояние.
Этот раздел тестирует логику решения, когда автомобиль, оборудованный датчиком на близком расстоянии до светофора и изменений состояния светофора от зеленого до красного. В этом сценарии тестирования ведущее транспортное средство перемещается в маршруте эго и пересекает пересечение. Состояние светофора сохраняет зеленым для ведущего транспортного средства и покраснело, когда автомобиль, оборудованный датчиком на расстоянии 10 метров от линии остановки. Автомобиль, оборудованный датчиком, как ожидают, будет следовать за ведущим транспортным средством, согласовывать изменение состояния и приходить к полному останову перед линией остановки.
Сконфигурируйте TrafficLightNegotiationWithUnrealTestBench
модель, чтобы использовать scenario_03_TLN_straight_greenToRed_with_lead_vehicle
сценарий тестирования.
helperSLTrafficLightNegotiationWithUnrealSetup(... "scenario_03_TLN_straight_greenToRed_with_lead_vehicle");
Отобразите trafficLightConfig
параметры структуры устанавливаются для сценария тестирования.
disp(trafficLightConfig');
initialState: 2 stateChangeDistance: 10 changeState: 0
Симулируйте модель. Во время симуляции модель регистрирует сигналы, требуемые для анализа методом моделирования сообщения к logsout
.
Чтобы сократить командное окно выход, сначала выключите сообщения обновления MPC.
mpcverbosity('off'); sim("TrafficLightNegotiationWithUnrealTestBench");
Постройте результаты симуляции с помощью helperPlotTrafficLightControlAndNegotiationResults
функция.
hFigResults = helperPlotTrafficLightControlAndNegotiationResults(logsout, trafficLightConfig.stateChangeDistance);
Исследуйте результаты.
График состояния Светофора показывает состояние светофора. Расстояние до линейного графика остановки светофора показывает расстояние между автомобилем, оборудованным датчиком и линией остановки, соответствующей светофору. Вы видите, что начальное состояние светофора является зеленым и изменения состояния от зеленого до желтого, когда автомобиль, оборудованный датчиком приближается к линии остановки. Изменения состояния от желтого до красного, когда автомобиль, оборудованный датчиком на расстоянии 10 метров от линии остановки.
Относительный продольный график расстояния показывает относительное расстояние между автомобилем, оборудованным датчиком и самым важным объектом (MIO). MIO является самым близким объектом перед автомобилем, оборудованным датчиком. Это может быть ведущее транспортное средство или светофор в маршруте эго. Автомобиль, оборудованный датчиком следует за ведущим транспортным средством и обеспечивает безопасное расстояние, когда состояние светофора является зеленым. Расстояние между эго и ведущим транспортным средством уменьшается когда переходы светофора от зеленого до красного. Это вызвано тем, что, когда автомобиль, оборудованный датчиком приближается к линии остановки, светофор обнаруживается как MIO. В этом моменте времени состояние светофора является или красным или желтым.
Ускоряющий график Эго показывает ускоряющий профиль от Маршрута После Контроллера. Заметьте, что это сопровождает падение в относительном расстоянии в реакции на обнаружение красного светофора как MIO.
Скоростной график Эго показывает скоростной профиль автомобиля, оборудованного датчиком. Заметьте, что скорость эго замедляется в реакции на желтый и красный светофор и приходит к полному останову перед линией остановки. Это может быть проверено путем сравнения графика с Расстоянием до линии остановки светофора, когда скорость является нулем.
Можно обратиться к примеру Согласования Светофора, чтобы узнать больше об этом анализе и взаимодействиях между логикой решения и контроллером.
Закройте фигуру.
close(hFigResults);
Этот раздел тестирует логику решения, когда автомобиль, оборудованный датчиком на близком расстоянии до светофора и изменений состояния светофора от красного до зеленого. Кроме того, транспортное средство перекрестного трафика находится в пересечении, когда светофор является зеленым для автомобиля, оборудованного датчиком. Состояние светофора является первоначально красным для автомобиля, оборудованного датчиком и становится зеленым, когда автомобиль, оборудованный датчиком на расстоянии 11 метров от линии остановки. Автомобиль, оборудованный датчиком, как ожидают, замедлится, когда он приближается к светофору, когда состояние является красным и должно начать ускоряться когда изменения состояния светофора от красного до зеленого. Это, как также ожидают, будет ожидать транспортного средства перекрестного трафика, чтобы передать пересечение прежде, чем ускориться, чтобы продолжить его перемещение.
Функция сценария тестирования scenario_04_TLN_straight_redToGreen_with_cross_vehicle
реализации этот сценарий. Сконфигурируйте TrafficLightNegotiationWithUnrealTestBench
модель, чтобы использовать этот сценарий.
helperSLTrafficLightNegotiationWithUnrealSetup(... "scenario_04_TLN_straight_redToGreen_with_cross_vehicle");
Отобразите trafficLightConfig
параметры структуры, которые устанавливаются для этого сценария тестирования.
disp(trafficLightConfig');
initialState: 0 stateChangeDistance: 11 changeState: 2
Симулируйте модель.
sim("TrafficLightNegotiationWithUnrealTestBench");
Постройте результаты симуляции.
hFigResults = helperPlotTrafficLightControlAndNegotiationResults(logsout, trafficLightConfig.stateChangeDistance);
Исследуйте результаты.
График состояния Светофора показывает, что начальное состояние светофора является красным. Изменения состояния светофора от красного до зеленого, когда автомобиль, оборудованный датчиком на расстоянии 11 метров от линии остановки.
Относительный продольный график расстояния сопровождает Расстояние до линейного графика остановки светофора, потому что нет никакого ведущего транспортного средства. Заметьте внезапное падение в относительном расстоянии в ответ на обнаружение перекрестного транспортного средства.
Ускоряющий график Эго показывает, что автомобиль, оборудованный датчиком пытается замедлиться при наблюдении красного светофора. Однако в ответ на изменение состояния к зеленому, можно наблюдать увеличение ускорения. Можно затем заметить профиль резкого торможения в ответ на транспортное средство перекрестного трафика на пересечении.
Скоростной график Эго сопровождает ускоряющий график Эго и показывает уменьшение в скорости, когда автомобиль, оборудованный датчиком приближается к пересечению. Можно также заметить небольшое увеличение скорости в ответ на зеленый светофор и последующее уменьшение в скорости в ответ на транспортное средство перекрестного трафика.
Закройте фигуру.
close(hFigResults);
В предыдущих разделах вы исследовали поведение системы для scenario_03_TLN_straight_greenToRed_with_lead_vehicle
и scenario_04_TLN_straight_redToGreen_with_cross_vehicle
сценарии. Ниже список сценариев, которые совместимы с TrafficLightNegotiationWithUnrealTestBench
.
scenario_01_TLN_left_redToGreen_with_lead_vehicle
scenario_02_TLN_straight_greenToRed
scenario_03_TLN_straight_greenToRed_with_lead_vehicle [Default]
scenario_04_TLN_straight_redToGreen_with_cross_vehicle
Используйте эти дополнительные сценарии, чтобы анализировать TrafficLightNegotiationWithUnrealTestBench
при различных условиях.
Включите сообщения обновления MPC.
mpcverbosity('on');
Можно использовать шаблоны моделирования в этом примере, чтобы создать собственное приложение согласования светофора.
Simulation 3D Scene Configuration | Simulation 3D Vehicle with Ground Following | Vehicle To World | Cuboid To 3D Simulation | Driving Radar Data Generator | Vision Detection Generator | Multi-Object Tracker