使用 Stateflow 图自动控制智能车辆
此示例说明如何用由相同决策逻辑控制的智能车辆对高速公路场景进行建模。每辆车根据独立 Stateflow® 图定义的逻辑来确定何时加速、减速或变道。由于驾驶条件(包括附近车辆的相对位置和速度)因车辆而异,MATLAB® 中的单独图对象控制高速公路上的单个车辆。
打开驾驶场景
要开始该示例,请运行脚本 sf_driver_demo.m
。该脚本显示一条长长的高速公路和几辆汽车的三维动画。视图聚焦于单个车辆及其周围环境。当此车在高速公路上移动时,独立 Stateflow 图 sf_driver
显示确定其动作的决策逻辑。
从一个随机位置开始,每辆车都尝试以某个目标速度行驶。由于目标速度是随机选择的,因此车辆之间会相互阻碍。在这种情况下,车辆将尝试变道并继续以其目标速度行驶。
类文件 HighwayScenario
定义一个
对象,该对象表示包含高速公路以及其上行驶车辆的三维环境。为了控制车辆的运动,drivingScenario
(Automated Driving Toolbox)drivingScenario
对象创建一个由 Stateflow 图对象组成的数组。每个图对象在仿真中控制一个不同车辆。
为车辆执行决策逻辑
Stateflow 图 sf_driver
包含两个顶层状态:LaneKeep
和 LaneChange
。
当 LaneKeep
状态被激活时,对应的车辆保持在其车道上行驶。在此状态下,有两种可能的子状态:
当车辆正前方区域空旷且车辆能够以其目标速度行驶时,
Cruise
被激活。当车辆正前方区域被占用且其目标速度快于前方车辆的速度时,
Follow
激活。在这种情况下,车辆被迫减速并尝试变道。
当 LaneChange
状态被激活时,对应的车辆尝试变道。在此状态下,有两种可能的子状态:
当车辆旁边的区域空旷且车辆可以安全变道时,
Continue
被激活。当车辆旁边的区域被占用时,
Abort
被激活。在这种情况下,车辆被迫保持在其车道上行驶。
状态 LaneKeep
和 LaneChange
之间的转移由 isLaneChanging
的值保护。在 LaneKeep
状态下,当子状态 Follow
被激活并且车辆旁边有足够的空间来变道时,图将此局部数据设置为 true
。在 LaneChange
状态下,当车辆完成变道时,图将此局部数据设置为 false
。
另请参阅
drivingScenario
(Automated Driving Toolbox)
相关主题
- Create Stateflow Charts for Execution as MATLAB Objects
- Create Driving Scenario Programmatically (Automated Driving Toolbox)
- Create Actor and Vehicle Trajectories Programmatically (Automated Driving Toolbox)
- Define Road Layouts Programmatically (Automated Driving Toolbox)