В этом примере показано, как спроектировать и симулировать транспортное средство для согласования светофоров в среде симуляции вождения Unreal Engine ®.
Логика принятия решений для согласования светофоров является фундаментальным компонентом беспилотных аппаратов. Логика принятия решений взаимодействует с контроллером, чтобы управлять автомобилем , оборудованным датчиком на основе состояния светофора и других транспортных средств в эго-полосе. Симуляция реальных сценариев трафика с реалистичными условиями может дать больше понимания взаимодействий между логикой принятия решений и контроллером. Automated Driving Toolbox™ предоставляет среду 3D симуляции на базе Unreal Engine ® из Epic Games ®. Можно использовать этот двигатель, чтобы визуализировать движение транспортного средства в предварительно построенной 3D сцене. Этот механизм предоставляет интуитивно понятный способ анализа эффективности логики принятия решений и алгоритмов управления при согласовании светофора на перекрестке.
Для получения информации о том, как спроектировать логику принятия решений и элементы управления для согласования светофоров в кубоидном окружении. См. пример согласования светофора. В этом примере показано, как управлять светофором в сцене Unreal, а затем как симулировать и визуализировать поведение транспортного средства для различных сценариев тестирования. В этом примере вы будете:
Исследуйте архитектуру тестовой модели: Модель содержит датчики и окружение, логику принятия решений о светофоре, элементы управления и динамику аппарата.
Управляйте светофором в сцене Unreal: The Simulation
3D
Traffic
Light
Controller
блок helper конфигурирует модель, чтобы управлять состоянием светофора в сцене Unreal при помощи Simulink ®.
Симулируйте поведение транспортного средства во время перехода от зеленого к красному: Модель анализирует взаимодействия между логикой принятия решений и контроллером, когда состояние светофора переходит от зеленого к красному, а автомобиль , оборудованный датчиком находится на расстоянии 10 метров от стоповой линии.
Симулируйте транспортное средство поведение во время перехода от красного к зеленому: Модель анализирует взаимодействия между логикой принятия решений и контроллером, когда светофор переходит от красного к зеленому и автомобиль , оборудованный датчиком находится на расстоянии 11 метров от стоп- линии. В этом случае автомобиль , оборудованный датчиком также договаривается о светофоре, когда другое транспортное средство пересекает перекресток.
Исследуйте другие сценарии: Эти сценарии тестируют систему на дополнительных условиях.
Можно применить шаблоны моделирования, используемые в этом примере, чтобы протестировать собственную логику принятия решений и элементы управления для согласования светофоров в сцене Unreal.
В этом примере вы активируете симуляцию уровня системы путем интегрирования с Unreal Engine. Для это окружение требуется 64-разрядная платформа Windows ®.
if ~ispc error(['3D Simulation is only supported on Microsoft', char(174), ' Windows', char(174), '.']); end
Чтобы исследовать поведение системы согласования светофоров, откройте симуляцию тестовой модели для системы.
open_system("TrafficLightNegotiationWithUnrealTestBench");
Открытие этой модели запускает helperSLTrafficLightNegotiationWithUnrealSetup
скрипт, чтобы инициализировать сценарий тестирования, сохраненный как drivingScenario
объект в базовом рабочем пространстве. Сценарий тестирования по умолчанию, scenario_TLN_straight_greenToRed_with_lead_vehicle
, содержит один автомобиль , оборудованный датчиком и два неавтомобилей , оборудованных датчиком. Этот скрипт настройки также конфигурирует параметры проектирования контроллера, параметры модели транспортного средства и сигналы шины Simulink ®, чтобы определить входы и выходы для TrafficLightNegotiationWithUnrealTestBench
модель.
Тестовая модель содержит следующие подсистемы:
Датчики и окружение: Модели дорожной сети, транспортных средств, камеры и радарных датчиков, используемых для симуляции. Подсистема использует Simulation
3D
Traffic
Light
Controller
блок helper для управления состоянием светофоров в сцене Unreal.
Логика решения светофора: Арбитражное разбирательство между светофором и другими ведущими транспортными средствами или транспортными средствами с перекрестком на перекрестке.
Контроллер маршрута: генерирует продольные и боковые элементы управления для автомобиля , оборудованного датчиком.
Динамика аппарата: Моделирует автомобиль , оборудованный датчиком с помощью блока Bicycle Model и обновляет его состояние с помощью команд, полученных от Контроллера образца модели Lane Following.
Логика принятия решений по светофору, образцы модели Lane Following Controller и Подсистема динамики аппарата используются повторно из примера согласования светофора. Этот пример изменяет Подсистемы Датчиков и Окружения, чтобы сделать ее совместимой для симуляции со сценой Unreal.
Подсистема Sensors and Environment конфигурирует дорожную сеть, устанавливает положения транспортного средства, синтезирует датчики и запирает обнаружения транспортного средства с радара и датчиков зрения. Откройте Подсистему Датчиков и Окружения.
open_system("TrafficLightNegotiationWithUnrealTestBench/Sensors and Environment");
Выбор сценария
Сцена и дорожная сеть, необходимые для тестовой модели, определяются следующими частями этой подсистемы:
Параметр имени сцены Scene name
для блока Simulation 3D Scene Configuration задано значение US City Block. Городская блочная дорожная сеть США состоит из пятнадцати односторонних перекрестков с двумя светофорами на каждом перекрестке. Этот пример использует раздел сцены блока города США, чтобы протестировать модель.
Блок Scenario Reader принимает информацию о автомобиле , оборудованном датчиком как входную и выполняет симуляцию с обратной связью. Этот блок читает drivingScenario
scenario объекта
из базового рабочего пространства. Сценарий содержит требуемую дорожную сеть. Дорожная сеть тесно совпадает с участком сцены городского блока США и содержит один перекресток.
Вы можете отобразить выбранный раздел сцены блока города США при помощи helperDisplayTrafficLightScene
функция.
Задайте пределы x и y, чтобы выбрать нужную область сцены и построить график извлеченной сцены.
xlimit = [-110 70]; ylimit = [-105 105]; hFigure = helperDisplayTrafficLightScene(xlimit, ylimit); snapnow; close(hFigure);
The helperGetTrafficLightScenario
функция задает путь ссылки для автомобиля , оборудованного датчиком, которым следует следовать, когда информация о маршруте недоступна. Блок Reference Path Info считывает ссылочный путь, сохраненный в переменной базового рабочего пространства referencePathInfo
. На основе траектории автомобиля , оборудованного датчиком можно либо перейти прямо, либо совершить поворот налево на пересечении. Ссылка Можно выбрать одну из следующих ссылок траекторий путем установки входа значений helperGetTrafficLightScenario
функция. Установите значение на
Straight
- Чтобы заставить автомобиль , оборудованный датчиком перемещаться прямо через перекресток.
Left
- Чтобы заставить автомобиль , оборудованный датчиком взять поворот налево на перекрестке.
Блок Set Velocity считывает значение скорости из переменной базового рабочего пространства setVelocity
и дает в качестве входов контроллеру.
Установите положения транспортного средства
Сценарий содержит один автомобиль , оборудованный датчиком и два неавтомобилей , оборудованных датчиком. Положение каждого транспортного средства в сценарии определяется следующими частями подсистемы:
Блок Simulation 3D Vehicle with Ground Following обеспечивает интерфейс, который изменяет положение и ориентацию транспортного средства в 3D сцене.
Входной порт Ego управляет положением автомобиля , оборудованного датчиком, которое определяется Simulation
3D
Vehicle
with
Ground
Following
1 блок. The ActorName
маскировочный параметр Simulation
3D
Vehicle
with
Ground
Following
1 блок задан как EgoVehicle
.
Блок Cuboid To 3D Simulation преобразует систему координат положения ego (относительно ниже центра задней оси транспортного средства) в 3D систему координат симуляции (относительно ниже центра транспортного средства).
Блок Scenario Reader также выходы основной истины информацию о полосах и положениях актёра в координатах автомобиля , оборудованного датчиком для целевых транспортных средств. В этом примере есть два целевых транспортных средств, которые заданы другими блоками Simulation 3D Vehicle with Ground Following.
Блок Vehicle To World преобразует координаты положения актёра из координат автомобиль , оборудованный датчиком в мировые координаты.
Подсистема Tracking and Sensor Fusion запирает транспортное средство обнаружения из блоков Driving Radar Данных Generator и Vision Detection Generator и отслеживает сплавленные обнаружения Мультиобъекта помощью блока Tracker, чтобы обеспечить дорожки объектов, окружающие автомобиль , оборудованный датчиком. Блок генератора обнаружения видения также обеспечивает обнаружение маршрута относительно автомобиля , оборудованного датчиком, которая помогает в идентификации транспортных средств, присутствующих в эго-полосе.
Эта модель использует вспомогательный блок Simulation 3D Traffic Контроллер, чтобы сконфигурировать и контролировать состояние светофоров в сцене Unreal. Блок Симуляцией 3D Traffic Light Контроллером helper управляет состоянием светофоров при помощи Timer-Based
или State-Based
режим. Вы можете выбрать нужный режим при помощи Control
mode
параметр маски. По умолчанию эта модель использует State-Based
режим. Для получения информации о Timer-Based
см. описание маски блока.
В State-Based
mode, блок перезаписывает состояние светофора, заданное Traffic
Light
ID
входной порт. Значение для Traffic
Light
ID
входной порт устанавливается intersectionInfo.trafficLightToNegotiate
переменная в helperGetTrafficLightScenario
функция. В этой модели значение для Traffic
Light
ID
вход порта устанавливается равным 16. Это подразумевает, что блок управляет светофором со значением идентификатора 16 в сцене блока города США. Состояния всех светофоров, присутствующих в сцене городского блока США, возвращаются Ground
Truth
выходной порт Simulation
3D
Traffic
Light
Controller
блок помощника. Модель проверяет логику принятия решений и управляет с помощью информации о основной истине и не требует обнаружения светофора на основе восприятия.
The Traffic
Light
Select
блок извлекает состояние светофора со значением идентификатора 16 из Ground
Truth
выход. Образец модели Lag Light Decision Logic использует значение состояния для арбитража между ведущим автомобилем и светофором. Для получения дополнительной информации об образце модели Traffic Light Decision Logic, смотрите пример Согласования светофора.
Блок Traffic Light Stop Line Position обеспечивает положение стоповой линии на перекрестке, соответствующем выбранному светофору trafficLightToNegotiate
. Значение положения стоповой линии определяется intersectionInfo.tlStopLinePosition
.
Блок «Центр пересечения» обеспечивает положение центра пересечения дорожной сети в сценарии. Это достигается с помощью intersectionInfo
, выход из helperGetTrafficLightScenario
.
Часто важно протестировать логику принятия решений и управлять, когда автомобиль , оборудованный датчиком близок к светофору, и светофор меняет свое состояние. Модель, используемая в этом примере, позволяет светофорам изменять состояние, когда EgoVehicle
близко к светофору.
The Distance
To
Traffic
Light
Stop
Line
блок вычисляет Евклидово расстояние между стоповой линией, соответствующее выбранному светофору trafficLightToNegotiate
и текущее положение автомобиля , оборудованного датчиком.
Логика принятия решений о светофоре использует значение расстояния, чтобы решить самый важный объект (MIO), ближайший объект перед автомобилем , оборудованным датчиком. Это может быть головное транспортное средство или светофор в эго-полосе.
Блок Traffic Light Switching Logic выводит tlState
, состояние светофора, который необходимо установить. Это реализовано с помощью Stateflow™ и использует значение расстояния, чтобы вызвать изменение состояния, когда EgoVehicle
ближе к светофору, чем заданное расстояние.
Откройте блок Traffic Light Switching Logic.
open_system("TrafficLightNegotiationWithUnrealTestBench/Sensors and Environment/Traffic Light Switching Logic", 'force');
Логика переключения светофора использует Configuration params
параметр mask для чтения строения светофора, 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_TLN_straight_greenToRed_with_lead_vehicle
сценарий тестирования.
helperSLTrafficLightNegotiationWithUnrealSetup(... "scenario_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. В эту точку времени состояние светофора является красным или желтым.
График ускорения Ego показывает профиль ускорения от контроллера маршрута следования. Заметьте, что это внимательно следует падению относительного расстояния, в ответ на обнаружение красного светофора как MIO.
График скорости Ego показывает профиль скорости автомобиля , оборудованного датчиком. Заметьте, что скорость эго замедляется в ответ на желтые и красные светофоры и приходит к полной остановке, прежде чем остановка линии. Это может быть проверено путем сравнения графика с Дистанцией до остановочной линии светофора, когда скорость равна нулю.
Вы можете обратиться к примеру согласования светофора, чтобы узнать больше об этом анализе и взаимодействиях между логикой принятия решений и контроллером.
Закройте рисунок.
close(hFigResults);
Этот раздел проверяет логику принятия решений, когда автомобиль , оборудованный датчиком находится на близком расстоянии от светофора, и состояние светофора изменяется с красного на зеленый. В сложении машина перекрестного движения находится на перекрестке, когда светофор зеленый для автомобиля , оборудованного датчиком. Состояние светофора для автомобиля , оборудованного датчиком является инитально красным и становится зеленым, когда автомобиль , оборудованный датчиком находится на расстоянии 11 метров от стопорной линии. Ожидается, что автомобиль , оборудованный датчиком замедлится, когда приблизится к светофору, когда состояние будет красным, и должна начать ускоряться, когда состояние светофора изменится с красного на зеленый. Предполагается также дождаться проезда перекрестного транспортного средства через перекресток, прежде чем ускоряться, чтобы продолжить его движение.
Функция сценария тестирования scenario_TLN_red_to_green_with_cross_traffic_vehicle
реализует этот сценарий. Сконфигурируйте TrafficLightNegotiationWithUnrealTestBench
модель, чтобы использовать этот сценарий.
helperSLTrafficLightNegotiationWithUnrealSetup(... "scenario_TLN_straight_redToGreen_with_cross_vehicle");
Отобразите trafficLightConfig
параметры структуры, установленные для этого сценария тестирования.
disp(trafficLightConfig');
initialState: 0 stateChangeDistance: 11 changeState: 2
Симулируйте модель.
sim("TrafficLightNegotiationWithUnrealTestBench");
Постройте график результатов симуляции.
hFigResults = helperPlotTrafficLightControlAndNegotiationResults(logsout, trafficLightConfig.stateChangeDistance);
Исследуйте результаты.
График состояния светофора показывает, что начальное состояние светофора является красным. Состояние светофора изменяется с красного на зеленое, когда автомобиль , оборудованный датчиком находится на расстоянии 11 метров от стоп- линии.
График Относительное продольное расстояние тесно повторяет график Расстояние до остановки светофора линейного графика потому что нет транспортного средства вывода. Заметьте внезапное падение относительного расстояния в ответ на обнаружение перекрестного транспортного средства.
График ускорения Ego показывает, что автомобиль , оборудованный датчиком пытается замедлиться, видя красный сигнал светофора. Однако в ответ на изменение состояния на зеленое можно наблюдать увеличение ускорения. Затем можно заметить профиль жесткого торможения в ответ на транспортное средство перекрестного движения на перекрестке.
График скорости Ego тесно следует графику ускорения Ego и показывает уменьшение скорости, когда автомобиль , оборудованный датчиком приближается к пересечению. Можно также заметить небольшое увеличение скорости в ответ на зеленый сигнал светофора и последующее уменьшение скорости в ответ на транспортное средство перекрестного трафика.
Закройте рисунок.
close(hFigResults);
В предыдущих разделах вы исследовали поведение системы для scenario_TLN_straight_greenToRed_with_lead_vehicle
и scenario_TLN_straight_redToGreen_with_cross_vehicle
сценарии. Ниже представлен список сценариев, совместимых с TrafficLightNegotiationWithUnrealTestBench
.
scenario_TLN_straight_greenToRed
scenario_TLN_straight_greenToRed_with_lead_vehicle [Default]
scenario_TLN_straight_redToGreen_with_cross_vehicle
scenario_TLN_left_redToGreen_with_lead_vehicle
Используйте эти дополнительные сценарии для анализа TrafficLightNegotiationWithUnrealTestBench
при различных условиях.
Включите сообщения обновления MPC.
mpcverbosity('on');
Можно использовать шаблоны моделирования в этом примере, чтобы создать собственное приложение для согласования светофора.
Cuboid To 3D Simulation | Driving Radar Data Generator | Multi-Object Tracker | Simulation 3D Scene Configuration | Simulation 3D Vehicle with Ground Following | Vehicle To World | Vision Detection Generator