主要内容

高速公路车道后

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

介绍

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

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

  1. 划分算法和测试台-模型分为车道跟随算法模型和测试台模型。算法模型实现各个组件。测试平台包括算法模型的集成和虚拟测试框架。

  2. 探索测试平台模型-测试台模型包含测试框架,其中包括场景、ego车辆动力学模型和使用ground truth的度量评估。长方体场景定义了车辆轨迹并指定了地面真实情况。一个等效的虚幻引擎®场景被用来建模雷达传感器的检测和单眼摄像机传感器的图像。自行车模型被用来模拟自我汽车。

  3. 探索算法模型-算法模型是实现视觉处理、传感器融合、决策逻辑和控制组件的参考模型,用于构建车道跟踪应用。

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

  5. 模拟实验台模型—对模型进行仿真,测试视觉处理、传感器融合和控制组件的集成。

  6. 探索更多的场景—这些场景在附加条件下测试系统。

测试控制器和感知算法的集成需要一个逼真的仿真环境。在本例中,您可以通过集成Epic Games®的虚幻引擎来实现系统级模拟。3D仿真环境需要Windows®64位平台。

如果~ ispc错误([“只有微软才支持3D模拟”万博1manbetxchar (174),“窗口”char (174),“。”])结束

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

rng (0)

划分算法和测试平台

该模型分为算法模型和测试台模型。

  • 算法模型——算法模型是实现单个组件功能的参考模型。

  • 测试台模型-高速公路车道跟踪测试台指定测试算法模型的刺激和环境。

探索试验台模型

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

open_system (“HighwayLaneFollowingTestBench”

测试台模型包含以下模块:

  • 模拟3D场景-指定用于模拟的道路、车辆、摄像机传感器和雷达传感器的子系统。

  • 车道标记检测器-用于检测摄像机传感器捕获的帧内车道边界的算法模型。

  • 车辆检测器-算法模型,用于检测被摄像机传感器捕获的帧内车辆。

  • 前向车辆传感器融合-融合来自相机和雷达传感器的车辆检测的算法模型。

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

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

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

  • 度量评估——评估系统级行为的子系统。

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

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

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

  • 模拟3D场景配置(自动驾驶工具箱)块的SceneName参数设置为弯曲的道路

  • 场景的读者(自动驾驶工具箱)块被配置为使用一个驾驶场景,该场景包含一个道路网络,与道路网络的一部分紧密匹配弯曲的道路现场。

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

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

  • 汽车世界(自动驾驶工具箱)块将行动者的姿态从自我载体的坐标转换为世界坐标。

  • 场景的读者(自动驾驶工具箱)块输出动作体的姿态,控制目标车辆的位置。这些车辆是由对方指定的模拟3D车辆与地面跟踪(自动驾驶工具箱)块。

  • 长方体到三维仿真(自动驾驶工具箱)块将自我姿态坐标系统(相对于车辆后桥中心以下)转换为三维仿真坐标系统(相对于车辆中心以下)。

附在ego车辆上的传感器由子系统的以下部分指定:

  • 模拟3 d相机(自动驾驶工具箱)块是附加到自我车辆捕捉它的正面视图。车道标记检测块对输出图像进行处理,检测车道,车辆检测块对车辆进行检测。

  • 模拟三维概率雷达配置(自动驾驶工具箱)block附着在ego车辆上,用于在三维仿真环境中检测车辆。

  • 测量偏置中心到后桥块转换的坐标系统模拟三维概率雷达配置(自动驾驶工具箱)块(相对于车辆中心以下)到自我姿态坐标(相对于车辆后轴中心以下)。

车辆动力学子系统使用自行车模型块来建模自我车辆。打开车辆动力学子系统。

open_system (“HighwayLaneFollowingTestBench /车辆动力学”);

自行车模型块实现了刚性双轴单轨车辆的车身模型,以计算纵向、横向和偏航运动。块考虑了车身质量,空气动力阻力,以及由于加速度和转向而在车轴之间的重量分布。有关详细信息,请参见自行车模型(自动驾驶工具箱)

度量评估子系统支持使用场景中的地面真实信息进行系统级度量评估。打开度量评估子系统。

open_system (“HighwayLaneFollowingTestBench /指标评估”);

在这个例子中,四个指标被用来评估车道跟踪系统。

  • 验证横向偏差-该区块验证车道中心线的横向偏差在相应场景的规定阈值内。在编写测试场景时定义阈值。

  • 验证车道-此块验证自我车辆在整个模拟过程中沿着道路上的一条车道行驶。

  • 验证时间间隔-此块验证自我车辆和领先车辆之间的时间间隔大于0.8秒。两辆车之间的时间间隔定义为计算出的车头时距与自我车速的比值。

  • 验证无碰撞-此块验证自我车辆在模拟过程中的任何一点都没有与领先车辆相撞。有关如何将这些度量与Simulink Test™集成以启用自动回归测试的更多详细信息,请参见万博1manbetx高速公路车道跟踪自动测试(自动驾驶工具箱)

探索算法模型

车道跟踪系统由车道标志检测器、车辆检测器、前向传感器融合、车道跟踪决策逻辑和车道跟踪控制器组成。

该车道标记检测算法模型实现了对道路图像进行分析的感知模块。打开车道标记检测器算法模型。

open_system (“LaneMarkerDetector”);

车道标记检测器以单目摄像机传感器捕捉到的帧作为输入。它还通过掩模吸收相机的内在参数。该算法检测车道边界,输出每条车道的车道信息和标记类型LaneSensor公共汽车。有关如何设计和评估车道标记检测器的更多细节,请参阅使用虚幻引擎模拟环境设计车道标记检测器(自动驾驶工具箱)为车道标记检测器生成代码(自动驾驶工具箱)

车辆检测器算法模型检测行车场景中的车辆。打开车辆检测器算法模型。

open_system (“VisionVehicleDetector”);

车辆检测器以摄像机传感器捕捉到的帧作为输入。它还通过掩模吸收相机的内在参数。它检测车辆,并将车辆信息作为边界框输出。有关如何设计和评估车辆检测器的更多细节,请参阅为视觉车辆检测器生成代码(自动驾驶工具箱)

前向车辆传感器融合组件融合来自摄像机和雷达传感器的车辆检测,并采用中央水平跟踪方法对被检测车辆进行跟踪。打开汽车传感器融合算法模型。

open_system (“ForwardVehicleSensorFusion”);

前向车辆传感器融合模型以视觉和雷达传感器的车辆检测为输入。雷达检测被聚类,然后连接到视觉检测。然后使用联合概率数据关联跟踪器跟踪连接的车辆检测。这个组件输出确认的轨道。有关前方车辆传感器融合的更多细节,请参见前向车辆传感器融合(自动驾驶工具箱)

车道跟踪决策逻辑算法模型根据检测到的车道和轨道指定横向和纵向决策。开道跟随决策逻辑算法模型。

open_system (“LaneFollowingDecisionLogic”);

车道跟随决策逻辑模型以车道标记检测器检测到的车道和前方车辆传感器融合模块确认的轨迹为输入。它估计车道中心,也决定了MIO的领先车在同一车道行驶的自我车辆。它输出了MIO和ego之间的相对距离和相对速度。

车道跟随控制器指定纵向和横向控制。开道跟踪控制器算法模型。

open_system (“LaneFollowingController”);

控制器以设定的速度、车道中心和MIO信息作为输入。它采用路径跟踪控制器控制自我车辆的转向角度和加速度。它还使用了一个看门狗制动控制器应用制动作为故障安全模式。控制器输出转向角度和加速命令,以决定是否加速、减速或应用刹车。车辆动力学块使用这些输出的横向和纵向控制自我车辆。

可视化测试场景

辅助函数scenario_LFACC_03_Curve_StopnGo生成一个长方体场景,它与HighwayLaneFollowingTestBench模型。这是一个开环场景,包含多辆目标车辆在弯曲的道路上。在这个长方体场景中,道路中心、车道标记和车辆与3D仿真环境提供的弯曲道路场景的一部分非常匹配。在这种情况下,当其他车辆在相邻车道行驶时,前车在自我车辆前面减速。

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

hFigScenario = helperPlotLFScenario (“scenario_LFACC_03_Curve_StopnGo”);

由于自我车辆不受闭环控制,因此会与速度较慢的前车发生碰撞。闭环系统的目标是沿着车道行驶,并与前面的车辆保持安全距离。在HighwayLaneFollowingTestBench模型中,自我飞行器具有与开环场景相同的初始速度和初始位置。

关闭图。

关上(hFigScenario)

模拟实验台模型

在三维仿真环境中配置和测试算法的集成。要减少命令窗口输出,请关闭MPC更新消息。

mpcverbosity (“关闭”);

配置测试台模型以使用相同的场景。

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

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

hFigLatResults = helperPlotLFLateralResults (logsout);

关闭图。

关上(hFigLatResults)

检查模拟结果。

  • 检测到车道边界侧向偏移该图显示了检测到的左车道和右车道边界与车道中心线的侧向偏移。检测值与巷道地面真值接近,但有少量偏差。

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

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

  • 转向角图中显示了自我车辆的转向角度。转向角轨迹平稳。

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

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

关闭图。

关上(hFigLongResults)

检查模拟结果。

  • 相对纵向距离图显示了自我载体和MIO之间的距离。在这种情况下,自我车辆接近MIO,在某些情况下接近它或超过安全距离。

  • 相对纵向速度图显示了自我载体和MIO之间的相对速度。在这个例子中,车辆检测器只检测位置,所以控制算法中的跟踪器估计速度。估计的速度滞后于实际的(地面真实)MIO相对速度。

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

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

在模拟过程中,模型将信号记录到基本工作空间为logsout并记录摄像机传感器的输出到forwardFacingCamera.mp4.你可以使用plotLFDetectionResults函数来可视化模拟检测,类似于如何在中探索记录的数据使用传感器融合的前向碰撞预警(自动驾驶工具箱)的例子。您还可以将可视化检测记录到视频文件中,以使没有访问MATLAB的其他人能够审查。

根据记录的数据绘制检测结果,生成视频,并打开视频查看器(图像处理工具箱)应用程序。

hVideoViewer = helperPlotLFDetectionResults (...logsout,“forwardFacingCamera.mp4”,场景,摄像头,雷达,...scenarioFcnName,...“RecordVideo”,真的,...“RecordVideoFileName”scenarioFcnName +“_VPA”...“OpenRecordedVideoInVideoViewer”,真的,...“VideoViewerJumpToTime”, 10.6);

播放生成的视频。

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

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

关闭图。

关上(hVideoViewer)

探索更多的场景

之前的模拟测试了scenario_LFACC_03_Curve_StopnGo场景。此示例提供了与HighwayLaneFollowingTestBench模型:

场景lf_01_straight _rightlane场景lf_02_straight _leftlane场景lf_03_curve_leftlane场景lf_04_curve_rightlane场景lfacc_01_curve_deceltarget场景lfacc_02_curve_autoretarget场景lfacc_03_curve_stopngo场景lfacc_04_curve_cutinout_tooclosescenario_LFACC_06_Straight_StopandGoLeadCar

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

  • 使用scenario_LF_前缀测试无其他车辆阻碍的车道检测和车道跟随算法。场景中的车辆被放置在这样的位置,它们不会被自我车辆看到。

  • 使用scenario_LFACC_前缀,用于测试在自我车辆的传感器覆盖范围内的其他车辆的车道检测和车道跟随算法。

查看每个文件中的注释,了解关于每个场景中道路和车辆几何形状的更多细节。您可以配置HighwayLaneFollowingTestBench模型和工作区来模拟这些场景helperSLHighwayLaneFollowingSetup函数。

例如,在评估基于摄像头的车道检测算法对闭环控制的影响时,从一个有道路但没有车辆的场景开始是有帮助的。要为这样的场景配置模型和工作区,请使用以下代码。

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

再次启用MPC更新消息。

mpcverbosity (“上”);

结论

该实例展示了如何将视觉处理、传感器融合和控制器组件集成在一个闭环三维仿真环境中模拟高速公路车道跟踪系统。该示例还演示了用于验证所设计系统性能的各种评估指标。如果您有Simulink Coder™和Emb万博1manbetxedded Coder™的许可证,您可以生成用于嵌入式实时目标(ERT)的算法模型的就绪部署代码。

2019-2020 The MathWorks, Inc.版权所有

另请参阅

相关的话题