В этом примере показано, как симулировать автоматизированную систему маневра изменения маршрута для магистрали ведущий сценарий.
Автоматизированная система маневра изменения маршрута (LCM) позволяет автомобилю, оборудованному датчиком автоматически переместиться от одной полосы до другого маршрута. Системные модели LCM продольная и боковая динамика управления для автоматизированного изменения маршрута. Система LCM обнаруживает среду для большинства важных объектов (MIOs) использование встроенных датчиков, идентифицирует оптимальную траекторию, которая избегает этих объектов и регулирует автомобиль, оборудованный датчиком вдоль этой траектории.
В этом примере показано, как спроектировать и протестировать компоненты планировщика и диспетчера системы LCM. В этом примере планировщик изменения маршрута использует информацию об основной истине из сценария, чтобы обнаружить MIOs. Это затем генерирует выполнимую траекторию, чтобы согласовать изменение маршрута, которое выполняется изменением маршрута контроллер. В этом примере, вас:
Исследуйте тестовую модель: модель содержит планирование, средства управления, динамику аппарата, датчики и метрики, чтобы оценить функциональность.
Смоделируйте подсистему планировщика изменения маршрута: подсистема содержит простой слой поведения и планировщика движения. Слой поведения конфигурирует планировщика движения, чтобы сгенерировать оптимальную траекторию путем рассмотрения информации о MIO.
Смоделируйте подсистему контроллера изменения маршрута: подсистема генерирует команды управления для автомобиля, оборудованного датчиком на основе сгенерированной траектории.
Симулируйте и визуализируйте поведение системы: тестовая модель сконфигурирована, чтобы протестировать интегрирование планирования и средств управления, чтобы выполнить маневр изменения маршрута на прямой дороге с несколькими транспортными средствами.
Исследуйте другие сценарии: Эти сценарии тестируют систему под дополнительными условиями.
Можно применить шаблоны моделирования, используемые в этом примере, чтобы протестировать собственные компоненты планировщика и диспетчера системы LCM.
В этом примере вы используете тестовую модель симуляции уровня системы, чтобы исследовать поведение компонентов планировщика и диспетчера для системы маневра изменения маршрута. Откройте тестовую модель симуляции уровня системы.
open_system('HighwayLaneChangeTestBench')
Открытие этой модели запускает helperSLHighwayLaneChangeSetup
скрипт, который инициализирует дорожный сценарий с помощью drivingScenario
объект в базовом рабочем пространстве. Это также конфигурирует параметры проектирования контроллера, параметры модели транспортного средства и сигналы шины Simulink, требуемые для определения вводов и выводов для HighwayLaneChangeTestBench
модель.
Тестовая модель содержит следующие подсистемы.
Датчики и Среда задают дорогу, транспортные средства и датчики, используемые в симуляции.
Планировщик Изменения маршрута задает поведение и траекторию, планирующую автомобиль, оборудованный датчиком.
Контроллер Изменения маршрута задает контроллер следования траектории, который генерирует команды управления, чтобы регулировать автомобиль, оборудованный датчиком вдоль сгенерированной траектории.
Динамика аппарата моделирует автомобиль, оборудованный датчиком с помощью Модели Велосипеда и обновляет ее состояние с помощью команд, полученных от Диспетчера Изменения Маршрута.
Метрическая Оценка задает метрики, чтобы оценить поведение уровня системы.
Подсистема Динамики аппарата основана на подсистеме, используемой в Магистральном примере Следующего Маршрута. Этот пример фокусируется на Подсистемах контроллера Изменения Планировщика и Маршрута Изменения Маршрута.
Подсистема Датчиков и Среды использует блоки Генератора Обнаружения Читателя и Видения Сценария, чтобы обеспечить дорожную сеть, положения основной истины транспортного средства и обнаружения маршрута, требуемые для системы маневра изменения маршрута. Откройте подсистема Среды и Датчики. Эта подсистема также выводит ссылочный путь, требуемый планировщиком изменения маршрута.
open_system('HighwayLaneChangeTestBench/Sensors and Environment')
Блок Scenario Reader сконфигурирован, чтобы считать drivingScenario
объект от базового рабочего пространства. Это использует этот объект считать данные об агенте и информацию о маршруте. Это берет в информации об автомобиле, оборудованном датчиком, чтобы выполнить симуляцию с обратной связью. Этот блок выходная информация об основной истине маршрутов и агентов в координатах автомобиля, оборудованного датчиком.
Блок Vision Detection Generator обеспечивает обнаружения маршрута относительно автомобиля, оборудованного датчиком, которые помогают в идентификации транспортных средств, существующих в маршруте эго и смежных маршрутах.
Подсистема Планировщика Изменения Маршрута использует обнаружения маршрута от блока Vision Detection Generator и агента основной истины или положений транспортного средства от Читателя Сценария, чтобы выполнить траекторию, планирующую автоматизированный маневр изменения маршрута.
Подсистема Планировщика Изменения Маршрута использует Простой Слой Поведения, чтобы сконфигурировать Планировщика Движения. Планировщик движения ответственен за генерацию траектории для маневра изменения маршрута. Откройте подсистему Планировщика Изменения Маршрута.
open_system('HighwayLaneChangeTestBench/Lane Change Planner')
Находка подсистема MIOs находит самые важные объекты относительно текущего состояния автомобиля, оборудованного датчиком.
Простая подсистема Слоя Поведения задает поведение планировщика для планировщика Движения.
Подсистема Планировщика Движения использует trajectoryOptimalFrenet
и информация о MIO, чтобы выполнить планирование траектории.
Находка подсистема MIOs использует положения транспортного средства основной истины, чтобы вычислить информацию о MIO относительно автомобиля, оборудованного датчиком. Транспортные средства, существующие в передней стороне или задней части автомобиля, оборудованного датчиком, рассматриваются как MIOs. MIOs может также быть в смежных маршрутах как показано в следующем рисунке.
Простая подсистема Слоя Поведения конфигурирует поведение планировщика путем вычисления конечных состояний, весов и значений отклонения с помощью текущей информации о состоянии автомобиля, оборудованного датчиком. Откройте Простую подсистему Слоя Поведения.
open_system('HighwayLaneChangeTestBench/Lane Change Planner/Simple Behavior Layer')
Блок EstimateCurrentEgoState использует Систему object™, HelperEstimateCurrentEgoState
, вычислить боковые и продольные положения автомобиля, оборудованного датчиком. Этот расчет сделан на пробеле Frenet с помощью текущего состояния обнаружений маршрута и автомобиля, оборудованного датчиком. Это также вычисляет информацию о смежной доступности маршрута (NoLeftLane, NoRightLane) относительно положения автомобиля, оборудованного датчиком и смещения отклонения от ссылочного пути.
Блок LongitudinalSampler задает продольный горизонт планирования как показано в следующем рисунке. Это конфигурирует возможное продольное конечное состояние для определения поведения планировщика на основе расстояния до входа продольное положение. Вход продольное положение вычисляется на основе расстояния до целевой точки.
Блок LateralSampler задает горизонт планирования ответвления как показано в следующем рисунке. Это конфигурирует возможные боковые конечные состояния для определения поведения планировщика на основе смежной доступности маршрута (NoLeftLane, NoRightLane).
Блок VelocitySampler конфигурирует возможные скоростные конечные состояния для определения поведения планировщика. Это установлено в настройку по умолчанию в этой модели.
Блок AccelerationSampler конфигурирует возможные ускоряющие конечные состояния для определения поведения планировщика. Это установлено в настройку по умолчанию в этой модели.
Шина Весов задает атрибуты, которые могут быть сконфигурированы, чтобы варьироваться профиль траектории, сгенерированный планировщиком. Они установлены в значения по умолчанию в этой модели.
Образец модели Планировщика Движения генерирует траекторию при помощи поведения планировщика, информации о сценарии и информации о MIO. Откройте образец модели Планировщика Движения.
open_system('MotionPlanner')
Блок Pulse Generator задает период переплана для блока Trajectory Generator. Значение по умолчанию установлено в 1 секунду.
Блок Trajectory Generator генерирует оптимальную траекторию на основе MIOs, ссылочного пути и заданного поведения планировщика. Этот блок использует системный объект, HelperTrajectoryGenerator
, сгенерировать необходимую траекторию. Этот Системный объект реализован с помощью trajectoryOptimalFrenet
. Это использует обновленное использование информации MIO блока проверки допустимости состояния. Несколько выборок траектории подтверждены для динамического столкновения с помощью блока проверки допустимости состояния, и оптимальная траектория идентифицирована.
Блок Extract States извлекает информацию о пути из сгенерированной траектории.
Блок Path Analyzer оценивает направляющийся угол и находит, что соответствующая точка на пути следует. Сгенерированный путь должен соответствовать дорожной форме. Эта контрольная точка на пути используется Подсистемой контроллера Изменения Маршрута.
Образец модели Контроллера Изменения Маршрута симулирует механизм управления следования траектории, который сохраняет автомобиль, оборудованный датчиком, перемещающийся вдоль сгенерированной траектории при отслеживании скорости набора. Для этого контроллер настраивает и продольное ускорение и передний руководящий угол автомобиля, оборудованного датчиком. Контроллер вычисляет действия оптимального управления в то время как удовлетворяющая скорость, ускорение и держащиеся угловые ограничения с помощью адаптивной модели прогнозирующее управление (MPC). Откройте Контроллер Изменения Маршрута образец модели.
open_system('LaneChangeController')
Виртуальная подсистема Центра Маршрута создает виртуальный маршрут из точки контура. Виртуальный маршрут совпадает с форматом, требуемым блоком Path Following Controller.
Подсистема Искривления Предварительного просмотра преобразует траекторию во вход искривления, требуемый Контроллером Следования траектории.
Блок Path Following Controller использует блок Path Following Control System из Model Predictive Control Toolbox™.
Блок Path Following Controller сохраняет транспортное средство, перемещающееся в отмеченном маршруте магистрали при поддержании установленной пользователями скорости. Этот контроллер включает объединенное продольное и боковое управление автомобиля, оборудованного датчиком:
Продольное управление обеспечивает установленную пользователями скорость автомобиля, оборудованного датчиком.
Боковое управление сохраняет автомобиль, оборудованный датчиком, перемещающийся вдоль центральной линии его маршрута путем корректировки регулирования автомобиля, оборудованного датчиком.
Метрическая подсистема Оценки оценивает поведение уровня системы системы LCM с помощью метрик, упомянутых ниже. Откройте Метрическую подсистему Оценки.
open_system('HighwayLaneChangeTestBench/Metrics Assessment')
Блок DetectCollision обнаруживает столкновение автомобиля, оборудованного датчиком с другими транспортными средствами и останавливает симуляцию, если столкновение обнаруживается.
Блок DetectLeadVehicle вычисляет прогресс между эго и ведущими транспортными средствами, который используем в вычислениях TimeGap.
TimeGap вычисляется с помощью расстояния до ведущего транспортного средства (прогресс) и продольная скорость автомобиля, оборудованного датчиком, и это оценено против предписанных пределов.
LongitudinalJerk вычислен с помощью продольной скорости и оценен против предписанных пределов.
Значение LateralJerk вычисляется с помощью боковой скорости, оцененной против предписанных пределов.
Настройте и запустите HighwayLaneChangeTestBench
имитационная модель, чтобы визуализировать поведение системы во время изменения маршрута. Блок Visualization в модели создает график птичьего глаза, который отображает информацию о маршруте, автомобиль, оборудованный датчиком, траекторию эго и другие транспортные средства в сценарии. Сконфигурируйте HighwayLaneChangeTestBench
модель, чтобы использовать scenario_LC_06_DoubleLaneChange
сценарий.
helperSLHighwayLaneChangeSetup("scenario_LC_06_DoubleLaneChange")
Симулируйте модель в течение 5 секунд. Чтобы сократить командное окно выход, сначала выключите сообщения обновления MPC.
mpcverbosity('off'); sim("HighwayLaneChangeTestBench","StopTime","5");
Запустите симуляцию в течение 8 секунд. Траектория вычисляется, чтобы перейти вокруг более медленного ведущего транспортного средства.
sim("HighwayLaneChangeTestBench","StopTime","8");
Запустите симуляцию в течение 13 секунд. Транспортное средство продолжается прямо вперед в левом маршруте.
sim("HighwayLaneChangeTestBench","StopTime","13");
В предыдущем разделе вы исследовали поведение системы для scenario_LC_06_DoubleLaneChange
сценарий. Ниже список сценариев, которые совместимы с 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 [Default] scenario_LC_07_RightLaneChange scenario_LC_08_SlowmovingCar_Curved scenario_LC_09_CutInWithBreak_Curved scenario_LC_10_SingleLaneChange_Curved
Эти сценарии создаются с помощью Driving Scenario Designer и экспортируются в файл сценария. Исследуйте комментарии в каждом файле для получения дополнительной информации на дороге и транспортных средствах в каждом сценарии. Можно сконфигурировать HighwayLaneChangeTestBench
и рабочая область, чтобы симулировать эти сценарии с помощью helperSLHighwayLaneChangeSetup
функция. Например, можно конфигурировать моделирование для кривого дорожного сценария.
helperSLHighwayLaneChangeSetup("scenario_LC_10_SingleLaneChange_Curved")
В этом примере показано, как симулировать магистральный маршрут, меняют маневр с помощью идеальных положений транспортного средства и обнаружений маршрута.
Включите сообщения обновления MPC снова.
mpcverbosity('on');