主要内容

高速公路车道跟踪

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

简介

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

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

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

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

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

  4. 想象一个测试场景—该场景包含一条有多辆车的弯曲道路。

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

  6. 探索其他场景—这些场景是在额外的条件下测试系统。

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

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

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

rng (0)

分区算法与测试台

将模型划分为单独的算法模型和测试台模型。

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

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

探索试验台模型

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

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

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

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

open_system (“HighwayLaneFollowingTestBench”

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

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

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

  • 车辆检测器-算法模型,以检测车辆的框架捕获的相机传感器。

  • 前向车辆传感器融合——用于融合来自摄像头和雷达传感器的车辆检测的算法模型。

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

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

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

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

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

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

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

  • 模拟三维场景配置Block有SceneName参数设置为弯曲的道路

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

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

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

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

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

  • 长方体到三维仿真块将自姿态坐标系(相对于车辆后轴中心下方)转换为三维仿真坐标系(相对于车辆中心下方)。

附加在自我飞行器上的传感器由子系统的以下部分指定:

  • 模拟3D摄像机块附在自我车辆上,以捕捉其正面视图。该块的输出图像由车道标记检测器块处理以检测车道,车辆检测器块处理以检测车辆。

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

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

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

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与自我飞行器之间的相对距离和相对速度。

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

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 = helpplotlflateralresults (logsout);

关闭该图形。

关上(hFigLatResults)

检查模拟结果。

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

  • 横向偏差图显示了自我车辆从车道中心线的横向偏差。理想情况下,横向偏差为零米,这意味着自我车辆完全遵循中心线。当车辆改变速度以避免与另一辆车相撞时,会出现小偏差。

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

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

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

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”, scenario ofcnname +“_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_曲线停止- ngo场景- lfacc_04_曲线cutinout场景- lfacc_05_曲线cutinout_tooclose场景- lfacc_06_straight stopandgoleadcar

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

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

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

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

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

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

再次启用MPC更新消息。

mpcverbosity (“上”);

结论

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

另请参阅

相关的话题