公路车道跟随RoadRunner场景
这个例子展示了如何使用在RoadRunner 3D场景编辑工具中创建的场景来配置和模拟高速公路车道跟随应用程序。此示例紧跟高速公路车道跟踪的例子。
简介
高速公路车道跟踪系统引导车辆在有标记的车道内行驶。它还能与同一车道上的前车保持一个设定的速度或安全距离。该系统通常包括视觉处理、传感器融合、决策逻辑和控制组件。为了确保功能安全性和互操作性,该系统需要在各种路况下进行测试。例如,在具有不同阴影、车道标记类型和道路材料的场景上进行测试,可以更容易地识别边缘情况。
走鹃是一个交互式编辑器,使您能够为模拟和测试自动驾驶系统设计3D场景。您可以使用RoadRunner在3D环境中创建各种复杂的道路、车道标记、路标、植被和场景。
的高速公路车道跟踪本例所基于的示例展示了如何模拟弯曲和直线道路场景的场景。这个例子演示了如何使用在RoadRunner中创建的场景来模拟场景。该场景包含阴影、车道标记类型和道路材料的变化,旨在测试视觉处理对系统功能的影响。在这个例子中,你将:
复习场景:探索在RoadRunner中创建的场景和道路片段。
将场景融入驾驶场景:将RoadRunner场景中的道路网络导出到OpenDRIVE®文件,然后将该文件导入到驾驶场景中。然后,在场景中添加一辆车辆,进行场景模拟。
将场景集成到虚幻引擎场景中:将RoadRunner场景导出到虚幻引擎®游戏,并将Simulink®模型连接到此场景。万博1manbetx导入的驾驶场景用于指定车辆姿态。在车辆上添加传感器并模拟场景。
将场景融入车道以下应用:使用前面小节中描述的技术,您可以将RoadRunner场景集成到高速公路车道跟踪场景中。然后,将额外的目标车辆添加到场景中,并在从无阴影过渡到有阴影的场景中模拟系统。
探索其他场景:模拟车道标记和道路类型变化的其他场景。将这些技术应用到您自己的设计中。
您可以使用本例中使用的建模模式和技术导入自己的场景并测试算法。
在本例中,您通过与Epic Games®的虚幻引擎集成来启用系统级模拟。此模拟环境需要Windows®64位平台。
如果~ ispc错误([“3D模拟只支持微软”万博1manbetxchar (174),...“窗口”char (174),“。”]);结束
为保证模拟结果的重现性,设置随机种子。
rng (0);
此示例还要求您下载用于虚幻引擎4项目的自动驾驶工具箱™接口支持包。万博1manbetx
pathToUnrealExe = fullfile(...matlabshared.万博1manbetxsupportpkg.getSupportPackageRoot,...“工具箱”,“共享”,“sim3dprojects”,“开车”,“RoadRunnerScenes”,....“WindowsPackage”,“RRScene.exe”);如果(~存在(pathToUnrealExe“文件”)错误(“此示例要求您下载并安装用于虚幻引擎4项目的自动驾驶工具箱接口支持包”万博1manbetx);结束
检查现场
这个例子包括一个场景(RRHighway.rrscene
)是在《RoadRunner》中设计的。如果已安装RoadRunner,则可以按照RoadRunner项目和场景系统(走鹃)主题以打开RRHighway.rrscene
现场。
这个场景被设计成对车道跟踪系统提出挑战。这张图显示了道路网络被分为六个部分。每个部分增量增加变化的场景如下:
Section 1包含没有护栏的虚线车道。
第2部分包含带有护栏的虚线车道。
第三部分增加了在车道标记上投下阴影的树木。
第4部分包含不会在车道标记上投射阴影的树木。
第5节包含实心车道标记,而不是虚线车道标记。
与其他路段相比,第六路段路面材料质地较轻。
例如,下图显示了第3部分(在车道标记上没有投射阴影的树木)和第4部分(在车道标记上有投射阴影的树木)之间的过渡。
下图显示了第4部分(虚线车道标记)和第5部分(实线车道标记)之间的过渡。
下图显示了第5部分(深色路面材料)和第6部分(浅色路面材料)之间的过渡。
将场景集成到驾驶场景中
将场景导入到驾驶场景的一个常见动机是支持添加车辆和轨迹,无论是以交互方式还是以编程方式。您可以通过以下步骤将RoadRunner场景中的道路网络集成到驾驶场景中:
从RoadRunner导出OpenDRIVE文件。
导入opdrive文件到驱动场景。
在驾驶场景中添加车辆和轨迹。
模拟驾驶场景。
从RoadRunner导出OpenDRIVE文件
RoadRunner允许您将场景导出为多种文件格式,包括OpenDRIVE®。要了解更多关于OpenDRIVE导出工作流的信息,请参见导出到ASAM OpenDRIVE(走鹃).此示例包括一个OpenDRIVE文件(RRHighway.xodr
),从RoadRunner场景导出(RRHighway.rrscene
)使用该主题中描述的过程。
导入opdrive文件到驱动场景
OpenDRIVE文件可以导入到长方体驱动场景中。要了解有关此工作流的更多信息,请参见基于Frenet参考路径的公路轨迹规划.
创建驾驶场景,导入opdrive路网。为了本例的目的,关闭来自opdrive导入器的警告。
scenario = drivingScenario;
例如,关闭opdrive导入器的警告
警告(“关闭”,“开车:场景:OpenDRIVEWarnings”);roadNetwork(场景中,“OpenDrive”,“RRHighway.xodr”);
在驾驶场景中添加车辆和轨迹
您可以通过编程方式或交互方式将车辆添加到场景中。这个例子展示了编程工作流。要以交互方式添加车辆,请使用驾驶场景设计应用程序。
使用一组预定义的路点将车辆添加到道路网络中。这些路径点是作为支持文件附加的,万博1manbetxmanualwaypoints.mat
.
V =车辆(场景,“ClassID”1);负载(“manualWaypoints.mat”,“锚点”);速度= 20;% m / s轨迹(v,路点,速度);
模拟驾驶场景
在世界坐标中绘制驾驶场景。此外,还可以使用追逐情节,从车辆的角度来描绘场景。
hFigScenario =图;P1 = uipanel(“位置”,[0 0 0.5 1]);H1 =轴(“父”, p1);情节(场景中,“锚点”,“上”,“父”、h1);P2 = uipanel(“位置”,[0.5 0 0.5 1]);H2 =坐标轴(“父”, p2);chasePlot (v,“父”、h2);
将图形的可见性设置为关闭。
集(hFigScenario,“可见”,“关闭”);
您可以选择在中继续探索、模拟和编辑场景驾驶场景设计drivingScenarioDesigner(场景)
.
将场景集成到虚幻引擎场景中
将场景导入虚幻引擎的一个常见动机是使模拟系统具有相机、雷达和激光雷达传感器模型。您可以使用以下步骤将RoadRunner场景与虚幻引擎驾驶场景模拟集成:
从RoadRunner导出虚幻引擎场景。
配置虚幻引擎场景。
创建测试台模型。
模拟试验台模型。
从RoadRunner导出虚幻引擎场景
RoadRunner支持导出到虚幻引擎场景。要了解有关此工作流的更多信息,请参见使用Filmbox (.fbx)文件导出到虚幻(走鹃).工作流包括导出Filmbox (.fbx)和XML文件,这些文件可以导入虚幻编辑器。当你在虚幻引擎编辑器中打开一个场景后,你可能想要调整其他场景方面,如照明。
这个例子使用了虚幻引擎场景(RRHighway
),从RoadRunner场景导出(RRHighway.rrscene
).
配置虚幻引擎场景
虚幻引擎场景可以与Simulink使用万博1manbetxMathWorksSimulation
插件自动驾驶工具箱接口虚幻引擎4项目万博1manbetx支持包。安装支持包的操作步骤如下万博1manbetx安装定制场景支持万博1manbetx包.
虚幻引擎场景(RRHighway
)已使用MathWorksSimulation
插件。
创建测试台模型
您可以将Simulink模型连接到虚万博1manbetx幻引擎进行联合仿真。要了解有关此工作流的更多信息,请参见在虚幻引擎环境中模拟简单的驾驶场景和传感器.开环试验台模型(RRHighwayTestBench.slx
)使用此工作流连接到虚幻引擎场景(RRHighway
).
打开该场景的测试台架模型。
open_system (“RRHighwayTestBench”);
打开此模型将运行helperSLRRHighwaySetup
脚本。属性中的“模拟3D场景配置”块RRHighwayTestBench
模型。
该模型包含了可以使用虚幻引擎模拟驾驶场景的块。
该模型还包含可视化摄像头和激光雷达传感器的模块。您可以使用鸟瞰瞄准镜从鸟瞰的角度来可视化雷达和视觉检测。要了解如何配置此作用域,请参见从虚幻引擎仿真环境中可视化传感器数据.
模拟试验台模型
模拟模型。车辆遵循在驾驶场景中定义的轨迹。
sim卡(“RRHighwayTestBench”);
将场景集成到车道跟随应用中
您可以重用前几节中描述的技术来模拟和评估一个闭环系统,例如高速公路车道跟随应用程序。中描述的模型、辅助函数和技术高速公路车道跟踪的例子。
要探索测试台架模型,请打开项目示例文件的工作副本。MATLAB™将文件复制到示例文件夹,以便您可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneFollowing.zip”,“workDir”pwd);
打开并配置系统级测试台架模型。
open_system (“HighwayLaneFollowingTestBench”);scenarioFcnName =“scenario_RRHighway_01_NoShadowToShadow”;helperSLHighwayLaneFollowingSetup (“scenarioFcnName”, scenarioFcnName);
将场景集成到驾驶场景中
的第一个参数helperSLHighwayLaneFollowingSetup
是否创建与?兼容的驾驶场景的函数的名称HighwayLaneFollowingTestBench
.的scenario_RRHighway_01_NoShadowToShadow
函数创建了这个驾驶场景。它导入RRHighway.xodr
opdrive文件并添加道路段周围的车辆,从没有阴影过渡到阴影。您可以探索这个函数,以了解更多关于创建场景的编程技术。它利用了几个辅助函数,您可以使用这些函数来简化向导入的道路网络添加车辆及其轨迹。探索scenario_RRHighway_01_NoShadowToShadow
了解更多关于helper函数及其用法的信息。
的helperSLHighwayLaneFollowingSetup
函数在基本工作空间中创建变量场景。画出这个场景,并注意将要模拟的场景区域。
hFigScenario =图;P1 = uipanel(“位置”,[0 0 0.5 1]);H1 =轴(“父”, p1);情节(场景中,“锚点”,“上”,“父”、h1);P2 = uipanel(“位置”,[0.5 0 0.5 1]);H2 =坐标轴(“父”, p2);chasePlot (scenario.Actors (1),“父”h2)
将图形的可见性设置为关闭。
集(hFigScenario,“可见”,“关闭”);
将场景集成到虚幻引擎场景中
的HighwayLaneFollowingTestBench
模型包含用于视觉检测、前向车辆传感器融合和控制的算法组件。仿真3D场景子系统将模型与驾驶场景和相应的虚幻引擎游戏集成在一起。
打开模拟3D场景子系统。
open_system (“HighwayLaneFollowingTestBench/模拟3D场景”)
注意,这个子系统重用了本例中前面描述的建模技术和模块。
主要的区别是:
自我飞行器处于闭环控制之下。
目标车辆被添加到场景中。
车道跟随的例子没有使用激光雷达传感器。
模拟该模型以查看该场景的自我载体行为。
sim卡(“HighwayLaneFollowingTestBench”);
该系统能够在有阴影的情况下检测和跟踪车道。有关如何分析模拟结果的详细信息,请参见高速公路车道跟踪的例子。
关闭该图形。
关闭(hFigScenario);
探索其他场景
这个例子提供了额外的场景,您可以使用这些场景来测试系统行为。
scenario_RRHighway_02_DashedToSolidMarkings
函数配置测试场景,使自我车辆从场景的第4部分导航到第5部分。这使得测试车道跟随应用程序从虚线车道标记过渡到实线车道标记。scenario_RRHighway_03_DarkToLightRoadMaterial
函数配置测试场景,使自我车辆从场景的第5部分导航到第6部分。这使得测试车道跟随应用从深色纹理路面材料过渡到浅色纹理路面材料。
方法配置这些场景的模型和工作区helperSLHighwayLaneFollowingSetup
函数。例如,这段代码配置测试平台,以模拟道路材料变化地区的场景。
helperSLHighwayLaneFollowingSetup (“scenarioFcnName”,...“scenario_RRHighway_03_DarkToLightRoadMaterial”);
启用来自opdrive导入器的警告。
警告(“上”,“开车:场景:OpenDRIVEWarnings”);
您可以应用这些技术将RoadRunner场景集成到驾驶场景中,以模拟和测试您的系统。