公路车道跟驰

这个例子展示了如何使用控制器、传感器融合和视觉处理组件来模拟高速公路车道跟随应用程序。这些部件在3D仿真环境,包括照相机和雷达传感器模型中测试。

介绍

一条公路的车道跟踪系统操纵的明显车道内的车辆行驶。它还维持在同一车道设定速度或安全距离前方车辆。该系统通常使用视觉处理算法来检测从相机车道和车辆。来自摄像机的车辆检测然后与检测融合来自雷达,以提高检测周围车辆的能力。所述控制器使用所述车道检测,车辆检测,并设定速度,以控制转向和加速度。

这个例子演示了如何创建一个测试台模型来测试三维仿真环境中的视觉处理、传感器融合和控制。测试台模型可以配置为不同的场景,以测试跟随车道和避免与其他车辆碰撞的能力。在本例中,您:

  1. 探索试验台模型:该模型包含视觉处​​理,传感器融合,控制,车辆动态,传感器,和度量来评估功能。

  2. 可视化测试方案:该方案包含多辆弯路。

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

  4. 模拟与视觉处理算法:测试台模型被配置成测试集成视觉处理的,传感器融合,和控制部件。

  5. 探索其他方案:这些方案的其他的条件下测试该系统。

测试控制器和感知算法的整合需要一个逼真的模拟环境。在这个例子中,启用通过与虚幻引擎集成系统级仿真。三维仿真环境要求的Windows®64位平台。

如果〜ISPC错误(“三维仿真环境,需要在Windows 64位平台”);结束

为了保证模拟结果的可重复性,设置随机种子。

rng(0)

探索试验台型号

在这个例子中,你使用的系统级仿真测试平台模型探讨了以下系统车道控制和视觉处理算法的行为。打开系统级仿真测试平台模型。

open_system(“高速公路车道下面的试验台”)

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

  1. 用于模拟指定道路,车辆,摄像头和雷达传感器:模拟3D场景

  2. 视觉检测变异:指定的两种不同的视觉检测算法的保真度可供选择

  3. 前方车辆传感器融合:保险丝从视觉和雷达传感器获得该车辆的自主车辆的前方的检测

  4. 车道以下决定和控制器:指定横向和纵向判定逻辑和车道以下控制器

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

  6. 度量评估:评估系统级行为

到前方车辆的传感器融合,车道追踪决策与控制,车辆动态和度量评估子系统基于使用的子系统里在与传感器融合和Lane检测控制(自动驾驶工具箱)。这个例子的重点是模拟的3D场景和视觉检测变子系统。

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

open_system(“HighwayLaneFollowingTestBench /模拟3D场景”)

现场和道路网络是由子系统的这些部分规定:

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

  • 自我输入端口控制自主车辆,这是由模拟3D车辆指定与地面以下的1块的位置。

  • 这个汽车世界块将从输入自身车辆向世界坐标系坐标演员的姿势。

  • 这个场景阅读器块输出演员姿势,控制目标车辆的位置。这些车辆由另一方指定模拟3D车辆与地面跟随块。

  • 这个长方体到三维仿真块转换自我姿态坐标系统(相对于下方的车辆后轴中心)与三维模拟坐标系统(相对于下方的车辆中心)。

附连到自身车辆的传感器由子系统的这些部分指定:

  • 这个模拟三维摄像机块附连到自身车辆以捕获它的前视图。从这个块的输出图像是通过视觉处理算法进行处理,以检测车道和车辆。

  • 这个模拟3D概率雷达配置在三维仿真环境中,将块附加到ego车辆上进行车辆检测。

  • 测量偏差中心后桥模块将坐标系统模拟3D概率雷达配置挡块(相对于车辆中心下方)至姿势坐标(相对于车辆后轴中心下方)。

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

open_system(“HighwayLaneFollowingTestBench /视觉检测变”)

  • 该概率检测传感器变异使您可以在3D模拟环境控制算法的集成测试,也没有整合的视觉处理算法。这个变例使用视觉检测Generator模块基于演员的实测位置合成车辆和车道检测。此配置可帮助您验证与在3D模拟环境,车辆和雷达传感器的交流而不视觉处理算法。

  • 视觉处理算法变体使您能够在三维仿真环境中测试控制算法和视觉处理算法的集成。打开视觉处理算法变体。

open_system(“HighwayLaneFollowingTestBench /视觉检测变异/视觉处理算法”)

这种变体使用基于基于MATLAB车道边界和车辆检测算法单目相机的视觉感知(自动驾驶工具箱)的例子。从该实施例的主要差别是,在本实施例中,车道边界检测和车辆检测算法被分隔成单独的组件。车道标记检测器是参考模型,可以产生C语言代码。这个参考模型使用的系统对象™,帮助市场探测器,以检测车道标记。车道跟踪器还包含了一个车道跟踪功能,以提高它在拥挤状况下的检测性能。视觉车辆检测器使用HelperVisionVehicleDetector系统对象来检测车辆。这些系统对象的输出数据包到总线,如在进一步加工需要。由于视觉处理算法由所述相机传感器返回的图像上操作,所述视觉处理算法需要更长的时间比概率检测传感器的变体来执行。

可视化测试方案

助手功能scenario_LFACC_03_Curve_StopnGo产生驱动方案是与兼容公路车道下面的试验台模型。这是在弯曲道路上的开环方​​案和包括多个目标车辆。道路中心和车道标线密切配合具备3D仿真环境弯道场景的部分。该方案有相同数量的汽车为模型,它们具有相同的尺寸。在这种情况下,前面的车辆减慢在自身车辆前方,而其他车辆在相邻车道行驶。

绘制开环情况,查看自车辆和目标车辆之间的相互作用。

hFigScenario = helperPlotLFScenario(“scenario_LFACC_03_Curve_StopnGo”);

自主车辆不是下闭环控制,所以碰撞具有较慢移动领先车辆发生。闭环系统的目标是按规定车道行驶,并从引线车辆保持安全距离。在里面公路车道下面的试验台模型中,自身车辆具有相同的初始速度和初始位置在开环情况下。

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

为了验证与车辆和雷达传感器的交互是否正常工作,使用概率视觉检测传感器测试控制算法与三维仿真环境之间的交互作用。这样可以在不集成完整视觉处理算法的情况下验证基线系统行为。配置测试台模型并运行模拟。

helperSLHighwayLaneFollowingSetup(...“scenario_LFACC_03_Curve_StopnGo”,...“ProbabilisticDetectionSensor”);mpcverbosity(“关”);SIM(“高速公路车道下面的试验台”)

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

hFigLatResults = helperPlotLFLateralResults(logsout);

检查仿真结果。

  • 这个检测车道边界的横向偏移绘图显示检测到的左车道和右车道边界的横向偏移。检测值接近车道的地面真实情况。

  • 这个横向偏差从车道的中心线图示出了自身车辆的横向偏差。横向偏差接近于0,这意味着该自身车辆紧密地遵循中心线。当车辆正在改变速度,以避免与另一车辆发生碰撞小的偏差发生。

  • 这个相对偏航角曲线图示出了自身车辆和车道的中心线之间的相对偏转角。相对偏航角是非常接近0时,这意味着该自身车辆的航向角密切中心线的横摆角相匹配。

  • 这个转向角图中显示了ego车辆的转向角。转向角轨迹平滑。

画出纵向控制器的性能的结果。

hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,...默认间距);

检查仿真结果。

  • 这个相对纵向距离图中显示了本车和最重要的对象(MIO)之间的距离。宇达电通表示,并在同一车道自身车辆最近的车辆前方。在这种情况下,本车接近MIO并得到接近它或超过在某些情况下的安全距离。

  • 这个相对纵向速度图示出了自身车辆和MIO之间的相对速度。在这个例子中,视觉处理算法只检测位置,从而在控制算法跟踪器估计的速度。估计速度滞后于实际(地面实况)MIO相对速度。

  • 这个绝对加速度情节表明,该控制器命令车辆减速时,它变得太接近MIO。

  • 这个绝对速度图中显示了本车开始按程序设定的速度,但是当MIO减慢,以避免碰撞,自身车辆也减慢。

在模拟过程中,该模型将记录信号提供给基极的工作区如logsout并记录照相机的传感器的输出,以forwardFacingCamera.mp4.您可以使用plotLFDetectionResults功能形象化类似于如何记录的数据模拟的检测中进行了探索前部碰撞警告使用传感器融合(自动驾驶工具箱)示例。您还可以将可视化的检测记录到视频文件中,以便其他无权访问MATLAB的用户进行查看。

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

hVideoViewer = helperPlotLFDetectionResults(...logsout,“forwardFacingCamera.mp4”,场景,相机,雷达,...场景名称,...“录制视频”,真实,...“RecordVideoFileName”,scenarioFcnName +“\u PDS”,...“OpenRecordedVideoInVideoViewer”,真实,...“VideoViewerJumpToTime”,10.6);

播放生成的视频。

  • 前置摄像头示出了由照相机传感器所返回的图像。左车道边界以红色绘制和右车道边界以绿色绘制。这些泳道由概率检测传感器返回。跟踪检测也叠加在视频。

  • 鸟眼图显示真实的车辆位置、传感器覆盖区域、概率检测和跟踪输出。绘图标题包括模拟时间,以便您可以将视频和以前的静态绘图之间的事件关联起来。

合上数字。

关闭(hFigScenario)接近(hFigLatResults)接近(hFigLongResults)接近(hVideoViewer)

模拟与视觉处理算法

现在,您验证了控制算法,在3D模拟环境测试一起控制算法和视觉处理算法。这使您能够探索对系统性能的视觉处理算法的效果。配置测试台模型中使用同样的场景与视觉处理的变体。

helperSLHighwayLaneFollowingSetup(...“scenario_LFACC_03_Curve_StopnGo”,...“VisionProcessingAlgorithm”);SIM(“高速公路车道下面的试验台”)

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

hFigLatResults = helperPlotLFLateralResults(logsout);

该视觉处理算法检测左右车道边界,但检测是比较吵,影响了横向偏差。横向偏移仍然是小的,但不是与概率检测传感器的变体的运行大。

画出纵向控制器的性能的结果。

hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,...默认间距);

的相对距离和相对速度有一定的不连续性。这些不连续是由于对系统性能的视觉处理算法的缺陷。即使有这些不连续,所得到的自我加速度和速度类似于使用概率检测传感器的变体的结果。

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

hVideoViewer = helperPlotLFDetectionResults(...logsout,“forwardFacingCamera.mp4”,场景,相机,雷达,...场景名称,...“录制视频”,真实,...“RecordVideoFileName”,scenarioFcnName +“_VPA”,...“OpenRecordedVideoInVideoViewer”,真实,...“VideoViewerJumpToTime”,10.6);

合上数字。

关闭(hFigLatResults)关闭(hFigLongResults)关闭(hVideoViewer)

探索其他方案

以前的模拟测试scenario_LFACC_03_Curve_StopnGo同时使用所述概率视觉检测传感器和视觉处理算法方案的变体。本实施例提供与该兼容其他方案公路车道下面的试验台型号:

场景_LF_01_直_right lane scenario_LF_02_left lane scenario_LF_03_Curve_LeftLane scenario_LFACC_01_u Curve_u u rightline scenario_LFACC_02_Curve_CutInOut scenario_LFACC_03_Curve_cution_toclose方案6直行停车和高尔夫球头车

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

  • 与使用场景scenario_LF_前缀测试车道检测和以下车道算法,而无需由其他车辆阻塞。这些车辆仍然存在于场景中,但定位使得它们不被道路上的自主车辆看到。

  • 与使用场景scenario_LFACC_前缀检测线检测,并与道路上的其他车辆下面的车道算法。

检查在每个场景中的道路和车辆的详细信息,在每个文件中的注释。您可以配置公路车道下面的试验台使用helperSLHighwayLaneFollowingSetup功能。

例如,在学习基于摄像头的车道检测算法对闭环控制的影响时,从有路但没有车辆的场景开始学习可能会很有帮助。要为此类场景配置模型和工作区,请使用以下代码。

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

结论

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

也可以看看

相关话题