主要内容

公路车道跟随与RoadRunner场景

这个例子展示了如何模拟高速公路车道跟随应用程序,设计在Simulink®,与RoadRunner场景。

介绍

RoadRunner Scenario是一个交互式编辑器,它使您能够设计模拟和测试自动驾驶系统的场景。您可以在场景中放置车辆,定义它们的路径和交互,然后在编辑器中模拟场景。RoadRunner Scenario支持编辑器内回放,用于场景可视化,并连接到其他模拟器,如MATLAB®和Simulink,用于共同仿真。

高速公路车道跟随系统引导车辆在其车道内行驶。它还与同一车道上的领先车辆保持固定的速度或安全距离。高速公路车道跟踪系统通常使用摄像头和雷达传感器来检测车道和车辆。它使用视觉处理算法来检测来自摄像头的图像中的车道和车辆,然后将来自摄像头的车辆检测与来自雷达的检测融合以提高其感知的鲁棒性。控制器使用车道检测、车辆检测和设定速度来控制转向和加速。本示例展示了如何使用RoadRunner场景与Simulink高速公路车道跟随测试台架模型进行协同模拟公路车道跟随的例子。

该图显示了RoadRunner场景、高速公路车道跟踪试验台模型和虚幻引擎®仿真环境之间交换信息的概述。高速公路车道跟随模型从RoadRunner场景中读取所有actor运行时,并在虚幻引擎仿真环境中传递actor姿态和自我姿态信息。的ego vehicle has attached camera and radar sensors in Unreal Engine simulation environment and the highway lane following model gets the ground truth lane boundaries, camera images, and radar detections from these sensors. The model uses this information to control the ego vehicle and write back the new ego pose to RoadRunner Scenario.

在这个例子中,你:

  • 设置环境-配置MATLAB设置与RoadRunner场景交互。

  • 探索RoadRunner场景-探索模拟高速公路车道跟随系统所需的RoadRunner场景和场景。

  • 探索试验台模型-测试台架包含RoadRunner场景的接口,高速公路车道跟踪模型,以及使用地面真实数据评估模型性能的指标评估子系统。

  • 模拟车道跟随场景-用RoadRunner场景和虚幻引擎模拟车道跟随场景。

  • 探索其他场景—这些场景在附加条件下测试系统。

这个例子显示了与Epic Games®虚幻引擎的联合仿真,这需要Windows®64位平台。

如果~ ispc错误([“虚幻引擎模拟只支持微软”char (174),“窗口”char (174),“。”])结束

搭建环境

本节展示如何设置环境,以与RoadRunner Scenario共同模拟高速公路车道跟随系统。

指定本地RoadRunner安装文件夹的路径。这段代码显示了Windows上默认安装位置的路径。

rrAppPath ="C:\Program Files\RoadRunner R2022b\bin\win64"

指定你的RoadRunner项目的路径。这段代码显示了Windows上示例项目文件夹的路径。

rrProjectPath =“C: \ RR \ MyProjects”

使用项目的指定路径打开RoadRunner。

rrApp = roadrunner(rrProjectPath);

rrAppRoadRunner对象使您能够从MATLAB工作空间与RoadRunner进行交互。您可以使用此对象打开场景并更新场景变量。有关此对象的详细信息,请参见走鹃

打开高速公路车道文件的工作副本,跟随RoadRunner Scenario项目。MATLAB将文件复制到示例文件夹中,以便您可以编辑它们。

helperDrivingProjectSetup (“HLFWithRRScenario.zip”workDir = pwd);

将RoadRunner场景、场景和行为文件复制到RoadRunner项目中。

hlfwithrscenario project = currentProject;projectPath = convertStringsToChars(hlfwiththrrscenario project . rootfolder);projectRootFolder = projectPath(1:find(projectPath== .)“\”, 1“最后一次”) 1);拷贝文件(fullfile (projectRootFolder,“HLFTestScenarios /走鹃/场景”), fullfile (rrProjectPath,“场景”)复制文件(fullfile (projectRootFolder,“HLFTestScenarios /走鹃/场景”), fullfile (rrProjectPath,“场景”)复制文件(fullfile (projectRootFolder,“HLFWithRRScenario / TestBench / HLF.rrbehavior.rrmeta”), fullfile (rrProjectPath,“资产”“行为”))

探索RoadRunner场景

中的场景重用公路车道跟随以《RoadRunner》为例。此示例使用HLFCurvedRoad.rrscene模拟高速公路车道跟随模型。该场景包含一条双向、四车道、弯曲的高速公路。该场景中的道路中心和车道标记与虚幻引擎仿真环境提供的一段弯曲道路场景紧密匹配。打开场景。

openScene (rrApp“HLFCurvedRoad.rrscene”

scenario_LFACCRR_03_Curve_StopnGo.rrscenario文件是一个RoadRunner场景,与HighwayLaneFollowingRRTestBench模型。这是一个开环场景,在弯曲的道路上包含多个目标车辆。这个例子使用了RoadRunner场景中的车辆资产,这些资产与虚幻引擎模拟环境中的车辆非常匹配。你需要RoadRunner Asset Library许可证才能在RoadRunner场景中渲染这些车辆。

在这种情况下,当其他车辆在相邻车道行驶时,前面的车辆在前面减速。打开场景。

openScenario (rrApp“scenario_LFACCRR_03_Curve_StopnGo.rrscenario”

控件为其指定自定义行为,以模拟ego车辆的车道跟随行为HLF.rrbehavior.rrmeta文件。

连接到RoadRunner场景服务器进行联合仿真createSimulation功能和启用数据记录。

rrSim = createssimulation (rrApp);设置(rrSim日志=“上”);

rrSim是一个仿真软件。ScenarioSimulation对象。使用此对象可设置变量并读取场景和地图相关信息。

高速公路车道跟踪应用程序被设计为以0.1的步长运行。设置RoadRunner场景的模拟步长。

Ts = 0.1;集(rrSim StepSize = Ts)

探索试验台模型

在本例中,您使用系统级模拟测试台架模型来模拟和测试车道跟随模型的行为,并使用RoadRunner Scenario。打开试验台模型。

open_system (“HighwayLaneFollowingRRTestBench”

测试台架模型包含RoadRunner场景块,它们配置、读取和写入RoadRunner场景。它还包含这些模块:

  • 传感器与车辆-子系统,指定和更新虚幻引擎仿真环境以及用于仿真的相机和雷达传感器。

  • 打包演员姿势- MATLAB系统对象™,从RoadRunner场景中读取的目标演员的驾驶场景兼容姿势,为虚幻引擎仿真环境中的车辆提供输入。

  • 车道标志检测器—在摄像头捕捉到的帧中检测车道边界的算法模型。

  • 车辆检测器-在摄像机传感器捕获的帧中检测车辆的算法模型。

  • 前方车辆传感器融合-融合来自摄像头和雷达传感器的车辆检测的算法模型。

  • 车道跟随决策逻辑-算法模型,指定横向和纵向决策逻辑,向控制器提供与最重要对象(MIO)和车道中心相关的信息。

  • 车道跟随控制器-指定转向角度和加速控制的算法模型。

  • 车辆动力学-指定自我车辆动态模型的子系统。

  • 指标的评估-评估系统级和组件级行为的子系统。

车道标志检测器车辆检测器前方车辆传感器融合车道跟随决策逻辑车道跟随控制器车辆动力学,指标的评估子系统是基于子系统中所使用的公路车道跟随的例子。这个例子主要关注RoadRunner场景块和传感器与车辆子系统。

RoadRunner场景模块

RoadRunner场景模块包括:

  • 走鹃场景-定义角色模型的接口。

  • 自我姿势阅读器- RoadRunner场景阅读器块读取自我姿势。

  • 演员姿势解读器- RoadRunner场景阅读器块,读取目标演员的姿势。

  • 自我姿态作家- RoadRunner Scenario Writer块,将更新后的自我姿态写回RoadRunner Scenario。

传感器与车辆分系统

传感器与车辆子系统在虚幻引擎仿真环境中指定传感器和车辆。目标演员在虚幻引擎模拟环境中使用RoadRunner场景更新他们的姿势。摄像传感器和雷达传感器附在ego车辆上。他们从虚幻引擎仿真环境中捕获图像和雷达检测,并将检测结果提供给高速公路车道跟随系统的算法模型进行进一步处理。

打开传感器与车辆子系统。

open_system (“highwaylanefollowinggrrtestbench /传感器和车辆”

仿真3D场景配置街区是指场景和道路网络。它的SceneName参数值为弯曲的道路

车辆位置由子系统的这些部分指定:

  • 自我目标在RoadRunner场景中,输入分别指定自我和目标车辆的当前位置。

  • HelperConvertDSPoseToSim3D系统将驾驶场景兼容姿态从RoadRunner场景转换为仿真3D车辆地面跟随块使用的X,Y和偏角坐标。

  • 每一个模拟3D车辆与地面跟随块在虚幻引擎仿真环境中在指定位置实现车辆。

  • HeplerComputeGroundTruthBoxes系统对象™使用接收到的实际角色位置计算地面真值车辆边界框场景的读者块和标记图像数据从接收模拟三维摄像机块。

传感器有一个父母的名字的参数值模拟3D车辆与地面跟随将它们分配给自我载体:

模拟车道跟随场景

禁用MPC更新消息。

mpcverbosity (“关闭”);

此示例使用helperSLHighwayLaneFollowingWithRRSetup辅助函数,用于设置自我和目标参与者配置文件以及传感器参数。这些值与场景相关,可以根据所选场景进行更改。

helperSLHighwayLaneFollowingWithRRSetup (rrApp rrSim scenarioFileName =“scenario_LFACCRR_03_Curve_StopnGo”

当您第一次编译图时,这个模型可能需要几分钟的时间来更新图。在运行模拟之前更新模型。

set_param (“HighwayLaneFollowingRRTestBench”SimulationCommand =“更新”

模拟场景,观察自我车辆如何保持在当前车道上并调整速度以避免与领先车辆碰撞。

设置(rrSim SimulationCommand =“开始”比较字符串(rrSim.get (“SimulationStatus”),“运行”)暂停(1)结束

绘制横向控制器性能结果。

hFigLatResults = helperPlotLFLateralResults(logsout);

关闭图形。

关上(hFigLatResults)

检查仿真结果。

  • 检测到车道边界横向偏移量该图显示了检测到的左车道和右车道边界相对于车道中心线的横向偏移量。检测值与车道真实值接近,但有少量偏差。

  • 横向偏差该图显示了自驾车与车道中心线的横向偏差。理想情况下,横向偏差为0米,这意味着自我车辆完全沿着中心线行驶。当车辆改变速度以避免与另一辆车相撞时,会发生小的偏差。

  • 相对偏航角该图显示了小车与车道中心线之间的相对偏航角。相对偏航角非常接近0弧度,这意味着自我车辆的航向角与中心线的偏航角非常匹配。

  • 转向角图显示了自我车辆的转向角度。

绘制纵向控制器性能结果。

hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,default_spacing);

关闭图形。

关上(hFigLongResults)

检查仿真结果。

  • 相对纵向距离该图显示了自我飞行器与MIO之间的距离。在这种情况下,自我车辆接近并接近MIO,或者在某些情况下超过安全距离。

  • 相对纵向速度该图显示了ego飞行器与MIO之间的相对速度。在本例中,车辆检测器仅检测位置,因此控制算法中的跟踪器估计速度。估计速度小于实际(地面真实)MIO相对速度。

  • 绝对加速度如图所示,当车辆过于靠近MIO时,控制器会命令车辆减速。

  • 绝对速度从图中可以看出,自我车辆最初遵循设定的速度,但当MIO减速时,自我车辆也会减速以避免碰撞。

在仿真期间,模型将信号记录到基本工作空间logsout并记录摄像头传感器的输出forwardFacingCamera.mp4。你可以使用helperPlotLFDetectionResultsRR函数将模拟检测可视化,类似于如何在基于传感器融合的前方碰撞预警的例子。您还可以将可视化检测记录到视频文件中,以供无法访问MATLAB的其他人查看。

绘制记录数据的检测结果,生成视频,并打开视频查看器应用程序。

hVideoViewer = helperPlotLFDetectionResultsRR(logsout,“forwardFacingCamera.mp4”摄像头、雷达、“scenario_LFACCRR_03_Curve_StopnGo”actorProfiles,“RecordVideo”,真的,“RecordVideoFileName”“scenario_LFACCRR_03_Curve_StopnGo”+“_VPA”“OpenRecordedVideoInVideoViewer”,真的,“VideoViewerJumpToTime”, 11.0);

探索其他场景

的行为scenario_LFACCRR_03_Curve_StopnGo.rrscenario场景,其中使用HLFCurvedRoad.rrscene现场。您可以使用相同的测试台架模型来探索其他场景。控件兼容的附加场景HighwayLaneFollowingWithRRTestBench模型。

  • scenario_LFRR_01_Straight_RightLane.rrscenario

  • scenario_LFRR_02_Straight_LeftLane.rrscenario

  • scenario_LFRR_03_Curve_LeftLane.rrscenario

  • scenario_LFRR_04_Curve_RightLane.rrscenario

  • scenario_LFACCRR_01_Curve_DecelTarget.rrscenario

  • scenario_LFACCRR_02_Curve_AutoRetarget.rrscenario

  • scenario_LFACCRR_03_Curve_StopnGo.rrscenario

  • scenario_LFACCRR_04_Curve_CutInOut.rrscenario

  • scenario_LFACCRR_05_Curve_CutInOut_TooClose.rrscenario

  • scenario_LFACCRR_06_Straight_StopandGoLeadCar.rrscenario

的场景曲线关键字中使用HLFCurvedRoad.rrscene。其余场景使用|HLFStraightRoad。Rrscene b|场景,其中包含一条双向、四车道、直的高速公路。您可以使用此命令打开场景。

openScene (rrApp“HLFStraightRoad.rrscene”

这些场景代表两种类型的测试。

  • 的场景scenario_LFRR_前缀测试车道检测和车道跟随算法没有其他车辆的阻碍。

  • 的场景scenario_LFACCRR_在自我车辆的传感器覆盖区域内与其他车辆预先测试车道检测和车道跟随算法。

你可以在RoadRunner中探索这些场景。例如,打开scenario_LFACCRR_06_Straight_StopandGoLeadCar.rrscenario场景下,输入该命令。

openScenario (rrApp“scenario_LFACCRR_06_Straight_StopandGoLeadCar.rrscenario”

您可以配置HighwayLaneFollowingWithRRTestBench模型来模拟这些场景helperSLHighwayLaneFollowingWithRRSetup函数。例如,要配置模型以运行scenario_LFACCRR_06_Straight_StopandGoLeadCar.rrscenario场景下,输入该命令。

helperSLHighwayLaneFollowingWithRRSetup (rrApp rrSim scenarioFileName =“scenario_LFACCRR_06_Straight_StopandGoLeadCar”

启用MPC更新消息。

mpcverbosity (“上”);

另请参阅

相关的话题

Baidu
map