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

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

Открытый ведущий сценарий

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

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

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

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

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

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

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

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

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

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

  • Abort становится активным, когда зона рядом с транспортным средством занята. В этом случае транспортное средство обеспечено, чтобы остаться в его маршруте.

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

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

Похожие темы