红绿灯谈判与虚幻引擎可视化
这个例子展示了如何设计和谈判模拟车辆交通信号灯在虚幻引擎®驾驶模拟环境。
介绍
对谈判决策逻辑红绿灯是自动驾驶的基本组件的应用程序。决策逻辑与控制器引导自我车辆根据交通灯的状态和其他车辆在自我车道上。模拟真实的交通场景与现实条件可以提供更多的洞察之间的交互决策逻辑控制器。自动驾驶工具箱™提供了一个3 d仿真环境由虚幻引擎从史诗游戏®®。您可以使用此引擎形象化的运动车辆在一个预先构建的3 d场景。这台发动机提供了一个直观的方法来分析谈判时决策逻辑与控制算法的性能在一个十字路口的红绿灯。
如何设计决策逻辑的信息和控制谈判红绿灯在长方体的环境中,看到了红绿灯谈判的例子。这个例子展示了如何在一个虚幻的场景控制交通灯,然后如何模拟和可视化工具行为不同的测试场景。在本例中,您将:
探索试验台的结构模型:模型包含传感器和环境,红绿灯决策逻辑、控制和车辆动力学。
控制交通灯的不真实的场景:
模拟
3 d
交通
光
控制器
辅助块配置模型来控制交通灯的状态在一个虚幻的场景通过使用仿真软件®。金宝app绿色,红色过渡期间模拟车辆的行为:模型分析之间的交互决策逻辑控制器当交通灯状态转换从绿色到红色和自我汽车在停止线的距离10米。
模拟车辆行为在红绿色转型:模型分析决策逻辑之间的交互和控制器当红绿灯转换从红色到绿色和自我车辆从停止线11米的距离。在这种情况下,自我的车辆也协商作为另一个车辆穿过十字路口红绿灯。
探索其他场景在附加条件下:这些场景测试系统。
您可以应用在这个例子中使用的建模模式来测试自己的决策逻辑谈判和控制交通信号灯的不真实的场景。
在本例中,您通过集成与虚幻引擎启用系统级模拟。这种环境需要一个Windows®64位平台。
如果~ ispc错误([“3 d模拟仅支持微软的金宝appchar (174),“窗口”char (174),“。”]);结束
探索试验台的结构模型
探索试验台模型,将工程实例文件复制到一个工作文件夹。使用workDir
论点的helperDrivingProjectSetup
函数来指定文件路径。文件路径的长度必须小于25个字符,以避免最大字符限制为Windows文件路径。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“TLNUnreal.zip”,“workDir”pwd);
探索红绿灯谈判的行为系统,打开仿真试验台模型系统。
open_system (“TLNWithUnrealTestBench”);
打开这个模型运行helperSLTrafficLightNegotiationWithUnrealSetup
脚本初始化存储作为一个测试场景drivingScenario
对象的基本工作空间。默认的测试场景,scenario_03_TLN_straight_greenToRed_with_lead_vehicle
,包含一个自我车辆和两个non-ego车辆。这也设置脚本配置控制器的设计参数,车辆模型参数,仿真软件®总线定义的输入和输出信号金宝appTLNWithUnrealTestBench
模型。
试验台模型包含以下子系统:
传感器和环境:道路网络模型、车辆、摄像头、雷达传感器用于仿真。该子系统使用
模拟
3 d
交通
光
控制器
辅助块来控制交通信号灯的状态在一个虚幻的场景。红绿灯决策逻辑:断定红绿灯和其他导致车辆或cross-traffic车辆在十字路口。
Lane-Following控制器:为自我生成纵向和横向控制车辆。
车辆动力学:自我车辆使用的模型自行车模型块并使用命令收到更新其状态后巷控制器参考模型。
的红绿灯决策逻辑,后巷控制器参考模型和车辆动力学子系统的重用红绿灯谈判的例子。这个例子中修改传感器和环境子系统,使其兼容与一个虚幻场景模拟。
的传感器和环境子系统配置道路网络,集车辆位置,综合传感器和融合雷达和视觉传感器的车辆检测。打开传感器和环境子系统。
open_system (“TLNWithUnrealTestBench /传感器和环境”);
选择场景
所需的场景和道路网络试验台模型指定的以下部分子系统:
的场景的读者块以自我车辆信息作为输入并执行闭环模拟。该块读取
drivingScenario
对象场景
从基础工作空间。场景包含所需的道路网络。公路网络匹配的部分我们街区的场景,包含一个十字路口。
您可以显示所选部分的美国城市街区现场使用helperDisplayTrafficLightScene
函数。
指定x和y限制区域选择所需的场景和情节提取的场景。
xlimit = (-110 - 70);ylimit = (-105 - 105);hFigure = helperDisplayTrafficLightScene (xlimit ylimit);snapnow;关闭(hFigure);
的helperGetTrafficLightScenario
函数指定一个参考路径自我时应遵循的车辆车道信息是不可用的。的参考路径信息块读取存储在基本工作空间变量的引用路径referencePathInfo
。自我车辆直接或可以在十字路口左转基于参考轨迹。你可以选择其中一个参考轨迹通过设置输入的值helperGetTrafficLightScenario
函数。将值设置为
直
——使自我汽车旅行穿过十字路口。
左
——使自我车辆在十字路口左转。
的设置速度阻止读取速度值基本工作空间变量setVelocity
并给出了作为控制器的输入。
将车辆的位置
场景包含一个自我车辆和两个non-ego车辆。每辆车的位置指定的场景是这些地区的子系统:
的模拟3 d车辆与地面块提供了一个接口,改变车辆的位置和姿态的3 d场景。
的自我输入端口控制自我车辆的位置,这是规定的
模拟
3 d
车辆
与
地面
后
1块。的ActorName
面具的参数模拟
3 d
车辆
与
地面
后
1块被指定为EgoVehicle
。
的长方体3 d仿真块将自我构成坐标系(关于下面的中心车辆后桥)的3 d仿真坐标系(关于以下车辆中心)。
的场景的读者块也输出通道的地面实况信息和演员的姿势在自我车辆坐标系为目标车辆。有两个目标车辆在本例中,指定的其他仿真3 d车辆与地面块。
的汽车世界块将演员构成坐标从自我车辆坐标转换为世界坐标。
的跟踪和传感器融合子系统融合车辆检测驾驶雷达数据生成器和视觉检测发电机块和跟踪融合检测使用多目标跟踪块提供对象自我车辆周围的轨道。视觉检测发电机块还提供了对自我车辆车道检测有助于识别车辆出现在自我的车道。
控制红绿灯不真实的场景
这个模型使用模拟3 d交通灯控制器辅助块配置和控制交通信号灯的状态在一个虚幻的场景。的模拟3 d交通灯控制器辅助控制交通信号灯的状态使用基于定时器
或基于状态的
模式。您可以选择使用所需的模式控制
模式
面具参数。默认情况下,该模型使用基于状态的
模式。的信息基于定时器
模式,看到块面具描述。
在基于状态的
模式下,块覆盖指定的交通灯的状态交通
光
ID
输入端口。的值交通
光
ID
输入端口设置的intersectionInfo.trafficLightToNegotiate
变量helperGetTrafficLightScenario
函数。在这个模型中,的值交通
光
ID
输入端口设置为16。这意味着与ID值16块控制交通灯在美国城市街区的场景。美国所有的红绿灯出现在美国街区返回的场景地面
真理
输出端口的模拟
3 d
交通
光
控制器
辅助块。决策逻辑的模型试验和控制通过使用地面实况信息,不需要基于知觉红绿灯检测。
的交通
光
选择
块提取交通灯的状态的ID值16地面
真理
输出。的红绿灯决策逻辑参考模型使用国家价值引导汽车和交通信号灯之间的仲裁。更多的信息红绿灯决策逻辑参考模型,请参阅红绿灯谈判的例子。
的红绿灯停止线的位置块提供了在十字路口停止线位置对应于选中的红绿灯trafficLightToNegotiate
。停止线位置值是指定的intersectionInfo.tlStopLinePosition
。
的十字路口中心块提供了十字路口的位置中心道路网络的场景。这是获得使用intersectionInfo
,一个输出helperGetTrafficLightScenario
。
测试通常是很重要的自我时的决策逻辑并控制车辆接近红绿灯和交通信号灯改变其状态。在这个例子中使用的模型使交通灯改变状态时EgoVehicle
接近交通灯。
的距离
来
交通
光
停止
行
块之间的欧氏距离计算停止线对应于选中的红绿灯trafficLightToNegotiate
和当前自我车辆位置。
的红绿灯决策逻辑使用价值的距离来决定最重要的对象(绪),最接近的对象前面的自我。它可以导致车辆或交通信号灯在自我车道上。
的红绿灯切换逻辑块输出tlState
交通灯的状态,需要集。这是实现使用Stateflow®和使用的距离值触发状态变化时EgoVehicle
靠近红绿灯比指定的距离。
打开红绿灯切换逻辑块。
open_system (“TLNWithUnrealTestBench /传感器和环境/红绿灯切换逻辑”,“力”);
红绿灯切换逻辑使用配置参数
面具参数读取红绿灯配置,trafficLightConfig
,从基本工作空间。您可以使用trafficLightConfig
结构配置不同的测试场景。这个结构是在测试场景中定义的函数和有以下字段:stateChangeDistance
,initialState
,changeState
。
initialState
指定的状态前的红绿灯状态改变。
stateChangeDistance
指定的阈值距离EgoVehicle
交通灯的状态会发生改变。
changeState
指定的状态状态改变后设置红绿灯。
状态切换发生时基于一组配置EgoVehicle
到达stateChangeDistance
。当initialState
是红色的
和changeState
是绿色
Stateflow图开关红色的
州绿色
状态。相反,当initialState
是绿色
和changeState
是红色的
Stateflow图建模,这样的状态转换发生绿色
州黄色的
状态和后一秒,交通电灯开关红色的
状态。
绿色,红色过渡期间模拟车辆的行为
本节测试时的决策逻辑自我在近距离车辆交通信号灯和交通信号灯状态改变从绿色到红色。在这个测试场景中,领先汽车旅行自我车道,穿过十字路口。铅的交通灯状态保持绿色车辆和变红时,自我车辆的距离10米停止线。自我汽车预计将效仿车辆,谈判状态转换,完全停止在停止线。
配置TLNWithUnrealTestBench
模型使用scenario_03_TLN_straight_greenToRed_with_lead_vehicle
测试场景。
helperSLTrafficLightNegotiationWithUnrealSetup (…“scenario_03_TLN_straight_greenToRed_with_lead_vehicle”);
显示trafficLightConfig
结构参数设置测试场景。
disp (trafficLightConfig ');
initialState: 2 stateChangeDistance: 10 changeState: 0
模拟模型。在仿真过程中,日志发布所需的信号仿真分析模型logsout
。
减少命令窗口输出,首先关闭MPC更新消息。
mpcverbosity (“关闭”);sim卡(“TLNWithUnrealTestBench”);
仿真结果使用helperPlotTrafficLightControlAndNegotiationResults
函数。
hFigResults = helperPlotTrafficLightControlAndNegotiationResults (logsout trafficLightConfig.stateChangeDistance);
检查结果。
的交通灯的状态图显示了交通灯的状态。的距离红绿灯停止线情节展示了自我的车辆之间的距离和相对应的停止线红绿灯。你可以看到交通灯是绿色的初始状态和状态变化从绿色变成黄色自我车辆接近停止线。自我时的状态改变从黄色到红色汽车在停止线的距离10米。
的相对纵向距离图展示了自我的车辆之间的相对距离和最重要的对象(绪)。绪是最接近的对象前面的自我。它可以导致车辆或交通信号灯在自我车道上。自我车辆遵循领导的车辆并维护一个安全的距离当交通灯状态是绿色的。自我和领队汽车减少之间的距离,当红绿灯转换从绿色到红色。这是因为,当自我车辆接近停止线,检测到红绿灯绪。在这一点上的时候,红绿灯状态要么是红色或黄色。
的自我加速图显示了从加速度概要文件后巷控制器。密切注意到这是蘸的相对距离,在反应的检测红色交通灯作为绪。
的自我速度情节展示了自我的车辆的速度剖面。注意自我速度减慢反应黄色和红色交通信号灯和完整的停在停止线。这可以通过比较验证情节距离红绿灯停止线当速度为零。
你可以参考红绿灯谈判例子来了解更多关于这个分析和决策逻辑之间的交互和控制器。
关闭图。
关闭(hFigResults);
模拟车辆行为在红绿色转型
本节测试时的决策逻辑自我在近距离车辆交通信号灯和交通信号灯状态改变从红色变为绿色。此外,cross-traffic车辆在十字路口的交通灯是绿色的自我。最初的红色交通灯状态自我自我车时车辆和变绿的距离从停止线11米。自我汽车预计将放缓,因为它接近交通灯是红色的时候,必须开始加速当交通灯状态从红色变为绿色。它也将等待cross-traffic车辆通过路口前加速继续旅行。
测试场景功能scenario_04_TLN_straight_redToGreen_with_cross_vehicle
实现了这一场景。配置TLNWithUnrealTestBench
使用这个场景模型。
helperSLTrafficLightNegotiationWithUnrealSetup (…“scenario_04_TLN_straight_redToGreen_with_cross_vehicle”);
显示trafficLightConfig
结构参数设置测试场景。
disp (trafficLightConfig ');
initialState: 0 stateChangeDistance: 11 changeState: 2
模拟模型。
sim卡(“TLNWithUnrealTestBench”);
仿真结果。
hFigResults = helperPlotTrafficLightControlAndNegotiationResults (logsout trafficLightConfig.stateChangeDistance);
检查结果。
的交通灯的状态图显示,初始交通灯状态是红色的。交通灯的状态从红色变为绿色时自我车辆的距离从停止线11米。
的相对纵向距离情节紧密遵循距离红绿灯停止线阴谋,因为没有领导车辆。注意到突然下降的相对距离的检测交叉车。
的自我加速图显示,自我车辆试图减缓看见红色交通灯。然而,在应对绿色的状态改变,你可以观察加速度的增加。你可以注意到一个需要大力刹车概要的cross-traffic车辆在十字路口。
的自我速度情节紧密遵循自我加速情节和显示下降速度当自我车辆接近十字路口。你也可以注意到一个轻微的增加速度响应绿色交通灯和随后的减少在应对cross-traffic车辆的速度。
关闭图。
关闭(hFigResults);
探索其他场景
在前面的章节中,您研究的系统行为scenario_03_TLN_straight_greenToRed_with_lead_vehicle
和scenario_04_TLN_straight_redToGreen_with_cross_vehicle
场景。下面是一个场景兼容列表TLNWithUnrealTestBench
。
scenario_01_TLN_left_redToGreen_with_lead_vehicle scenario_02_TLN_straight_greenToRed scenario_03_TLN_straight_greenToRed_with_lead_vehicle(默认)scenario_04_TLN_straight_redToGreen_with_cross_vehicle
使用这些额外的场景来分析TLNWithUnrealTestBench
在不同条件下。
使货币政策委员会更新消息。
mpcverbosity (“上”);
您可以使用建模模式在这个例子构建自己的红绿灯谈判程序。
另请参阅
模拟3 d场景配置|模拟3 d车辆与地面|汽车世界|长方体3 d仿真|驾驶雷达数据生成器|视觉检测发电机|多目标跟踪