基于状态流程图的智能车辆自动控制
这个例子展示了如何使用由相同决策逻辑控制的智能车辆对高速公路场景建模。每辆车根据独立的Stateflow®图表定义的逻辑决定何时加速、减速或变道。由于车辆之间的驾驶条件(包括附近车辆的相对位置和速度)不同,因此MATLAB®中的独立图表对象可以控制高速公路上的各个车辆。
开放式驾驶场景
要启动示例,请运行脚本sf_driver_demo.m
.剧本展示了一条漫长的高速公路和几辆汽车的3d动画。视图聚焦于一辆车及其周围环境。当这辆车沿着高速公路行驶时,独立的状态流程图sf_driver
显示决定其操作的决策逻辑。
从一个随机位置开始,每辆车都试图以目标速度行驶。由于目标速度是随机选择的,车辆可能会相互阻碍。在这种情况下,车辆会试图改变车道并恢复其目标速度。
类文件HighwayScenario
定义了一个
对象,表示包含高速公路和公路上车辆的3d环境。为了控制车辆的运动drivingScenario
(自动驾驶工具箱)drivingScenario
object创建一个状态流图对象数组。每个图表对象在模拟中控制不同的车辆。
执行车辆决策逻辑
状态流图sf_driver
由两个顶级状态组成,LaneKeep
而且LaneChange
.
当LaneKeep
状态为活动时,对应的车辆保持在其交通车道内。在这种状态下,有两种可能的次状态:
巡航
当车辆正前方的区域为空且车辆可以以其目标速度行驶时为活动状态。遵循
当车辆正前方的区域被占用,且其目标速度快于前面车辆的速度时,变为主动状态。在这种情况下,车辆被迫减速并试图改变车道。
当LaneChange
状态为活动,对应车辆尝试变道。在这种状态下,有两种可能的次状态:
继续
当车辆旁边的区域是空的,并且车辆可以安全变道时激活。中止
当车辆旁边的区域被占领时,车辆将被激活。在这种情况下,车辆被迫保持在车道上。
状态之间的转换LaneKeep
而且LaneChange
是由价值保护的isLaneChanging
.在LaneKeep
状态时,图表将此本地数据设置为真正的
当副态遵循
是主动的,并且车辆旁边有足够的空间来改变车道。在LaneChange
状态时,图表将此本地数据设置为假
当车辆完成变道时。
另请参阅
drivingScenario
(自动驾驶工具箱)
相关的话题
- 创建作为MATLAB对象执行的状态流程图
- 以编程方式创建驾驶场景(自动驾驶工具箱)
- 以编程方式创建角色和车辆轨迹(自动驾驶工具箱)
- 以编程方式定义道路布局(自动驾驶工具箱)