exponenta event banner

Переговоры по светофору

В этом примере показано, как проектировать и тестировать логику принятия решений для согласования светофора на перекрестке.

Введение

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

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

  1. Исследуйте модель испытательного стенда: Модель содержит датчики светофора и окружающей среды, логику принятия решений по светофору, средства управления и динамику транспортного средства.

  2. Моделирование логики принятия решения о светофоре: логика принятия решения о светофоре используется для арбитража между ведущим транспортным средством и предстоящим светофором. Он также обеспечивает контрольный путь для эго-транспортного средства, который должен следовать на перекрестке в отсутствие полос движения.

  3. Моделирование левого поворота со светофором и ведущим транспортным средством: Модель сконфигурирована для проверки взаимодействий между логикой принятия решения о светофоре и органами управления эго-транспортным средством при приближении к перекрестку в присутствии ведущего транспортного средства.

  4. Моделирование левого поворота со светофором и перекрестным движением: Модель настроена для проверки взаимодействия между логикой принятия решения о светофоре и органами управления эго-транспортным средством при перекрестном движении.

  5. Изучите другие сценарии: эти сценарии тестируют систему в дополнительных условиях.

Шаблоны моделирования, используемые в этом примере, можно применить для проверки собственной логики принятия решений и элементов управления для согласования светофоров.

Изучение модели испытательного стенда

Для изучения поведения системы согласования светофоров откройте модель испытательного стенда для моделирования системы.

open_system("TrafficLightNegotiationTestBench");

При открытии этой модели запускается helperSLTrafficLightNegotiationSetup сценарий, который инициализирует сценарий дороги с помощью drivingScenario в базовой рабочей области. Выполняется сценарий тестирования по умолчанию, scenario_TLN_left_turn_with_cross_over_vehicle, который содержит эго-транспортное средство и два других транспортных средства. Этот сценарий настройки также конфигурирует конструктивные параметры контроллера, параметры модели транспортного средства и сигналы шины Simulink ®, необходимые для определения входов и выходов для TrafficLightNegotiationTestBench модель.

Модель испытательного стенда содержит следующие подсистемы:

  1. Сенсоры и окружающая среда: моделирует датчик светофора, дорожную сеть, транспортные средства, а также камеры и радиолокационные датчики, используемые для моделирования.

  2. Логика принятия решения в отношении светофора: Арбитражное разбирательство между светофором и другими транспортными средствами-лидерами или перекрестными транспортными средствами на перекрестке.

  3. Lane-Follow Controller: Генерирует продольные и боковые органы управления.

  4. Vehicle Dynamics: моделирует эго-транспортное средство с помощью блока модели велосипеда (Automated Driving Toolbox) и обновляет его состояние с помощью команд, полученных из подсистемы контроллера Lane Following.

  5. Визуализация: Строит график координат дорожной сети, транспортных средств и состояния светофора во время моделирования.

Ссылочная модель контроллера по следам движения и подсистема Vehicle Dynamics используются повторно из примера «Дорожка по следам движения» (Automated Driving Toolbox). В этом примере основное внимание уделяется подсистемам принятия решений по датчикам и окружающей среде и светофорам.

Подсистема «Датчики и окружающая среда» конфигурирует дорожную сеть, определяет целевые траектории транспортного средства и синтезирует датчики. Откройте подсистему датчиков и окружающей среды.

open_system("TrafficLightNegotiationTestBench/Sensors and Environment");

Сценарий и датчики на эго-транспортном средстве определяются следующими частями подсистемы:

  • Блок «Считыватель сценариев» (Automated Driving Toolbox) настроен на ввод информации о транспортном средстве ego для выполнения моделирования с замкнутым контуром. Он выводит наземную информацию о истинности полос движения и действующих лиц в координатах эго-транспортных средств. Этот блок считывает drivingScenario переменная объекта, scenario, из базового рабочего пространства, которое содержит дорожную сеть, совместимую с TrafficLightNegotiationTestBench модель.

Постройте график дорожной сети, предусмотренной сценарием.

hFigScenario = figure('Position', [1 1 800 600]);
plot(scenario, 'Parent', axes(hFigScenario));

Этот сценарий по умолчанию имеет одно пересечение с эго-транспортным средством, одно ведущее транспортное средство и одно перекрестное транспортное средство.

Закройте фигуру.

close(hFigScenario);

Подсистема Tracking and Sensor Fusion предохраняет блоки обнаружения транспортных средств от генератора данных движущегося радара (Automated Driving Toolbox) и генератора обнаружения зрения (Automated Driving Toolbox) с помощью блока Multi-Object Tracker (Automated Driving Toolbox) для обеспечения следов объектов, окружающих эго-транспортное средство.

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

Подсистема датчика светофора моделирует светофоры. Он сконфигурирован для поддержки четырех датчиков светофора на перекрестке, TL Sensor 1, TL Sensor 2, TL Sensor 3 и TL Sensor 4.

Постройте сценарий с датчиками светофора.

hFigScenario = helperPlotScenarioWithTrafficLights();

Обратите внимание, что это тот же сценарий, что и раньше, только с добавленными датчиками светофора. Эти датчики представлены красными кружками на перекрестке, обозначающими красные светофоры. Метки для светофоров 1, 2, 3, 4 соответствуют TL-датчику 1, TL-датчику 2, TL-датчику 3 и TL-датчику 4 соответственно.

Закройте фигуру.

close(hFigScenario);

Сценарии тестирования в TrafficLightNegotiationTestBench сконфигурированы таким образом, что эго-транспортное средство договаривается с TL-датчиком 1. Существует три режима, в которых можно настроить эту подсистему датчика светофора:

  1. Постоянный красный: TL датчик 1 и TL датчик 3 всегда в красном состоянии. Остальные два светофора всегда в зеленом состоянии.

  2. Стабильно зеленый: TL датчик 1 и TL датчик 3 всегда в зеленом состоянии. Два других светофора всегда в красном состоянии.

  3. Цикл [По умолчанию]: TL Sensor 1 и TL Sensor 3 следуют циклической схеме: зеленый-желтый-красный с предопределенными временными интервалами. Другие светофоры также следуют циклической схеме: красно-зелёно-желтый с предопределёнными временными привязками для дополнения TL Sensor 1 и TL Sensor 3.

Эту подсистему можно настроить в одном из следующих режимов с помощью Traffic Light Sensor Mode параметр маски.

Откройте подсистему датчика светофора.

open_system('TrafficLightNegotiationTestBench/Sensors and Environment/Traffic Light Sensor', 'force');

Диаграмма «Состояние логики переключения светофоров» ® реализует логику изменения состояния светофора для четырех датчиков светофора. Начальное состояние для всех светофоров устанавливается красным. Переход в другой режим основан на условии срабатывания, определяемом расстоянием эго-транспортного средства до светофора TL Sensor 1. Это расстояние определяется переменнойdistanceToTrafficLight. Переход светофора запускается, если это расстояние меньше trafficLightStateTriggerThreshold. Этот порог в настоящее время установлен в 60 метров и может быть изменен в helperSLTrafficLightNegotiationSetup сценарий.

Вычисляется блок «Вычислить расстояние до светофора» distanceToTrafficLight используя положение светофора TL Sensor 1, определяемое переменной trafficLightPosition. Это получено из Traffic Light Position параметр маски подсистемы датчика светофора. Значение параметра маски равно intersectionInfo.tlSensor1Position, переменная, заданная в базовой рабочей области helperSLTrafficLightNegotiationSetup сценарий. intersectionInfo структура является выводом из helperGetTrafficLightScene функция. Эта функция используется для создания сценариев тестирования, совместимых с TrafficLightNegotiationTestBench модель.

Для реализации своих функций логикой принятия решений по светофору и контроллером необходимы следующие входные данные:

  • Функция ReferureStartInfo предоставляет предопределенную опорную траекторию, которая может использоваться эго-транспортным средством для навигации при отсутствии информации о полосе движения. Эго-транспортное средство может идти прямо, совершать левый поворот или правый поворот на перекрестке на основе опорной траектории. Этот опорный путь получается с помощью referencePathInfo, вывод из helperGetTrafficLightScene. Эта функция принимает входной аргумент для указания направления движения на перекрестке. Возможные значения: Straight, Left, и Right.

  • «Центр» обеспечивает положение центра пересечения улично-дорожной сети в сценарии. Это получается с помощью intersectionInfo, вывод из helperGetTrafficLightScene.

  • Set Velocity определяет скорость, заданную пользователем для контроллера.

Логика принятия решения о модельном светофоре

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

open_system("TrafficLightDecisionLogic");

Подсистема Find Lead Car находит ведущий автомобиль в текущей полосе по дорожкам входных объектов. Он обеспечивает относительное расстояние, relativeDistToLeadCar и относительную скорость, relativeVelocityOfLeadCar, по отношению к ведущему транспортному средству. Если нет ведущего транспортного средства, то этот блок считает, что ведущее транспортное средство присутствует на бесконечном расстоянии.

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

open_system("TrafficLightDecisionLogic/Arbitration Logic");

Диаграмма состояния логики арбитража состоит из двух состояний, OnEntry и OnRedAndYellowLightDetection. Если светофор горит зеленым цветом или при отсутствии сигналов светофора, то светофор остается в OnEntry состояние. Если состояние светофора красный или желтый, то состояние переходит в OnRedAndYellowLightDetection состояние. Поток управления переключается между этими состояниями на основе trafficLightDetection и distanceToTrafficLight переменные. В каждом состоянии вычисляют относительное расстояние и относительную скорость относительно наиболее важного объекта (MIO). Ведущее транспортное средство и красный сигнал светофора считаются MIO.

OnEntry:

relativeDistance = relativeDistToLeadCar;

relativeVelocity = relativeVelocityOfLeadCar;

OnRedAndReadLightDetection:

relativeDistance = min(relativeDistToLeadCar,distanceToTrafficLight);

relativeVelocity = min(relativeVelocityOfLeadCar,longitudinalVelocity);

longitudinalVelocity представляет продольную скорость транспортного средства эго.

Блок «Вычислить расстояние до пересечения» вычисляет расстояние до центра пересечения из текущего положения эго. Поскольку перекресток не имеет полос движения, эго-транспортное средство использует это расстояние для возврата к предопределенной опорной траектории на перекрестке.

Подсистема «Логика принятия решений по центру полосы движения» вычисляет информацию о центре полосы движения в соответствии с требованиями системы управления путем следования. Откройте подсистему логики принятия решений по центру полосы движения.

open_system("TrafficLightDecisionLogic/Lane Center Decision Logic");

Подсистема Lane Center Decision Logic (Логика принятия решений по центру полосы движения) в основном опирается на сигналы обнаружения полосы движения, полученные из блока Vision Detection Generator (Automated Driving Toolbox), для оценки информации о центре полосы движения, такой как кривизна, производная кривизны, боковое смещение и угол курса. Однако разметки полос для обнаружения на перекрестке нет. В таких случаях информация о центре полосы может быть оценена по заранее определенному опорному пути.

Подсистема «Опорный путь - центр полосы движения» вычисляет информацию о центре полосы движения на основе текущей эго-позы и предопределенного опорного пути. Выключатель настроен, чтобы использовать LaneCenterFromReferencePath, когда DistanceToIntersection - меньше, чем referencePathSwitchThreshold. Этот порог в настоящее время установлен в 20 метров и может быть изменен в helperSLTrafficLightNegotiationSetup сценарий.

Имитация поворота влево с помощью светофора и ведущего транспортного средства

В этом тестовом сценарии ведущее транспортное средство перемещается по полосе эго и пересекает перекресток. Состояние светофора остается зеленым для ведущего транспортного средства и становится красным для эго-транспортного средства. Предполагается, что эго-транспортное средство будет следовать за ведущим транспортным средством, вести переговоры о светофоре и совершать левый поворот.

Сконфигурируйте TrafficLightNegotiationTestBench для использования scenario_TLN_left_turn_with_lead_vehicle сценарий.

helperSLTrafficLightNegotiationSetup("scenario_TLN_left_turn_with_lead_vehicle");
% To reduce command-window output, first turn off the MPC update messages.
mpcverbosity('off');
% Simulate the model.
sim("TrafficLightNegotiationTestBench");

Постройте график результатов моделирования.

hFigResults = helperPlotTrafficLightNegotiationResults(logsout);

Изучите результаты.

  • График состояния светофора - TL Sensor 1 показывает состояния датчика светофора TL Sensor 1. Он изменяется с зеленого на желтый, затем с желтого на красный, а затем повторяется в режиме цикла.

  • График относительного продольного расстояния показывает относительное расстояние между эго-транспортным средством и MIO. Обратите внимание, что эго-транспортное средство следует за ведущим транспортным средством от 0 до 4,2 секунды, сохраняя безопасное расстояние от него. Можно также заметить, что с 4,2 до 9 секунд это расстояние уменьшается, поскольку красный сигнал светофора обнаруживается как MIO. Также обратите внимание на промежутки, представляющие бесконечное расстояние, когда MIO не существует после того, как ведущее транспортное средство превысит максимально допустимое расстояние для MIO.

  • График ускорений Ego показывает профиль ускорений от контроллера Lane Following. Обратите внимание на отрицательное ускорение от 4,2 до 4,7 секунды, в ответ на обнаружение красного светофора как MIO. Также можно наблюдать увеличение ускорения через 9 секунд, в ответ на зеленый сигнал светофора.

  • График угла рыскания Ego показывает профиль угла рыскания эго-транспортного средства. Обратите внимание на изменения в этом профиле через 12 секунд в ответ на поворот эго-транспортного средства влево.

Закройте фигуру.

close(hFigResults);

Моделирование поворота влево с помощью светофора и перекрестного движения

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

Сконфигурируйте TrafficLightNegotiationTestBench для использования scenario_TLN_left_turn_with_cross_over_vehicle сценарий.

helperSLTrafficLightNegotiationSetup("scenario_TLN_left_turn_with_cross_over_vehicle");

% Simulate the model.
sim("TrafficLightNegotiationTestBench");

Постройте график результатов моделирования.

hFigResults = helperPlotTrafficLightNegotiationResults(logsout);

Изучите результаты.

  • График состояния светофора - TL Sensor 1 аналогичен графику предыдущего моделирования.

  • График относительного продольного расстояния расходится с предыдущим прогоном моделирования с 10,5 секунд. Обратите внимание на обнаружение перекрестного транспортного средства в качестве MIO через 10 секунд на расстоянии около 10 метров.

  • График ускорения Ego также быстро реагирует на кросс-дорожное транспортное средство в 10.6. Профиль жесткого торможения можно заметить в ответ на перекрестное движение транспортного средства на перекрестке.

  • График угла Ego yaw показывает, что эго-транспортное средство инициирует левый поворот через 14 секунд в ответ на выезд перекрестного транспортного средства с перекрестка.

Закройте фигуру.

close(hFigResults);

Изучение других сценариев

В предыдущих разделах изучалось поведение системы для scenario_TLN_left_turn_with_lead_vehicle и scenario_TLN_left_turn_with_cross_over_vehicle сценарии. Ниже приведен список сценариев, совместимых с TrafficLightNegotiationTestBench.

  scenario_TLN_straight
  scenario_TLN_straight_with_lead_vehicle
  scenario_TLN_left_turn
  scenario_TLN_left_turn_with_lead_vehicle
  scenario_TLN_left_turn_with_cross_over_vehicle [Default]

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

helperSLTrafficLightNegotiationSetup("scenario_TLN_straight");

Включите сообщения обновления MPC.

mpcverbosity('on');

Заключение

В этом примере была внедрена логика принятия решений для согласования светофора и протестирована с полосой после контроллера в модели Simulink с замкнутым контуром.

Связанные темы