В этом примере показано, как симулировать автоматизированную систему маневра изменения маршрута для сценария движения по шоссе.
Система автоматического маневра смены маршрута (LCM) позволяет автомобилю , оборудованному датчиком автоматически перемещаться от одной полосы к другой полосе. LCM системных моделей динамику продольного и бокового управления для автоматического изменения маршрута. Система LCM определяет окружение для большинства важных объектов (MIOs) с помощью бортовых датчиков, идентифицирует оптимальную траекторию, которая избегает этих объектов и управляет автомобилем , оборудованным датчиком по этой траектории.
В этом примере показано, как спроектировать и протестировать компоненты планировщика и контроллера системы LCM. В этом примере планировщик изменения маршрута использует информацию основной истины из сценария для обнаружения MIO. Затем она генерирует допустимую траекторию для согласования изменения маршрута, которое выполняется контроллером изменения маршрута. В этом примере вы:
Исследуйте тестовую модель - Модель содержит планирование, элементы управления, динамику аппарата, сценарий и метрики для оценки функциональности.
Моделируйте планировщик изменения маршрута - эталонная модель находит MIO, дискретизирует терминальные состояния ego vehicle и генерирует оптимальную траекторию.
Моделируйте контроллер изменения маршрута - Эта модель генерирует команды управления для автомобиля , оборудованного датчиком на основе сгенерированной траектории.
Симулируйте и визуализируйте поведение системы. Тестовая модель сконфигурирована для тестирования интегрирования планирования и управления для выполнения маневра изменения маршрута на изогнутой дороге с несколькими транспортными средствами.
Исследуйте другие сценарии - Эти сценарии тестируют систему на дополнительных условиях.
Можно применить шаблоны моделирования, используемые в этом примере, чтобы протестировать собственные компоненты планировщика и контроллера системы LCM.
В этом примере вы используете тестовую модель симуляции уровня системы, чтобы исследовать поведение компонентов планировщика и контроллера для системы маневра изменения маршрута. Откройте тестовую модель симуляции уровня системы.
open_system('HighwayLaneChangeTestBench')
Открытие этой модели запускает helperSLHighwayLaneChangeSetup
скрипт, который инициализирует дорожный сценарий с помощью drivingScenario
объект в базовом рабочем пространстве. Он также конфигурирует параметры конфигурации планировщика, параметры проектирования контроллера, параметры модели транспортного средства и сигналы шины Simulink ®, необходимые для определения входов и выходов для HighwayLaneChangeTestBench
модель.
Тестовая модель содержит следующие подсистемы.
Сценарий и окружение - Подсистема, которая задает сцену, транспортные средства и данные карты, используемые для симуляции.
Параметры конфигурации планировщика - Подсистема, которая задает параметры конфигурации, необходимые для алгоритма планировщика.
Планировщик смены маршрута по шоссе - Подсистема, которая реализует алгоритм планировщика маршрута по шоссе.
Контроллер изменения маршрута - Подсистема, которая задает путь к следующему контроллеру, который генерирует команды управления, чтобы управлять автомобилем , оборудованным датчиком по сгенерированной траектории.
Динамика аппарата - Подсистема, которая задает динамическую модель для автомобиля , оборудованного датчиком.
Оценка метриков - Подсистема, которая задает метрики для оценки поведения уровня системы.
Подсистема Динамики аппарата моделирует автомобиль , оборудованный датчиком с помощью модели Bicycle Model и обновляет ее состояние с помощью команд, полученных от контроллера изменения маршрута. Для получения дополнительной информации о Динамике аппарата подсистеме смотрите Highway Lane Следующий пример.
Подсистема Scenario и Окружения использует блок Scenario Reader для обеспечения положения дорожной сети и транспортного средства основной истины. Этот блок также выводит данные карты, необходимые для алгоритма планировщика изменения маршрута магистрали. Откройте Подсистемы Сценарий и Окружение.
open_system('HighwayLaneChangeTestBench/Scenario and Environment')
Блок Scenario Reader сконфигурирован для чтения drivingScenario
объект из базового рабочего пространства. Этот объект используется для чтения данных актёра. Для выполнения симуляции с обратной связью требуется информация о автомобиле , оборудованном датчиком. Этот блок выходов основной истины информацию о полосах и актерах в координатах автомобиля , оборудованного датчиком. Блок Vehicle To World используется для преобразования позиций целевого транспортного средства из координат транспортного средства в мировые координаты. Эта подсистема считывает данные карты из базового рабочего пространства и выводит информацию о полосах и ссылочном пути.
Подсистема параметров конфигурации планировщика считывает базовое рабочее пространство переменные с помощью постоянных блоков и создает структуру шины с помощью блока Bus Creator. Шина, созданная этой подсистемой, используется планировщиком смены маршрута.
Образец модели планировщика изменения маршрута использует позиции актёра основной истины в мировых координатах, данных карты и параметрах конфигурации планировщика, чтобы выполнить планирование траектории для автоматического маневра изменения маршрута.
Образец модели Highway Lane Change Planner реализует основной алгоритм для системы изменения маршрута магистрали. Модель находит MIO, окружающие автомобиль , оборудованный датчиком, с помощью системы координат Fernet. Впоследствии модель отсчитывает конечные состояния для различного поведения, предсказывает движение целевых актёров и генерирует несколько траекторий. Наконец, модель оценивает затраты на сгенерированные траектории и проверяет возможность столкновения и кинематическую осуществимость, чтобы оценить оптимальную траекторию. Откройте образец модели планировщика изменения маршрута магистрали.
open_system('HighwayLaneChangePlanner')
Модель планировщика изменений маршрута содержит следующие блоки:
Блок Frenet State Converter преобразует положение автомобиля , оборудованного датчиком и других транспортных средств в сценарии в систему координат Frenet из мировых координат.
Блок Find MIOs идентифицирует наиболее важные объекты (MIOs), окружающие автомобиль , оборудованный датчиком.
Блок Конечное состояние Sampler выборок конечных состояний для круиз-контроля, следования за автомобилем и изменения маршрута. Модуль Предсказания Движения предсказывает движение MIO.
Образец модели Планировщика Движения генерирует оптимальную траекторию из выборочных траекторий. Эта модель проверяет выбранные траектории на стоимость, выполнимость и возможность столкновения, чтобы идентифицировать оптимальную траекторию. Этот блок также вычисляет соответствующую точку на траектории для автомобиля , оборудованного датчиком. Для получения дополнительной информации о планировщике смены маршрута смотрите Сгенерировать код для планировщика смены маршрута.
Контроллер Изменения Маршрута образца модели моделирует путь, следующий за механизмом управления, который сохраняет автомобиль , оборудованный датчиком перемещение по сгенерированной траектории при отслеживании установленной скорости. Для этого контроллер регулирует и продольный разгон, и передний угол поворота автомобиля , оборудованного датчиком. Контроллер вычисляет оптимальные действия управления, одновременно удовлетворяя ограничениям скорости, ускорения и угла поворота, используя адаптивное прогнозирующее управление (MPC). Откройте образец модели контроллера смены маршрута.
open_system('LaneChangeController')
Подсистема Virtual Lane Center создает виртуальную полосу из точки пути. Виртуальный канал соответствует формату, требуемому блоком Path Following Controller.
Подсистема Preview Curvature преобразует траекторию в вход кривизны, требуемый блоком Path Following Controller.
Блок Path Following Controller использует блок Path Following Control System (Model Predictive Control Toolbox) из Model Predictive Control Toolbox™.
Блок Path Following Controller сохраняет транспортное средство, перемещающееся по отмеченной полосе автомагистрали, сохраняя при этом заданную пользователем скорость. Этот контроллер включает в себя комбинированное продольное и боковое управление автомобиля , оборудованного датчиком:
Продольное управление поддерживает заданную пользователем скорость автомобиля , оборудованного датчиком.
Боковое управление позволяет автомобилю , оборудованному датчиком перемещаться по центральной линии своей полосы путем регулировки рулевого управления автомобиля , оборудованного датчиком.
Подсистема Metrics Assessment оценивает поведение системы на уровне системы LCM с помощью метрик, упомянутых ниже. Откройте подсистему Metrics Assessment.
open_system('HighwayLaneChangeTestBench/Metrics Assessment')
Блок DetectCollision обнаруживает столкновение автомобиля , оборудованного датчиком с другими транспортными средствами и останавливает симуляцию, если обнаружено столкновение.
Блок DetectLeadVehicle вычисляет прогресс между ego и ведущими транспортными средствами, который используется для вычисления TimeGap.
TimeGap вычисляется с использованием расстояния до ведущего транспортного средства (вперед) и продольной скорости автомобиля , оборудованного датчиком, и его оценивают с учетом предписанных пределов.
LongitudinalJerk вычисляется с помощью продольной скорости и оценивается с учетом предписанных пределов.
Значение LateralJerk вычисляется с помощью поперечной скорости, рассчитанной с учетом предписанных пределов.
Настройте и запуск модель симуляции HighwayLaneChangeTestBench, чтобы визуализировать поведение системы во время изменения маршрута. Блок Visualization в модели создает фигуру MATLAB, которая показывает вид погони и вид сверху сценария и строит графики автомобиля , оборудованного датчиком, выборочных траекторий, списка капсул и других транспортных средств в сценарии. Сконфигурируйте модель HighwayLaneChangeTestBench, чтобы использовать scenario_LC_15_StopnGo_Curved
сценарий.
helperSLHighwayLaneChangeSetup("scenarioFcnName","scenario_LC_15_StopnGo_Curved")
Моделируйте модель в течение 5 секунд. Образец модели планировщика изменения маршрута генерирует траекторию для навигации по транспортному средству в сценарии. Чтобы уменьшить выход командного окна, сначала отключите сообщения обновления MPC.
mpcverbosity('off'); sim("HighwayLaneChangeTestBench","StopTime","5");
Запустите симуляцию в течение 8 секунд. Образец модели планировщика изменения маршрута генерирует траекторию для перемещения вокруг более медленного ведущего транспортного средства.
sim("HighwayLaneChangeTestBench","StopTime","8");
Запустите симуляцию в течение 18 секунд. Образец модели планировщика смены маршрута генерирует траекторию для перемещения автомобиля на левую полосу, а затем на правую полосу, чтобы избежать столкновения с медленно движущимся ведущим транспортным средством. Заметьте, что автомобиль , оборудованный датчиком выполняет изменение маршрута дважды, чтобы избежать столкновения с сохранением заданной скорости.
sim("HighwayLaneChangeTestBench","StopTime","18");
В предыдущем разделе вы исследовали поведение системы для scenario_LC_15_StopnGo_Curved
сценарий. Ниже представлен список сценариев, совместимых с HighwayLaneChangeTestBench
модель.
scenario_LC_01_SlowMoving
scenario_LC_02_SlowMovingWithPassingCar
scenario_LC_03_DisabledCar
scenario_LC_04_CutInWithBrake
scenario_LC_05_SingleLaneChange
scenario_LC_06_DoubleLaneChange
scenario_LC_07_RightLaneChange
scenario_LC_08_SlowmovingCar_Curved
scenario_LC_09_CutInWithBrake_Curved
scenario_LC_10_SingleLaneChange_Curved
scenario_LC_11_MergingCar_HighwayEntry
scenario_LC_12_CutInCar_HighwayEntry
scenario_LC_13_DisabledCar_Ushape
scenario_LC_14_DoubleLaneChange_Ushape
scenario_LC_15_StopnGo_Curved [Default]
Эти сценарии создаются с помощью Driving Scenario Designer и экспортируются в файл сценария. Изучить комментарии в каждом файле для получения дополнительной информации о дороге и транспортных средствах в каждом сценарии. Можно сконфигурировать HighwayLaneChangeTestBench
и рабочую область, чтобы симулировать эти сценарии с помощью helperSLHighwayLaneChangeSetup
функция. Например, можно сконфигурировать симуляцию для сценария кривой дороги.
helperSLHighwayLaneChangeSetup("scenarioFcnName","scenario_LC_10_SingleLaneChange_Curved");
В этом примере показов, как симулировать маневр изменения маршрута с помощью основной истины транспортного средства положения.
Снова включите сообщения обновления MPC.
mpcverbosity('on');
trajectoryOptimalFrenet
(Navigation Toolbox)