Автоматизируйте управление интеллектуальными транспортными средствами с помощью диаграмм Stateflow

Этот пример показывает, как смоделировать сценарий шоссе с интеллектуальными транспортными средствами, которые управляются той же логикой принятия решений. Каждое транспортное средство определяет, когда ускорить, замедлить или изменить полосы движения на основе логики, заданной автономным графиком Stateflow ®. Поскольку условия вождения (включая относительное положение и скорость близлежащих транспортных средств) отличаются от автомобиля к транспортному средству, отдельные объекты графика в MATLAB ® управляют отдельными транспортными средствами на шоссе.

Сценарий открытия вождения

Чтобы запустить пример, запустите скрипт sf_driver_demo.m. Скрипт отображает 3-D анимацию длинного шоссе и нескольких транспортных средств. Вид фокусируется на одном транспортном средстве и его окрестностях. Когда это транспортное средство двигается по шоссе, автономная диаграмма Stateflow sf_driver показывает логику принятия решений, которая определяет ее действия.

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

Файл класса HighwayScenario задает drivingScenario объект, который представляет 3-D окружения, которая содержит шоссе и транспортные средства на нем. Чтобы контролировать движение транспортных средств, drivingScenario объект создает массив объектов диаграммы Stateflow. Каждый объект графика управляет другим транспортным средством в симуляции.

Выполните логику принятия решений для транспортных средств

Диаграмма Stateflow sf_driver состоит из двух состояний верхнего уровня, LaneKeep и LaneChange.

Когда LaneKeep состояние активно, соответствующее транспортное средство остается на своей полосе движения. В этом состоянии существуют два возможных подсостояния:

  • Cruise активен, когда зона непосредственно перед транспортным средством пуста, и транспортное средство может перемещаться с заданной скоростью.

  • Follow становится активным, когда зона непосредственно перед транспортным средством занята, и ее целевая скорость быстрее, чем скорость транспортного средства спереди. При этом транспортное средство вынуждено тормозить и пытаться перестроиться.

Когда LaneChange состояние активно, соответствующее транспортное средство пытается перестроиться. В этом состоянии существуют два возможных подсостояния:

  • Continue активен, когда зона рядом с транспортным средством пуста, и транспортное средство может безопасно перестроиться.

  • Abort становится активным, когда зона рядом с транспортным средством занята. При этом транспортное средство вынуждено оставаться в своей полосе.

Переходы между состояниями LaneKeep и LaneChange охраняются значением isLaneChanging. В LaneKeep состояние, график устанавливает эти локальные данные на true когда substate Follow активен, и рядом с транспортным средством достаточно места, чтобы перестроиться. В LaneChange состояние, график устанавливает эти локальные данные на false когда транспортное средство заканчивает перестроение.

См. также

Похожие темы