公路车道跟驰

此示例演示如何使用控制器、传感器融合和视觉处理组件模拟公路车道跟随应用程序。这些组件在3D模拟环境中进行测试,该环境包括摄像头和雷达传感器模型。

介绍

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

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

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

  2. 可视化测试场景:该场景包含一条有多辆车的弯道。

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

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

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

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

如果~ispc错误(3D模拟环境需要Windows 64位平台);终止

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

rng(0)

探索试验台模型

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

open_system (“公路车道跟踪测试台”)

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

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

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

  3. 前方车辆传感器融合:融合从视觉和雷达传感器获得的对ego车辆前方车辆的检测

  4. 车道跟随决策和控制器:指定横向和纵向决策逻辑以及车道跟随控制器

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

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

前向车辆传感器融合、车道跟随决策和控制器、车辆动力学和度量评估子系统均基于本系统中使用的子系统基于传感器融合和车道检测的车道跟踪控制(自动驾驶工具箱)。本示例重点介绍模拟3D场景和视觉检测器变量子系统。

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

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

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

  • 这个模拟三维场景配置块的SceneName参数设置为弯曲的道路.

  • 这个场景阅读器街区被配置为使用一个驾驶场景,其中包含一个与道路网络的一个部分紧密匹配的道路网络。

车辆位置由子系统的以下部分指定:

连接到ego车辆的传感器由子系统的以下部分指定:

  • 这个模拟三维摄像机块连接到ego车辆以捕获其前视图。该块的输出图像通过视觉处理算法进行处理,以检测车道和车辆。

  • 这个模拟三维概率雷达配置块连接到ego车辆,用于在三维仿真环境中检测车辆。

  • 测量偏差中心到后桥块转换后桥块的坐标系模拟三维概率雷达配置阻挡(相对于车辆中心下方)至姿势坐标(相对于车辆后轴中心下方)。

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

open_system (“高速公路跟踪测试台/视觉探测器变型”)

  • 概率检测传感器变体使您能够在3D仿真环境中测试控制算法的集成,而无需集成视觉处理算法。此变体使用视觉检测生成器块根据参与者地面真实位置合成车辆和车道检测。此配置帮助让您在没有视觉处理算法的3D仿真环境中验证与车辆和雷达传感器的交互。

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

open_system (《HighwayLaneFollowingTestBench/视觉检测器变体/视觉处理算法》)

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

可视化测试场景

辅助函数scenario_LFACC_03_Curve_StopnGo生成一个与公路跟踪测试台模型。这是弯曲道路上的一个开环场景,包括多个目标车辆。道路中心和车道标记与3D模拟环境提供的弯曲道路场景的一部分紧密匹配。该场景具有与模型相同的车辆数量和尺寸。在该场景中,领头车当其他车辆在相邻车道行驶时,在ego车辆前方下降。

绘制开环场景,观察自我载体和目标载体之间的相互作用。

hFigScenario = helperPlotLFScenario (“场景\u LFACC\u 03\u曲线\u stopengo”);

ego车辆不在闭环控制下,因此与移动较慢的先导车辆发生碰撞。闭环系统的目标是沿着车道行驶,并与领先车辆保持安全距离。在公路跟踪测试台模型中,ego车辆的初始速度和初始位置与开环场景中相同。

概率视觉检测传感器的仿真

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

HelpersLHHIGHWAYLANEFLOWINGSETUP(...“场景\u LFACC\u 03\u曲线\u stopengo”,...“ProbabilisticDetectionSensor”); MPC可靠性(“关”);sim卡(“公路车道跟踪测试台”)

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

hFigLatResults=helperPlotLFLateralResults(logsout);

检查仿真结果。

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

  • 这个横向偏移图中显示了ego车辆与车道中心线的横向偏差。横向偏差接近0,这意味着ego车辆紧随中心线。当车辆改变速度以避免与其他车辆碰撞时,会出现小偏差。

  • 这个相对偏航角图中显示了ego车辆与车道中心线之间的相对偏航角。相对偏航角非常接近于0,这意味着ego车辆的航向角与中心线的偏航角非常匹配。

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

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

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

检查仿真结果。

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

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

  • 这个绝对加速度图中显示,当车辆太接近MIO时,控制器命令车辆减速。

  • 这个绝对速度图中显示了ego车辆最初遵循设定速度,但当MIO减速时,为了避免碰撞,ego车辆也减速。

在模拟过程中,模型将信号记录到基本工作空间为罗格苏特并记录摄像机传感器的输出到forwardFacingCamera.mp4. 你可以使用plotLFDetectionResults用于可视化模拟检测的函数,类似于在使用传感器融合的前向碰撞预警(自动驾驶工具箱)示例。您还可以将可视化检测记录到视频文件中,以便其他无权访问MATLAB的人查看。

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

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

播放生成的视频。

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

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

关闭数字。

close(hFigLatResults) close(hFigLongResults) close(hVideoViewer)

用视觉处理算法进行仿真

现在,您已经验证了控制算法,请在三维仿真环境中一起测试控制算法和视觉处理算法。这使您能够探索视觉处理算法对系统性能的影响。将测试台模型配置为使用与vision处理变量相同的场景。

HelpersLHHIGHWAYLANEFLOWINGSETUP(...“场景\u LFACC\u 03\u曲线\u stopengo”,...“Vision处理算法”);sim卡(“公路车道跟踪测试台”)

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

hFigLatResults=helperPlotLFLateralResults(logsout);

视觉处理算法检测左右车道边界,但检测噪声更大,这会影响横向偏差。横向偏差仍然很小,但比使用概率检测传感器变量的跑步更大。

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

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

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

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

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

关闭数字。

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

探索其他场景

之前的模拟测试了scenario_LFACC_03_Curve_StopnGo使用概率视觉检测传感器和视觉处理算法变体的场景。此示例提供了与公路跟踪测试台型号:

方案一直线右车道方案二直线左车道方案三曲线左车道方案四曲线右车道方案一曲线减速目标方案二曲线自动生成方案三曲线停车方案四曲线执行方案五曲线执行场景\u LFACC\u 06\u直行\u停车和高架车

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

  • 将场景与情景_前缀测试无其他车辆阻碍的车道检测和车道跟随算法。这些车辆仍然存在于场景中,但它们被放置在这样的位置上,不被道路上的自我车辆看到。

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

检查每个文件中的注释,了解每个场景中道路和车辆的更多详细信息。您可以配置公路跟踪测试台模型和工作空间,以使用HelpersLHHIGHWAYLANEFLOWINGSETUP作用

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

HelpersLHHIGHWAYLANEFLOWINGSETUP(...“场景\u LF\u 04\u弯道\u右车道”,...“Vision处理算法”);

结论

此示例演示如何使用控制器、传感器融合和视觉处理组件模拟公路车道跟随应用程序。

另见

阻碍

相关的话题