主要内容

公路车道与RoadRunner场景

这个例子展示了如何使用RoadRunner 3D场景编辑工具创建的场景来配置和模拟高速公路车道。这个例子紧随着高速公路车道后的例子。

介绍

高速公路车道跟踪系统引导车辆在标明的车道内行驶。它还能与同一车道上的前车保持一定的速度或安全距离。该系统通常包括视觉处理、传感器融合、决策逻辑和控制组件。为了确保功能的安全性和互操作性,该系统需要在各种道路条件下进行测试。例如,在具有不同阴影、车道标记类型和道路材料的场景中进行测试,可以更容易地识别边缘情况。

走鹃是一个交互式编辑器,使您能够设计3D场景模拟和测试自动驾驶系统。您可以使用RoadRunner在3D环境中创建道路、车道标记、路标、植被和具有不同复杂性的场景。

高速公路车道后本示例所基于的示例演示了如何模拟弯道和直线道路场景。这个例子演示了如何用在RoadRunner中创建的场景来模拟场景。该场景包含阴影、车道标记类型和道路材料的变化,旨在测试视觉处理对系统功能的影响。在这个例子中,你会:

  1. 复习场景:探索在RoadRunner中创建的场景和道路片段。

  2. 将场景融入驾驶场景:将RoadRunner场景中的路网导出到opdrive®文件中,然后将该文件导入到驾驶场景中。然后,在场景中添加车辆并模拟场景。

  3. 将场景集成到虚幻引擎场景:将RoadRunner场景导出到一个虚幻引擎®游戏中,并将一个Simulink®模型连接到这个场景。金宝app导入的驾驶场景指定车辆姿态。在车辆上添加传感器并模拟场景。

  4. 将场景整合到车道以下应用:使用前几节中描述的技术,您可以将RoadRunner场景集成到高速公路车道跟踪场景中。然后,在场景中添加额外的目标车辆,并在从无阴影过渡到阴影的场景中模拟系统。

  5. 探索更多的场景:模拟车道标记和道路类型变化的附加场景。将这些技术应用到您自己的设计中。

您可以使用本例中使用的建模模式和技术来导入您自己的场景并测试算法。

在本例中,您可以通过集成Epic Games®的虚幻引擎来实现系统级模拟。该模拟环境需要Windows®64位平台。

如果~ ispc错误([“只有微软支持3D模拟”金宝appchar (174),...“窗口”char (174),“。”]);结束

为保证仿真结果的再现性,设置随机种子。

rng (0);

本例还要求您下载虚幻引擎4项目的自动驾驶工具箱™接口支持包。金宝app

pathToUnrealExe = fullfile (...matlabshared.金宝appsupportpkg.getSupportPackageRoot,...“工具箱”“共享”“sim3dprojects”“开车”“RoadRunnerScenes”...“WindowsPackage”“RRScene.exe”);如果(~存在(pathToUnrealExe“文件”)错误(“本例要求您下载并安装虚幻引擎4项目的自动驾驶工具箱接口支持包”金宝app);结束

检查现场

这个例子包括一个场景(RRHighway.rrscene)这是在RoadRunner中设计的。如果您已经安装了RoadRunner,您可以按照RoadRunner项目和场景系统(走鹃)主题打开RRHighway.rrscene现场。

这个场景的设计是为了挑战车道跟随系统。这张图片显示,道路网络被分为六个部分。每个部分都在场景中增加了如下变化:

  • 第1节包含没有护栏的虚线车道。

  • 第2节包含带有护栏的虚线车道。

  • 第三部分增加了在车道标记上投下阴影的树木。

  • 第4节包含了不会在车道标记上投下阴影的树木。

  • 第5节包含实线车道标记而不是虚线车道标记。

  • 第6节与其他路段相比纹理较轻的路面材料。

例如,下图显示了Section-3(没有在车道标记上投阴影的树)和Section-4(有在车道标记上投阴影的树)之间的转换。

下图显示了Section-4(带有虚线标记)和Section-5(带有实线标记)之间的过渡。

下图显示了Section-5(深色道路材料)和Section-6(浅色道路材料)之间的过渡。

将场景融入驾驶场景

将场景导入到驾驶场景的一个常见动机是允许添加车辆和轨迹,可以是交互式的,也可以是程序化的。通过使用以下步骤,您可以将RoadRunner场景中的道路网络集成到驾驶场景中:

  1. 从RoadRunner导出OpenDRIVE文件。

  2. 将OpenDRIVE文件导入驱动场景。

  3. 在驾驶场景中添加车辆和轨迹。

  4. 模拟驾驶的场景。

从RoadRunner导出opdrive文件

RoadRunner允许您将场景导出到许多文件格式,包括OpenDRIVE®。要了解有关OpenDRIVE导出工作流的更多信息,请参见导出到ASAM opdrive(走鹃).这个例子包括一个OpenDRIVE文件(RRHighway.xodr),从RoadRunner场景导出(RRHighway.rrscene),使用该主题中描述的过程。

将OpenDRIVE文件导入驱动场景

OpenDRIVE文件可以导入到长方体驱动场景中。要了解有关此工作流的更多信息,请参见基于Frenet参考路径的公路轨迹规划

创建一个驾驶场景,导入opdrive道路网络。对于本例,请关闭来自OpenDRIVE导入器的警告。

场景= drivingScenario;roadNetwork(场景中,“OpenDrive”“RRHighway.xodr”);

在驾驶场景中添加车辆和轨迹

您可以以编程方式或交互方式向场景添加车辆。这个示例展示了编程工作流。要以交互方式添加车辆,请使用驾驶场景设计师应用程序。

使用一组预定义的路点将车辆添加到道路网络中。这些路径点作为支持文件附加,金宝appmanualwaypoints.mat

v =车辆(场景);负载(“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场景与虚幻引擎驾驶场景模拟集成在一起:

  1. 从RoadRunner导出虚幻引擎场景。

  2. 配置虚幻引擎场景。

  3. 创建测试台模型。

  4. 模拟试验台模型。

从RoadRunner导出虚幻引擎场景

RoadRunner可以导出到虚幻引擎场景。要了解有关此工作流的更多信息,请参见导出到虚幻使用Filmbox (.fbx)文件(走鹃).工作流包括导出Filmbox (.fbx)和XML文件,可以导入到虚幻编辑器。当你在虚幻引擎编辑器中打开一个场景后,你可能想要调整其他场景方面,如光照。

这个例子使用了一个虚幻引擎场景(RRHighway),从RoadRunner场景导出(RRHighway.rrscene).

配置虚幻引擎场景

虚拟引擎场景可以与Simulink使用金宝appMathWorksSimulation插件的虚幻引擎4项目的自动驾驶工具箱接口金宝app支持包。要安装支持包,请按照步骤金宝app安装自定义场景的金宝app支持包

虚幻引擎场景(RRHighway)中使用的MathWorksSimulation插件。

创建测试平台模型

你可以连接一个Simulink模型到金宝app虚幻引擎进行联合仿真。要了解有关此工作流的更多信息,请参见在虚幻引擎环境中模拟简单的驾驶场景和传感器.开环试验台模型(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.xodropdrive文件,并添加道路段周围的车辆,从无阴影过渡到阴影。您可以研究此函数以了解更多关于创建场景的编程技术。它利用了几个助手功能,您可以使用这些功能来简化添加车辆及其轨迹到导入的道路网络。探索scenario_RRHighway_01_NoShadowToShadow了解更多有关帮助器函数及其用法的信息。

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 /模拟3 d场景”

注意,这个子系统重用了前面在本示例中描述的建模技术和块。

主要的区别是:

  • 自我飞行器处于闭环控制之下。

  • 目标车辆被添加到场景中。

  • 下面示例的车道不使用激光雷达传感器。

模拟模型,以看到自我车辆行为的场景。

sim卡(“HighwayLaneFollowingTestBench”);

该系统能够在有阴影的情况下检测和跟踪车道。有关如何分析模拟结果的更多细节,请参阅高速公路车道后的例子。

关闭图。

关闭(hFigScenario);

探索更多的场景

这个示例提供了可以用于测试系统行为的其他场景。

  • scenario_RRHighway_02_DashedToSolidMarkings功能配置测试场景,使ego车辆从场景的第4节导航到第5节。这使得测试车道从虚线车道标记转换为实线车道标记的应用程序。

  • scenario_RRHighway_03_DarkToLightRoadMaterial功能配置测试场景,使ego车辆从场景的第5节导航到第6节。这使得测试车道的应用程序从较暗的纹理道路材料到较轻的纹理道路材料。

您可以使用这些场景配置模型和工作区helperSLHighwayLaneFollowingSetup函数。例如,这段代码配置了测试台,以模拟道路材料变化地区的场景。

helperSLHighwayLaneFollowingSetup (“scenarioFcnName”...“scenario_RRHighway_03_DarkToLightRoadMaterial”);

您可以应用这些技术将RoadRunner场景集成到驾驶场景中,以模拟和测试您的系统。

另请参阅

功能

应用程序

相关的话题