Автоматизируйте управление интеллектуальных транспортных средств при помощи диаграмм 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 когда Follow подсостояния активно и существует достаточно комнаты около транспортного средства, чтобы перестроиться на другую полосу. В LaneChange состояние, график устанавливает эти локальные данные на false когда транспортное средство закончило перестраиваться на другую полосу.

Смотрите также

Похожие темы