公路车道追踪

此示例示出了如何以模拟公路车道下面的应用程序用的控制器,传感器融合,和视觉处理组件。这些部件在3D仿真环境,包括照相机和雷达传感器模型中测试。

介绍

高速公路的车道跟踪系统引导车辆在有标记的车道内行驶。它还与同一车道上的前车保持固定的速度或安全距离。该系统通常使用视觉处理算法从摄像头检测车道和车辆。然后,摄像头的车辆检测与雷达的检测融合在一起,以提高检测周围车辆的能力。控制器通过车道检测、车辆检测、设定车速来控制转向和加速。

本实施例表明如何在三维模拟环境中创建一个测试台模型来测试视觉处理,传感器融合,和控制。测试台模型可被配置用于不同的场景来测试遵循车道和避免碰撞与其他车辆的能力。在这个例子中,您可以:

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

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

  3. 用概率检测传感器模拟:该模型被配置为测试传感器融合和控件的使用概率视觉检测传感器模型的集成。这是有帮助的满怀憧憬处理算法整合前评估基线行为。

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

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

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

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

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

RNG(0)

探索试验台型号

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

open_system (“HighwayLaneFollowingTestBench”

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

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

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

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

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

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

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

到前方车辆的传感器融合,车道追踪决策与控制,车辆动态和度量评估子系统基于使用的子系统车道跟踪控制与传感器融合和车道检测。本例重点介绍了仿真三维场景和视觉检测器的各子系统。

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

open_system (“HighwayLaneFollowingTestBench /模拟3 d场景”

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

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

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

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

  • 方案读卡器块输出演员姿势,其控制目标车辆的位置。这些车辆是由其他特定模拟3D车辆与地面跟随块。

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

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

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

  • 模拟三维概率雷达配置块附连到自身车辆以检测三维仿真环境的车辆。

  • 测量偏差中心后桥模块将坐标系统模拟三维概率雷达配置方框(相对于下方的车辆中心)的姿态坐标(相对于下方的车辆后轴中心)。

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

open_system (“HighwayLaneFollowingTestBench /视觉检测变”

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

  • 在视觉处理算法的变体,您可以在3D模拟环境的控制算法和视觉处理算法的集成测试。打开视觉处理算法变种。

open_system (“HighwayLaneFollowingTestBench/视觉检测器变体/视觉处理算法”

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

可视化测试场景

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

绘制开环场景以查看ego车辆和目标车辆之间的交互。

hFigScenario = helperPlotLFScenario (“scenario_LFACC_03_Curve_StopnGo”);

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

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

为了验证车辆和传感器工作正常的雷达,测试控制算法并利用概率视觉检测传感器的3D模拟环境之间的互动,互动。这样做可以验证基线系统行为不完整的视觉处理算法整合。配置测试台模型和运行模拟。

helperSLHighwayLaneFollowingSetup(...“scenario_LFACC_03_Curve_StopnGo”...“ProbabilisticDetectionSensor”);mpcverbosity(“关”);sim卡(“HighwayLaneFollowingTestBench”

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

hFigLatResults = helperPlotLFLateralResults(logsout);

检查仿真结果。

  • 检测到车道边界横向偏移积示出了用于所检测到的左车道和右车道边界的横向偏移量。该检测值都接近车道的地面实况。

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

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

  • 转向角图显示本车的转向角度。转向角轨迹平滑。

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

hFigLongResults = helperPlotLFLongitudinalResults (logsout time_gap,...default_spacing);

检查仿真结果。

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

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

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

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

在仿真过程中,模型将信号记录到基本工作区logsout并将摄像机传感器的输出记录到forwardFacingCamera.mp4。您可以使用plotLFDetectionResults功能形象化类似于如何记录的数据模拟的检测中进行了探索使用传感器融合的前向碰撞预警例。您还可以在可视化检测记录到视频文件,使他人的评论没有访问MATLAB谁。

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

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

播放生成的视频。

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

  • 鸟眼图表示出了真实的车辆位置,传感器的覆盖区域,概率检测和跟踪输出。情节标题包括仿真时间,这样就可以在相关的视频和静态以往地块之间的事件。

关闭数字。

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

模拟与视觉处理算法

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

helperSLHighwayLaneFollowingSetup(...“scenario_LFACC_03_Curve_StopnGo”...“VisionProcessingAlgorithm”);sim卡(“HighwayLaneFollowingTestBench”

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

hFigLatResults = helperPlotLFLateralResults(logsout);

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

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

hFigLongResults = helperPlotLFLongitudinalResults (logsout time_gap,...default_spacing);

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

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

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

关闭数字。

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

探索其他方案

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

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_用于测试无其他车辆阻碍的车道检测和车道跟踪算法的前缀。这些车辆仍然存在于场景中,但是它们的位置使它们不会被路上的ego车辆看到。

  • 与使用场景scenario_LFACC_用于测试路上其他车辆的车道检测和车道跟踪算法的前缀。

检查在每个场景中的道路和车辆的详细信息,在每个文件中的注释。您可以配置HighwayLaneFollowingTestBench模型和工作区使用,以模拟这些场景helperSLHighwayLaneFollowingSetup功能。

例如,在学习上的闭环控制基于摄像机的车道检测算法的效果,它可以帮助开始,有一个道路,但没有车辆的情况。要配置模型和工作区这样的情况下,使用下面的代码。

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

结论

此示例示出了如何以模拟公路车道下面的应用程序用的控制器,传感器融合,和视觉处理组件。

也可以看看

相关的话题