高速公路巷后面

这个例子展示了如何用控制器、传感器融合和视觉处理组件来模拟高速公路车道的跟踪应用。这些组件在3D仿真环境中进行测试,其中包括摄像机和雷达传感器模型。

介绍

高速公路车道之后的系统使车辆带入标记的车道内。它还将设定的速度或安全距离保持在同一车道中的前车辆。该系统通常使用视觉处理算法来检测来自相机的车道和车辆。然后,来自相机的车辆检测与雷达的检测融合,以改善检测围绕车辆的能力。控制器使用车道检测,车辆检测和设定速度来控制转向和加速度。

此示例演示了如何创建测试台模型以测试3D仿真环境中的视觉处理,传感器融合和控制。测试台模型可以配置为不同的场景,以测试遵循车道的能力并避免与其他车辆碰撞。在这个例子中,你:

  1. 探索测试台模型:该模型包含视觉处理、传感器融合、控制、车辆动力学、传感器和评估功能的指标。

  2. 可视化测试场景:场景中有一条弯曲的道路,有多辆车。

  3. 用概率检测传感器模拟:该模型配置为使用概率视觉检测传感器模型来测试传感器融合和控制的集成。在集成完整视觉处理算法之前,这有助于评估基线行为。

  4. 用视觉处理算法进行模拟:测试台模型配置为测试视觉处理,传感器融合和控制组件的集成。

  5. 探索其他方案:这些场景在额外的条件下测试系统。

测试控制器的集成和感知算法需要一个照片拟真的仿真环境。在此示例中,您可以通过与虚幻引擎集成来启用系统级模拟。3D仿真环境需要Windows®64位平台。

如果~ ispc错误(“3D仿真环境需要Windows 64位平台”);结尾

为确保模拟结果的再现性,请设置随机种子。

RNG(0)

探索测试台模型

在此示例中,使用系统级仿真测试台模型模型来探索控制器跟随系统的控制和视觉处理算法的行为。打开系统级仿真测试台模型。

Open_System(“HighwayLaneAledingTestbench”

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

  1. 仿真3D场景:指定用于仿真的道路,车辆,相机和雷达传感器

  2. 视觉探测器变体:指定两种不同视觉检测算法的保真度

  3. 向前车辆传感器融合:熔化从视觉和雷达传感器获得的自我车辆前面的车辆的检测

  4. 决策和控制器之后的车道:指定横向和纵向决策逻辑和控制器后的车道

  5. 车辆动态:指定自我车辆的动力学模型

  6. 指标评估:评估系统级行为

前车辆传感器融合,巷道之后的决策和控制器,车辆动态和度量评估子系统基于所使用的子系统使用传感器融合和车道检测控制后巷道(自动驾驶工具箱)。本示例重点介绍仿真3D场景和视觉检测器变体子系统。

仿真3D场景子系统配置道路网络,设置车辆位置,合成传感器。打开模拟3D场景子系统。

Open_System(“HighwayLaneAledingTestBench / Simulation 3D情景”

场景和道路网络由子系统的这些部分指定:

  • 仿真3D场景配置块有场景参数设置为弯曲的道路

  • 情景读者块被配置为使用包含一个紧密匹配的道路网络的道路网络的驾驶场景。

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

  • Ego输入端口控制Ego车辆的位置,这是由地面跟随1块的模拟3D车辆指定的。

  • 汽车世界块将actor从输入的自我车辆的坐标转换为世界坐标。

  • 情景读者块输出actor姿势,控制目标车辆的位置。这些车辆由另一个车辆指定模拟3D带地面的车辆块。

  • 长方体到3D模拟块将自我姿态坐标系统(相对于车辆后桥中心以下)转换为三维仿真坐标系统(相对于车辆中心以下)。

附着于自我车辆的传感器由子系统的这些部分指定:

  • 仿真3D相机块是附加到自我车辆捕捉它的正面视图。该块输出的图像通过视觉处理算法进行处理,检测车道和车辆。

  • 仿真3D概率雷达配置块连接到自助式车辆中以检测3D模拟环境中的车辆。

  • 测量偏置中心到后桥块转换的坐标系统仿真3D概率雷达配置块(相对于车辆中心下方)到姿势坐标(相对于车辆后轴的中心下方)。

视觉探测器变体子系统允许您根据要运行的测试类型选择视觉检测算法的保真度。打开视觉探测器变量子系统。

Open_System(“HighwayLaneFollowingTestBench /视觉探测器变体”

  • 概率检测传感器变体使您能够在3D仿真环境中测试控制算法的集成,而不需要集成视觉处理算法。该变体使用一个视觉检测生成器块综合车辆和车道检测基于actor地面真实位置。该配置可以帮助您在不使用视觉处理算法的情况下,在3D仿真环境中验证与车辆和雷达传感器的交互。

  • 视觉处理算法变体使您可以测试控制算法和视觉处理算法在3D仿真环境中的集成。打开视觉处理算法变体。

Open_System(“HighwayLaneAledingTestbench / Vision Detector变量/视觉处理算法”

本变型采用了基于MATLAB的车道边界和车辆检测算法使用单眼相机的视觉感知(自动驾驶工具箱)的例子。与那个例子的主要区别是,在这个例子中,车道边界检测和车辆检测算法被分离成单独的组件。车道标记检测器是一个可以生成C代码的参考模型。该参考模型使用System对象™,HelperlanemarkerDetector,检测车道标记。它还包含一个车道跟踪器,可以提高在拥挤条件下的车道检测的性能。视觉车辆探测器使用HelperVisionvehicledetector系统对象检测车辆。这些系统对象将输出数据包装到总线,如进一步处理所需的。由于视觉处理算法在摄像机传感器返回的图像上操作,因此视觉处理算法比概率检测传感器变体更长。

可视化测试场景

辅助功能场景_lfacc_03_curve_stopngo.生成与兼容的驾驶场景HighwayLanealedingtestbench.模型。这是弯曲道路上的开环场景,包括多个目标车辆。道路中心和车道标记与3D仿真环境提供的弯曲道路场景的一部分紧密匹配。该方案具有与模型相同的车辆,它们具有相同的尺寸。在这种情况下,铅车辆在自我车辆前面减速,而其他车辆在相邻的车道中行驶。

绘制开环场景,以查看自我车辆和目标车辆的交互。

Hfigscenario = Helperplotlfscenario(“scenario_LFACC_03_Curve_StopnGo”);

EGO车辆不在闭环控制下,因此通过较慢的移动引线车辆发生碰撞。闭环系统的目标是跟随车道并保持与铅车辆的安全距离。在里面HighwayLanealedingtestbench.模型中,自我飞行器具有与开环场景相同的初始速度和初始位置。

用概率视觉检测传感器模拟

为了验证与车辆的交互和雷达传感器正常工作,使用概率视觉检测传感器测试控制算法和3D仿真环境之间的相互作用。这样做使您能够验证基线系统行为而无需整合全视图处理算法。配置测试台模型并运行模拟。

helperSLHighwayLaneFollowingSetup (......“scenario_LFACC_03_Curve_StopnGo”......“probabilisticDetectionsensor”);mpcverbosity (“关闭”);SIM(“HighwayLaneAledingTestbench”

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

hFigLatResults = helperPlotLFLateralResults (logsout);

检查模拟结果。

  • 检测车道边界横向偏移图显示了检测到的左道和右车道边界的横向偏移。检测到的值接近通道的地面真相。

  • 横向偏差绘图显示自我车辆从车道的中心线的横向偏差。横向偏差接近0,这意味着自助式车辆紧密地跟随中心线。当车辆改变速度时,发生小偏差以避免与另一辆车碰撞。

  • 相对偏航角该图显示了自驾驶车辆与车道中心线之间的相对偏航角。相对偏航角非常接近于0,这意味着自我飞行器的航向角与中心线的偏航角非常接近。

  • 转向角图显示了自我车辆的转向角。转向角轨迹光滑。

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

hfiglongresults = helperplotlflongitudinalresults(logsout,time_gap,......default_spacing);

检查模拟结果。

  • 相对纵向距离图显示了自我车辆与最重要的物体(MIO)之间的距离。MIO代表了作为自我车辆的相同车道之前最近的车辆。在这种情况下,自我车辆接近MIO并在某些情况下接近它或超过安全距离。

  • 相对纵向速度图显示了自我车辆和MIO之间的相对速度。在该示例中,视觉处理算法仅检测位置,因此控制算法中的跟踪器估计速度。估计的速度滞后于实际(地面真相)MIO相对速度。

  • 绝对加速度plot显示,当车辆太靠近MIO时,控制器会命令车辆减速。

  • 绝对速度情节显示,自我车辆最初遵循设定的速度,但当MIO减速时,为了避免碰撞,自我车辆也减速。

在仿真期间,模型将信号记录到基本工作区logsout并记录相机传感器的输出forwardfacingcamera.mp4..你可以使用plotlfdetectionResults.函数来可视化模拟检测,类似于如何在中探索记录的数据使用传感器融合向前碰撞警告(自动驾驶工具箱)的例子。您还可以将可视化检测记录到视频文件,以便由无法访问MATLAB的其他人进行审核。

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

Hvideoviewer = HelperplotlfdetectionResults(......LogSout,“forwardFacingCamera.mp4”,情景,相机,雷达,......场景,......“录视频”, 真的,......“recordvideofilename”scenarioFcnName +“_pds”......“OpenRecordedVideoInvideoviewer”, 真的,......“VideoViewerJumpToTime”,10.6);

播放生成的视频。

  • 前置摄像头显示相机传感器返回的图像。左侧车道边界在红色绘制,右车道边界以绿色绘制。这些通道由概率检测传感器返回。追踪的检测也覆盖在视频上。

  • 鸟瞰图显示真正的车辆位置,传感器覆盖区域,概率检测和轨道输出。绘图标题包括模拟时间,以便您可以将视频与先前静态图之间的事件相关联。

关闭数字。

关闭(Hfigscenario)关闭(HFiglatresults)关闭(HFiglongresults)关闭(HVIDEOViewer)

用视觉处理算法进行仿真

既然,您验证了控制算法,在3D仿真环境中调查控制算法和视觉处理算法。这使您可以探讨视觉处理算法对系统性能的影响。配置测试台模型以使用与视觉处理变量相同的方案。

helperSLHighwayLaneFollowingSetup (......“scenario_LFACC_03_Curve_StopnGo”......“VisionProcessingAlgorithm”);SIM(“HighwayLaneAledingTestbench”

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

hFigLatResults = helperPlotLFLateralResults (logsout);

视觉处理算法检测到左右车道边界,但检测是嘈杂的,这会影响横向偏差。横向偏差仍然很小,但大于概率检测传感器变体的运行。

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

hfiglongresults = helperplotlflongitudinalresults(logsout,time_gap,......default_spacing);

相对距离和相对速度有一些不连续性。这些不连续现象是由于视觉处理算法对系统性能的不完善造成的。即使有这些不连续,产生的自我加速度和速度与使用概率检测传感器变量的结果相似。

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

Hvideoviewer = HelperplotlfdetectionResults(......LogSout,“forwardFacingCamera.mp4”,情景,相机,雷达,......场景,......“录视频”, 真的,......“recordvideofilename”scenarioFcnName +“_VPA”......“OpenRecordedVideoInvideoviewer”, 真的,......“VideoViewerJumpToTime”,10.6);

关闭数字。

关闭(HFiglatresults)关闭(HFiglongresults)关闭(HVIDEOViewer)

探索更多的场景

之前的模拟测试了场景_lfacc_03_curve_stopngo.使用概率视觉检测传感器和视觉处理算法变体的场景。此示例提供与兼容的其他方案HighwayLanealedingtestbench.模型:

scenario_LF_01_Straight_RightLane scenario_LF_02_Straight_LeftLane scenario_LF_03_Curve_LeftLane scenario_LF_04_Curve_RightLane scenario_LFACC_01_Curve_DecelTarget scenario_LFACC_02_Curve_AutoRetarget scenario_LFACC_03_Curve_StopnGo scenario_LFACC_04_Curve_CutInOut scenario_LFACC_05_Curve_CutInOut_TooClose scenario_LFACC_06_Straight_StopandGoLeadCar

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

  • 使用scenario_LF_以其他车辆进行停止测试车道检测和车道后的算法。车辆仍然存在于场景中,但是被定位成使得他们在路上没有看到它们。

  • 使用场景_LFACC_在道路上的其他车辆测试车道检测和车道之后的前缀。

检查每个文件中的注释,以获得关于每个场景中的道路和车辆的更多细节。您可以配置HighwayLanealedingtestbench.模型和工作区以模拟这些方案使用的helperSLHighwayLaneFollowingSetup功能。

例如,同时学习基于相机的车道检测算法对闭环控制的影响,虽然从有道路但没有车辆的场景开始,但它可能有助于。要为此类方案配置模型和工作区,请使用以下代码。

helperSLHighwayLaneFollowingSetup (......“scenario_LF_04_Curve_RightLane”......“VisionProcessingAlgorithm”);

结论

这个例子展示了如何用控制器、传感器融合和视觉处理组件来模拟高速公路车道的跟踪应用。

也可以看看

相关话题