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