主要内容

交通灯协商

这个例子展示了如何设计和测试在十字路口通过交通灯的决策逻辑。

介绍

通过交通灯的决策逻辑是自动驾驶应用程序的基本组成部分。决策逻辑必须对诸如交通灯和周围车辆的状态等输入做出反应。然后,决策逻辑为控制器提供所需的速度和路径。由于交通灯交叉路口的测试是危险的,模拟这样的驾驶场景可以洞察决策逻辑和控制器之间的相互作用。

这个例子展示了如何设计和测试通过交通灯的决策逻辑。本例中的决策逻辑对红绿灯的状态、到红绿灯的距离以及到前面最近的车辆的距离作出反应。在这个例子中,你会:

  1. 探索测试平台模型:模型包含交通灯传感器和环境、交通灯决策逻辑、控制和车辆动力学。

  2. 建立交通灯决策逻辑模型:交通灯决策逻辑在前车和即将到来的交通灯之间进行仲裁。它也为自我车辆在没有车道的十字路口跟随提供了参考路径。

  3. 在交通灯和引导车辆的情况下模拟左转:该模型被配置为测试交通灯决策逻辑和自我车辆控制之间的相互作用,当接近一个十字路口的前车存在。

  4. 用红绿灯和十字路口模拟左转:该模型配置为在交叉口有交叉交通时测试交通灯决策逻辑和ego车辆控制之间的相互作用。

  5. 探索其他场景:这些场景在附加条件下测试系统。

您可以应用本示例中使用的建模模式来测试您自己的决策逻辑和控制以通过交通灯。

探索试验台模型

要探索测试平台模型,请打开项目示例文件的工作副本。MATLAB®复制文件到一个示例文件夹,以便您可以编辑它们。

addpath(完整文件(matlabroot、,“工具箱”,“驾驶”,“驾驶演示”));helperDrivingProjectSetup (“TrafficLightNegotiation.zip”,“workDir”,pwd);

为探究红绿灯协商系统的行为,建立了该系统的仿真试验台模型。

open_system (“TrafficLightNegotiationTestBench”);

打开此模型将运行helperSLTrafficLightNegotiationSetup使用初始化道路场景的脚本驾驶场景对象在基本工作区中。它运行默认的测试场景,scenario_02_TLN_left_turn_with_cross_over_vehicle它包含一个自我载体和另外两个载体。该设置脚本还配置控制器设计参数、车辆模型参数和定义输入和输出所需的Simulink®总线信号万博1manbetxTrafficLightNegotiationTestBench模型。

测试台模型包含以下子系统:

  1. 传感器和环境:建模交通灯传感器,道路网络,车辆,相机和雷达传感器用于模拟。

  2. 交通灯决策逻辑:仲裁交通灯和其他前导车辆或交叉车辆在十字路口。

  3. Lane-Following控制器:产生纵向和横向控制。

  4. 车辆动力学:使用一个自行车模型块并使用接收到的命令更新其状态后巷控制器子系统。

  5. 形象化:在模拟期间绘制道路网、车辆和交通灯状态的世界坐标视图。

这个后巷控制器参考模型和车辆动力学子系统从高速公路车道后实例本例重点介绍传感器和环境交通灯决策逻辑子系统。

这个传感器和环境子系统配置道路网络,定义目标车辆轨迹,并综合传感器。打开传感器和环境子系统。

open_system (“TrafficLightNegotiationTestBench /传感器和环境”);

ego车辆上的场景和传感器由子系统的以下部分指定:

  • 这个场景阅读器块被配置为接受自我车辆信息,以执行闭环仿真。它以自我车辆坐标输出车道和行动者的地面真实信息。这个块读取驾驶场景对象变量,场景,来自基本工作空间,该工作空间包含与TrafficLightNegotiationTestBench模型。

绘制场景提供的道路网络。

hFigScenario =图(“位置”, [1 1 800 600]);情节(场景中,“父”轴(hFigScenario));

此默认场景有一个与ego车辆、一个引导车辆和一个交叉交通车辆的交叉口。

关闭图。

关闭(hFigScenario);

这个跟踪与传感器融合子系统从驱动雷达数据发生器视觉检测发电机通过使用多目标跟踪块以提供车辆周围的物体轨迹。

视觉检测发生器模块还提供了针对自我车辆的车道检测,以帮助识别存在于自我车道中的车辆。

这个红绿灯传感器子系统模拟交通灯。它被配置为在十字路口支持四个交通灯传感器万博1manbetx,TL传感器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. 您可以在三种模式下配置此功能红绿灯传感器子系统:

  1. 稳定的红色:TL传感器1TL传感器3总是处于红色状态。另外两个交通灯总是处于绿色状态。

  2. 稳定的绿色:TL传感器1TL传感器3总是处于绿色状态。另外两个红绿灯总是处于红色状态。

  3. 周期(默认):TL传感器1TL传感器3遵循一个循环模式:带有预定义时间的绿-黄-红。其他的交通灯也遵循循环模式:红绿黄,带有预定义的时间来补充TL传感器1TL传感器3

可以使用这些模式之一来配置这个子系统红绿灯传感器模式掩码参数。

打开红绿灯传感器子系统。

open_system (“交通灯协商测试台/传感器和环境/交通灯传感器”,“力”);

这个交通灯切换逻辑Stateflow®图表实现四个交通灯传感器的交通灯状态更改逻辑。所有交通灯的初始状态设置为红色。转换到不同模式是基于触发条件的,触发条件由ego车辆到车辆的距离定义TL传感器1红绿灯。这个距离由变量定义distanceToTrafficLight.如果这个距离小于,交通灯转换就会触发trafficLightStateTriggerThreshold.这个门槛目前设置为60米,并可以在helperSLTrafficLightNegotiationSetup脚本。

计算距离交通灯块计算distanceToTrafficLight使用红绿灯的位置TL传感器1,由变量定义trafficLightPosition.这是从红绿灯的位置掩模参数红绿灯传感器子系统。mask参数设置为intersectionInfo.tlSensor1Position控件在基本工作区中设置的变量helperSLTrafficLightNegotiationSetup脚本。交叉信息的输出helperGetTrafficLightScene函数。此功能用于创建与TrafficLightNegotiationTestBench模型。

交通灯决策逻辑和控制器需要以下输入来实现其功能:

  • ReferencePathInfo提供一个预定义的参考轨迹,在没有车道信息的情况下,ego车辆可以使用该轨迹进行导航。根据参考路径,ego车辆可以在十字路口笔直行驶、左转或右转。该参考路径是使用参考资料,是来自helperGetTrafficLightScene.这个函数接受一个输入参数来指定在交叉路口的行进方向。取值包括:,左边,正确的

  • IntersectionCenter提供场景中路网交叉口中心位置。这是通过交叉信息,是来自helperGetTrafficLightScene

  • 设置速度为控制器定义用户设置的速度。

交通灯决策逻辑模型

这个交通灯决策逻辑参考模型在引导车和交通灯之间进行仲裁。它还使用检测到的车道或预定义路径计算控制器所需的车道中心信息。打开交通灯决策逻辑参考模型。

open_system (“TrafficLightDecisionLogic”);

这个寻找领头车子系统从输入对象轨迹中查找当前车道中的领头车。它提供了相对距离,相对标准头车,和相对速度,relativeVelocityOfLeadCar,相对于前车而言。如果没有前导车辆,则该区块认为前导车辆存在于无限远的距离内。

这个仲裁逻辑状态流程图使用引导车辆信息,并实现在交叉口的红绿灯和引导车辆之间进行仲裁所需的逻辑。打开仲裁逻辑Stateflow图表。

open_system (“TrafficLightDecisionLogic /仲裁逻辑”);

这个仲裁逻辑状态流程图由两种状态组成,OnEntryOnRedAndYellowLightDetection.如果交通灯状态为绿色或没有交通灯检测到,状态保持为OnEntry状态如果交通灯状态为红色或黄色,则该状态转换为红色OnRedAndYellowLightDetection状态控制流根据以下情况在这些状态之间切换:trafficLightDetectiondistanceToTrafficLight变量。在每个状态下,计算与最重要物体(MIO)的相对距离和相对速度。前车和红灯被认为是mio。

OnEntry:

relativeDistance = relativeDistToLeadCar;

relativeVelocity = relativeVelocityOfLeadCar;

OnRedAndYellowLightDetection:

relativeDistance = min (relativeDistToLeadCar distanceToTrafficLight);

relativeVelocity = min (relativeVelocityOfLeadCar longitudinalVelocity);

这个longitudinalVelocity代表自我载体的纵向速度。

计算到交集的距离块计算从当前自我位置到交集中心的距离。因为十字路口没有车道,自我车辆使用这个距离返回到十字路口预定义的参考路径。

这个车道中心决策逻辑子系统根据要求计算车道中心信息路径跟踪控制系统(模型预测控制工具箱).打开车道中心决策逻辑子系统。

open_system (交通灯决策逻辑/车道中心决策逻辑);

这个车道中心决策逻辑子系统主要依赖于车道检测视觉检测发电机块估计车道中心信息,如曲率,曲率导数,横向偏移,和方向角。然而,在十字路口没有车道标记来检测。在这种情况下,可以从一个预定义的参考路径估计车道中心信息。

这个参考路径巷中心子系统根据当前自我姿态和预定义参考路径计算车道中心信息。交换机配置为使用LaneCenterFromReferencePathDistanceToIntersection小于referencePathSwitchThreshold.这个门槛目前设置为20米,并可以在helperSLTrafficLightNegotiationSetup脚本。

用红绿灯和前车模拟左转

在这个测试场景中,一辆前车在自我车道行驶并穿过十字路口。交通灯状态保持绿色为前车和红色为自我车辆。自我车辆应该跟随领头车辆,通过交通灯,然后左转。

配置TrafficLightNegotiationTestBench使用场景\u 03 \u TLN \u左转弯\u带\u引导\u车辆脚本

helperSLTrafficLightNegotiationSetup (“场景\u 03 \u TLN \u左转\u带着\u铅车”);%要减少命令窗口输出,请先关闭MPC更新消息。mpcverbosity (“关闭”);%模拟模型。sim卡(“TrafficLightNegotiationTestBench”);

绘制仿真结果。

hFigResults = helperPlotTrafficLightNegotiationResults (logsout);

检查结果。

  • 这个交通灯状态- TL传感器1该图显示了交通信号灯传感器的状态TL传感器1.它从绿色变成黄色,然后从黄色变成红色,然后重复周期模式

  • 这个相对纵向距离图中显示了ego车辆和MIO之间的相对距离。请注意,ego车辆通过与领先车辆保持安全距离,跟随领先车辆0到4.2秒。您还可以观察到,从4.2秒到9秒,此距离缩短,因为红色交通灯被检测为MIO。另外,请注意,当领先车辆超过最大允许距离后,没有MIO时,表示无限距离的间隙。

  • 这个自我加速图显示了加速度剖面后巷控制器.注意从4.2秒到4.7秒的负加速,这是对红色交通灯作为一个MIO的检测的反应。你也可以在9秒后观察到加速的增加,这是对绿灯的反应。

  • 这个自我偏航角图显示了自我飞行器的偏航角剖面。请注意12秒后的变化,这是对自我的车辆左转的反应。

关闭图。

关闭(hFigResults);

模拟有红绿灯和交叉路口的左转

此测试场景是前一个场景的扩展。除上述情况外,在本场景中,当ego车辆的交通灯为绿色时,慢速移动的交叉交通车辆位于十字路口。预计ego车辆将在左转前等待交叉口车辆通过交叉口。

配置TrafficLightNegotiationTestBench使用scenario_02_TLN_left_turn_with_cross_over_vehicle脚本

helperSLTrafficLightNegotiationSetup (“场景\u 02 \u TLN \u左转\u交叉\u翻车\u车辆”);%模拟模型。sim卡(“TrafficLightNegotiationTestBench”);

绘制仿真结果。

hFigResults = helperPlotTrafficLightNegotiationResults (logsout);

检查结果。

  • 这个交通灯状态- TL传感器1情节与前面的模拟相同。

  • 这个相对纵向距离Plot与10.5秒之前的模拟运行不同。注意交叉交通车辆的检测,作为MIO在10秒左右10米。

  • 这个自我加速Plot也对10.6处的交叉车辆作出快速反应。你可以注意到在十字路口的交叉交通车辆响应的紧急刹车剖面。

  • 这个自我偏航角图中显示,自我车辆在14秒后开始左转,以回应离开十字路口的交叉交通车辆。

关闭图。

关闭(hFigResults);

探索其他场景

在前面的部分中,您研究了场景\u 03 \u TLN \u左转弯\u带\u引导\u车辆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”);

启用MPC更新消息。

mpcverbosity (“开”);

结论

在本例中,您实现了交通灯协商的决策逻辑,并在闭环Simulink模型中使用车道跟踪控制器对其进行了测试。万博1manbetx

相关的话题