主要内容

高速公路车道后

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

简介

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

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

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

  2. 探索试验台模型-试验台模型包含测试框架,其中包括场景、自我车辆动力学模型和使用地面真相的度量评估。长方体场景定义飞行器轨迹并指定地面真相。一个等价的虚幻引擎®场景用于模拟雷达传感器的检测和单目相机传感器的图像。一个自行车模型被用来模拟自我交通工具。

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

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

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

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

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

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

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

rng (0)

分区算法与试验台

该模型被划分为独立的算法模型和测试台架模型。

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

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

探索试验台模型

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

要探索测试工作台模型,打开项目示例文件的工作副本。MATLAB®将文件复制到一个示例文件夹中,以便您可以编辑它们。

目录(fullfile (matlabroot,“工具箱”“开车”“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneFollowing.zip”workDir = pwd);

打开系统级仿真测试台架模型。

open_system (“HighwayLaneFollowingTestBench”

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

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

  • 车道标记检测器-算法模型,以检测车道边界的帧捕获的相机传感器。

  • 车辆检测器-检测被相机传感器捕获的帧中的车辆的算法模型。

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

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

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

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

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

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

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

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

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

  • 场景的读者块配置为使用包含道路网络的驾驶场景,该道路网络与来自弯曲的道路现场。

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

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

  • 汽车世界Block将参与者的姿势从自我载体的坐标转换为世界坐标。

  • 场景的读者块输出动作姿态,控制目标车辆的位置。这些车辆是由对方指定的模拟三维车辆与地面跟踪块。

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

附加在自我交通工具上的传感器由子系统的以下部分指定:

  • 模拟3 d相机安装在自我飞行器上以捕捉它的正面视图。该块的输出图像由Lane Marker Detector块处理以检测车道,Vehicle Detector块处理以检测车辆。

  • 模拟三维概率雷达配置块附着在自我车辆上,在三维仿真环境中进行车辆检测。

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

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

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

自行车模型块实现了一个刚性的双轴单轨道车身模型,以计算纵向、横向和偏航运动。该块负责身体质量,空气阻力,和重量分配之间的轴由于加速和转向。有关更多细节,请参见自行车模型

度量评估子系统使用场景中的基本真相信息支持系统级的度量评估。打开Metrics Assessment子系统。

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

在本例中,使用四个指标来评估车道跟踪系统。

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

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

  • 验证时间间隔——这个方块验证自我车和领头车之间的时间间隔超过0.8秒。两辆车之间的时间差距定义为计算的车头时距与自我车辆速度的比值。

  • 验证没有碰撞——这个块验证自我车辆在模拟过程中的任何一点都没有与领头车辆碰撞。有关如何将这些指标与Simulink Test™集成以启用自动回归测试的更多细节,请参见高速公路车道跟随自动化测试

探索算法模型

该车道跟踪系统集成了车道标记检测器、车辆检测器、前向车辆传感器融合、车道跟踪决策逻辑和车道跟踪控制器等组件。

车道标志检测器算法模型实现了一个感知模块来分析道路图像。打开车道标记检测器算法模型。

open_system (“LaneMarkerDetector”);

车道标志检测器以单目相机传感器捕获的帧作为输入。它还通过掩模吸收相机的固有参数。检测车道边界,输出车道信息和每个车道的标记类型LaneSensor公共汽车。有关如何设计和评估车道标记检测器的详细信息,请参见利用虚幻引擎仿真环境设计车道标志检测器而且生成车道标志检测器代码

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

open_system (“VisionVehicleDetector”);

车辆探测器以摄像机传感器捕捉到的帧作为输入。它还通过掩模吸收相机的固有参数。它检测车辆并将车辆信息输出为边界框。有关如何设计和评估车辆检测器的详细信息,请参见生成视觉车辆检测器代码

前方车辆传感器融合组件融合了来自相机和雷达传感器的车辆检测,并使用中央水平跟踪方法跟踪被检测的车辆。打开前向车辆传感器融合算法模型。

open_system (“ForwardVehicleSensorFusion”);

前向车辆传感器融合模型将视觉和雷达传感器的车辆检测作为输入。雷达探测聚类,然后与视觉探测连接。然后使用联合概率数据关联跟踪器跟踪连接的车辆检测。该组件输出已确认的轨道。有关前向车辆传感器融合的更多细节,请参见前向车辆传感器融合

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

open_system (“LaneFollowingDecisionLogic”);

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

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

open_system (“LaneFollowingController”);

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

可视化测试场景

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

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

hFigScenario = helperPlotLFScenario (“scenario_LFACC_03_Curve_StopnGo”);

自我车不受闭环控制,因此会与移动较慢的先导车发生碰撞。闭环系统的目标是跟踪车道并与前面的车辆保持安全距离。在HighwayLaneFollowingTestBench模型,自我飞行器的初始速度和初始位置与开环情况相同。

关闭图。

关上(hFigScenario)

模拟试验台模型

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

mpcverbosity (“关闭”);

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

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

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

hFigLatResults = helperPlotLFLateralResults (logsout);

关闭图。

关上(hFigLatResults)

检查模拟结果。

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

  • 横向偏差图中显示了自我车辆从车道中心线的横向偏移。理想情况下,横向偏差为0米,这意味着自我交通工具完全遵循中心线。当车辆为了避免与其他车辆相撞而改变速度时,就会发生小的偏差。

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

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

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

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

关闭图。

关上(hFigLongResults)

检查模拟结果。

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

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

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

  • 绝对速度图中显示,自我载具最初遵循设定的速度,但当MIO减速时,为了避免碰撞,自我载具也会减速。

在模拟过程中,模型将信号记录到基本工作区作为logsout并记录相机传感器的输出到forwardFacingCamera.mp4.您可以使用helperPlotLFDetectionResults函数来可视化模拟的检测,类似于在使用传感器融合的前向碰撞预警的例子。您还可以将可视化的检测记录到视频文件中,以便其他不能访问MATLAB的人进行审阅。

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

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

播放生成的视频。

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

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

关闭图。

关上(hVideoViewer)

探索更多的场景

之前的模拟测试了scenario_LFACC_03_Curve_StopnGo场景。方法兼容的其他场景HighwayLaneFollowingTestBench模型:

场景_ lf_01_直右车道场景_ lf_02_直左车道场景_ lf_03_曲线左车道场景_ lf_04_曲线右车道场景_ lfacc_01_曲线减速目标场景_ lfacc_02_曲线自动重定向场景_ lfacc_03_曲线停止场景_ lfacc_04_曲线裁剪out场景_ lfacc_05_曲线裁剪out_tooclose场景_ lfacc_06_直停goleadcar

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

  • 使用场景scenario_LF_前缀测试车道探测和车道跟踪算法,不受其他车辆的阻碍。场景中的载具被放置在自我载具看不到的位置。

  • 使用场景scenario_LFACC_前缀,用于在自我车辆的传感器覆盖区域内与其他车辆测试车道检测和车道跟踪算法。

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

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

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

再次启用MPC更新消息。

mpcverbosity (“上”);

结论

该示例演示了如何在闭环三维仿真环境中集成视觉处理、传感器融合和控制器组件来模拟高速公路车道跟随系统。该示例还演示了各种评估指标,以验证所设计系统的性能。如果您有Simulink Coder™和Embedded Coder™的许可证,您可以生成准备部署的代码与嵌入式实时目标(ERT)。

另请参阅

相关的话题

Baidu
map