红绿灯谈判
这个例子展示了如何设计和测试决策逻辑的谈判在一个十字路口的红绿灯。
介绍
对谈判决策逻辑交通灯是一个自动驾驶的基本组件的应用程序。决策逻辑必须应对输入交通灯的状态和周围的车辆。然后,决策逻辑为控制器提供了所需的速度和路径。由于红绿灯十字路口是危险的试验,模拟这样的驾驶场景可以提供洞察决策逻辑的交互和控制器。
这个例子展示了如何设计和测试谈判红绿灯的决策逻辑。本例中的决策逻辑对交通灯的状态,距离红绿灯,距离最近的车辆。在本例中,您将:
探索试验台模型:模型包含红绿灯传感器和环境,红绿灯决策逻辑、控制和车辆动力学。
交通灯决策逻辑模型:交通信号灯之间的决策逻辑断定车辆和即将到来的红绿灯。它还提供了一个参考路径自我车辆跟随在一个十字路口车道的缺失。
模拟一个红绿灯左转和引导车辆:模型配置为测试交通灯决策逻辑之间的交互和控制自我的车辆,在接近一个十字路口的车辆。
模拟一个左转交通红绿灯和交叉:模型配置为测试交通灯决策逻辑之间的交互和控制自我的车辆当十字交叉路口的交通。
探索其他场景在附加条件下:这些场景测试系统。
您可以应用在这个例子中使用的建模模式来测试自己的决策逻辑,控制交通信号灯进行谈判。
探索试验台模型
探索试验台模型,打开一个工程实例文件的工作副本。MATLAB®将文件复制到一个文件夹中,这样您就可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“TrafficLightNegotiation.zip”,“workDir”pwd);
探索红绿灯谈判的行为系统,打开仿真试验台模型系统。
open_system (“TrafficLightNegotiationTestBench”);
打开这个模型运行helperSLTrafficLightNegotiationSetup
脚本初始化道路场景中使用drivingScenario
对象的基本工作空间。它运行默认的测试场景,scenario_02_TLN_left_turn_with_cross_over_vehicle
,包含一个自我车辆和两个其他车辆。这也设置脚本配置控制器的设计参数,车辆模型参数,仿真软件®总线信号定义所需的输入和输出金宝appTrafficLightNegotiationTestBench
模型。
试验台模型包含以下子系统:
传感器和环境:红绿灯传感器模型,道路网络,汽车,摄像机和雷达传感器用于仿真。
红绿灯决策逻辑:断定红绿灯和其他导致车辆或交叉车辆在十字路口。
Lane-Following控制器:产生纵向和横向控制。
车辆动力学:自我车辆使用的模型自行车模型块并使用命令收到更新其状态后巷控制器子系统。
可视化:情节世界坐标的道路网络,汽车,在模拟交通灯的状态。
的后巷控制器参考模型和车辆动力学子系统的重用高速公路车道后的例子。这个例子中关注的传感器和环境和红绿灯决策逻辑子系统。
的传感器和环境子系统配置道路网络,定义目标车辆轨迹,综合传感器。打开传感器和环境子系统。
open_system (“TrafficLightNegotiationTestBench /传感器和环境”);
指定的场景和自我车辆上的传感器是由以下子系统的部分:
的场景的读者块被配置为在自我车辆信息进行闭环仿真。它输出地面实况信息通道和演员的自我车辆坐标。该块读取
drivingScenario
对象变量,场景
从基本工作空间,其中包含道路网络兼容TrafficLightNegotiationTestBench
模型。
图提供的道路网络的场景。
hFigScenario =图(“位置”[1 1 800 600]);情节(场景中,“父”轴(hFigScenario));
这个默认场景与自我车辆有一个十字路口,一辆车,和一个cross-traffic车辆。
关闭图。
关闭(hFigScenario);
的跟踪和传感器融合子系统融合车辆检测驾驶雷达数据生成器和视觉检测发电机通过使用一个块多目标跟踪块提供对象自我车辆周围的轨道。
视觉检测发电机块还提供了对自我车辆车道检测有助于识别车辆出现在自我的车道。
的红绿灯传感器子系统模拟交通信号灯。它被配置为支持四个十字路口红绿灯传感器,金宝appTL传感器1,TL传感器2,TL传感器3,TL传感器4。
情节场景与红绿灯传感器。
hFigScenario = helperPlotScenarioWithTrafficLights ();
注意到,这是相同的场景,只添加了红绿灯传感器。这些传感器由红圈在十字路口,指示红色交通信号灯。交通信号灯的标签1,2,3,4对应于TL传感器1,TL传感器2,TL传感器3,TL传感器4,分别。
关闭图。
关闭(hFigScenario);
的测试场景TrafficLightNegotiationTestBench
这样自我配置车辆协商TL传感器1。有三种模式中,您可以配置红绿灯传感器子系统:
稳定的红色:TL传感器1和TL传感器3总是在一个红色的状态。其他两个红绿灯总是绿色的状态。
稳定的绿色:TL传感器1和TL传感器3总是在一个绿色的状态。其他两个红绿灯总是红色状态。
周期(默认):TL传感器1和TL传感器3遵循循环模式:绿-黄-红的预定义的计时。其他交通信号灯也遵循一个循环模式:使用预定义的计时red-green-yellow补充TL传感器1和TL传感器3。
您可以配置这个子系统在使用其中一个模式红绿灯传感器模式
面具参数。
打开红绿灯传感器子系统。
open_system ([“TrafficLightNegotiationTestBench /”…传感器和环境/红绿灯传感器的),“力”);
的红绿灯切换逻辑Stateflow®图实现了交通灯状态改变四个交通灯逻辑传感器。初始状态的红绿灯设置为红色。过渡到一个不同的模式是基于触发器条件定义为自我车辆的距离TL传感器1红绿灯。这个距离是定义的变量distanceToTrafficLight
。红绿灯转换如果这个距离小于触发trafficLightStateTriggerThreshold
。目前这个阈值设置为60米,可以改变的helperSLTrafficLightNegotiationSetup
脚本。
红绿灯块计算的计算距离distanceToTrafficLight
使用红绿灯的位置TL传感器1,定义的变量trafficLightPosition
。这是得到的红绿灯的位置
面具的参数红绿灯传感器子系统。面具参数设置的值intersectionInfo.tlSensor1Position
,一个变量的基本工作空间helperSLTrafficLightNegotiationSetup
脚本。intersectionInfo
结构是一个输出helperGetTrafficLightScene
函数。这个函数是用来创建兼容的测试场景TrafficLightNegotiationTestBench
模型。
以下输入所需的红绿灯决策逻辑控制器实现的功能:
ReferencePathInfo提供了一个预定义的参考轨迹,可以通过自我导航没有车道上信息的工具。自我车可以直走,左转,右转或十字路口基于参考路径。这个引用路径得到使用
referencePathInfo
,一个输出helperGetTrafficLightScene
。这个函数接受一个输入参数指定的方向旅行的十字路口。可能的值是:直
,左
,正确的
。IntersectionCenter提供了十字路口的位置中心道路网络的场景。这是获得使用
intersectionInfo
,一个输出helperGetTrafficLightScene
。设置速度定义了用户集的速度控制器。
红绿灯决策逻辑模型
的红绿灯决策逻辑参考模型断定领先汽车和红绿灯。也计算车道中心控制器所需的信息,使用检测车道或预定义的路径。打开红绿灯决策逻辑参考模型。
open_system (“TrafficLightDecisionLogic”);
的发现领导的车子系统发现导致汽车在当前车道从输入对象的踪迹。它提供了相对距离,relativeDistToLeadCar和相对速度,relativeVelocityOfLeadCar关于车辆。如果没有汽车,那么这个块认为导致车辆出现在无限的距离。
的仲裁逻辑Stateflow图表使用领先的汽车信息和实现所需要的逻辑仲裁之间的交叉路口红绿灯,导致车辆。打开仲裁逻辑Stateflow图表。
open_system (“TrafficLightDecisionLogic /仲裁逻辑”);
的仲裁逻辑Stateflow图包含两个州,OnEntry
和OnRedAndYellowLightDetection
。如果交通灯状态是绿色或者没有红绿灯信号检测,国家仍在OnEntry
状态。如果交通灯状态是红色或黄色,然后的状态转换OnRedAndYellowLightDetection
状态。这些国家基于之间的控制流开关trafficLightDetection
和distanceToTrafficLight
变量。在每个国家,相对距离和相对速度对最重要的对象(绪)计算。领队汽车和红色交通灯视为绪。
OnEntry:
relativeDistance = relativeDistToLeadCar
;
relativeVelocity = relativeVelocityOfLeadCar
;
OnRedAndYellowLightDetection:
relativeDistance = min (relativeDistToLeadCar distanceToTrafficLight)
;
relativeVelocity = min (relativeVelocityOfLeadCar longitudinalVelocity)
;
的longitudinalVelocity代表了自我纵向速度的车辆。
计算距离十字路口块计算距离十字路口中心从当前自我位置。因为十字路口没有车道,自我车辆使用这个距离回落到预定义的参考路径的十字路口。
的车道中心决策逻辑子系统计算车道中心所需的信息路径跟踪控制系统(模型预测控制工具箱)。打开车道中心决策逻辑子系统。
open_system (“TrafficLightDecisionLogic /巷中心决策逻辑”);
的车道中心决策逻辑主要依靠的车道检测子系统视觉检测发电机块估计巷中心信息,如曲率、曲率导数,横向偏移和航向角。然而,没有交叉路口车道标记来检测。在这种情况下,车道中心的信息可以从一个预定义的估计参考路径。
的参考路径巷中心子系统计算车道中心信息基于当前自我构成和预定义的参考路径。配置为使用一个开关LaneCenterFromReferencePath当DistanceToIntersection小于referencePathSwitchThreshold
。目前这个阈值设置为20米,可以改变的helperSLTrafficLightNegotiationSetup
脚本。
模拟与红绿灯,左转车辆
在这个测试场景中,领先汽车旅行自我车道,穿过十字路口。交通灯的状态保持绿色车辆和变红的自我。自我汽车预计将效仿车辆,谈判红绿灯,左拐。
配置TrafficLightNegotiationTestBench
模型使用scenario_03_TLN_left_turn_with_lead_vehicle
场景。
helperSLTrafficLightNegotiationSetup (…“scenario_03_TLN_left_turn_with_lead_vehicle”);%减少命令窗口输出,首先关闭MPC更新消息。mpcverbosity (“关闭”);%模拟模型。sim卡(“TrafficLightNegotiationTestBench”);
仿真结果。
hFigResults = helperPlotTrafficLightNegotiationResults (logsout);
检查结果。
的交通灯状态- TL传感器1图显示了红绿灯传感器的状态TL传感器1。它从绿色变为黄色,然后从黄色到红色,然后重复周期模式。
的相对纵向距离图展示了自我的车辆之间的相对距离和绪。注意自我车辆遵循领导的车辆从0到4.2秒通过维护一个安全的距离。你也可以观察到从4.2到9秒,这个距离减少,因为红色交通灯检测作为绪。还要注意差距代表无限的距离当没有铅后绪绪的车辆超过允许的最大距离。
的自我加速图显示了从加速度概要文件后巷控制器。注意到负加速度从4.2到4.7秒,在反应的检测红色交通灯作为绪。你也可以观察加速度的增加9秒之后,为了应对绿色交通灯。
的自我偏航角图显示了偏航角的自我。注意到变化在12秒后此概要,以应对自我车辆左转。
关闭图。
关闭(hFigResults);
模拟左转交通红绿灯和交叉
这个测试场景的扩展之前的场景。除了前面的条件,在这个场景中,一个缓慢cross-traffic车辆在十字路口的交通灯是绿色的自我。自我车辆预计前等待cross-traffic车经过十字路口左转。
配置TrafficLightNegotiationTestBench
模型使用scenario_02_TLN_left_turn_with_cross_over_vehicle
场景。
helperSLTrafficLightNegotiationSetup (…“scenario_02_TLN_left_turn_with_cross_over_vehicle”);%模拟模型。sim卡(“TrafficLightNegotiationTestBench”);
仿真结果。
hFigResults = helperPlotTrafficLightNegotiationResults (logsout);
检查结果。
的交通灯状态- TL传感器1情节是一样的一个以前的模拟。
的相对纵向距离情节发散从之前的模拟运行从10.5秒开始。注意cross-traffic车辆的检测绪在10秒10米左右。
的自我加速情节也迅速回应cross-traffic车辆为10.6。您可以注意到一个需要大力刹车概要的cross-traffic车辆在十字路口。
的自我偏航角图显示,自我车辆启动14秒后左转,为了应对cross-traffic车辆离开十字路口。
关闭图。
关闭(hFigResults);
探索其他场景
在前面的章节中,您研究的系统行为scenario_03_TLN_left_turn_with_lead_vehicle
和scenario_02_TLN_left_turn_with_cross_over_vehicle
场景。下面是一个场景兼容列表TrafficLightNegotiationTestBench
。
(默认)scenario_01_TLN_left_turn scenario_02_TLN_left_turn_with_cross_over_vehicle scenario_03_TLN_left_turn_with_lead_vehicle scenario_04_TLN_straight scenario_05_TLN_straight_with_lead_vehicle
使用这些额外的场景来分析TrafficLightNegotiationTestBench
在不同条件下。例如,尽管学习交通灯决策逻辑之间的交互和控制,它可以帮助开始一个场景,有一个有红绿灯的十字路口,但没有汽车。配置模型和空间对于这样一个场景,使用这段代码:
helperSLTrafficLightNegotiationSetup (…“scenario_04_TLN_straight”);
使货币政策委员会更新消息。
mpcverbosity (“上”);
结论
在本例中,您决策逻辑实现对交通灯谈判和测试后用车道控制器闭环仿真软件模型。金宝app