В этом примере показано, как смоделировать магистральный сценарий с интеллектуальными транспортными средствами, которыми управляет та же логика решения. Каждое транспортное средство определяет, когда убыстриться, замедлиться, или перестроиться на другую полосу на основе логики, заданной автономной диаграммой Stateflow®. Поскольку условия движения (включая относительное положение и скорость соседних транспортных средств) отличаются от транспортного средства до транспортного средства, отдельные объекты диаграммы в MATLAB® управляют отдельными транспортными средствами на магистрали.
Чтобы запустить пример, запустите скрипт sf_driver_demo.m
. Скрипт отображает 3-D анимацию длинной магистрали и нескольких транспортных средств. Представление фокусируется на одном транспортном средстве и его среде. Когда это транспортное средство проходит магистраль, автономная диаграмма Stateflow sf_driver
показывает логику решения, которая определяет ее действия.
Начиная со случайного положения, каждое транспортное средство пытается переместиться на целевой скорости. Поскольку целевые скорости выбраны наугад, транспортные средства могут затруднить друг друга. В этой ситуации транспортное средство попытается перестроиться на другую полосу и возобновить его целевую скорость.
Файл класса HighwayScenario
задает
объект, который представляет 3-D среду, которая содержит магистраль и транспортные средства на ней. Управлять движением транспортных средств, drivingScenario
drivingScenario
объект создает массив объектов диаграммы Stateflow. Каждый объект диаграммы управляет различным транспортным средством в симуляции.
Диаграмма Stateflow sf_driver
состоит из двух состояний верхнего уровня, LaneKeep
и LaneChange
.
Когда LaneKeep
состояние активно, соответствующее транспортное средство остается на своей полосе движения. В этом состоянии существует два возможных подсостояния:
Cruise
активно, когда зона непосредственно перед транспортным средством пуста, и транспортное средство может переместиться на своей целевой скорости.
Follow
становится активным, когда зона непосредственно перед транспортным средством занята, и его целевая скорость быстрее, чем скорость транспортного средства впереди. В этом случае транспортное средство обеспечено, чтобы замедлиться и попытаться перестроиться на другую полосу.
Когда LaneChange
состояние активно, соответствующее транспортное средство пытается перестроиться на другую полосу. В этом состоянии существует два возможных подсостояния:
Continue
активно, когда зона рядом с транспортным средством пуста, и транспортное средство может перестроиться на другую полосу безопасно.
Abort
становится активным, когда зона рядом с транспортным средством занята. В этом случае транспортное средство обеспечено, чтобы остаться в его маршруте.
Переходы между состояниями LaneKeep
и LaneChange
охраняются значением isLaneChanging
. В LaneKeep
состояние, график устанавливает эти локальные данные на true
когда Follow
подсостояния активно и существует достаточно комнаты около транспортного средства, чтобы перестроиться на другую полосу. В
LaneChange
состояние, график устанавливает эти локальные данные на false
когда транспортное средство закончило перестраиваться на другую полосу.