主要内容

在Simulink中使用激光雷达数据跟踪车辆金宝app

本示例演示如何使用安装在ego车辆顶部的激光雷达传感器的测量值跟踪车辆。由于激光雷达传感器的高分辨率能力,传感器的每次扫描都包含大量点,通常称为点云。该示例演示了Simulink中处理点云和跟踪对象的工作流。本例中使用的激光雷达数据是从公路驾驶场景中记录的。您使用记录的数据通过联合概率数据关联(JPDA)跟踪器和交互多模型(IMM)方法跟踪车辆。这个例子紧跟着金宝app用激光雷达追踪车辆:从点云到轨迹表MATLAB®示例。

设置

本例中使用的激光雷达数据可在以下链接获得:https://ssd.mathworks.com/金宝appsupportfiles/lidar/data/TrackVehiclesUsingLidarExampleData.zip

将数据文件下载到当前工作文件夹中。如果要将文件放在不同的文件夹中,请在后续说明中更改目录名称。

%如果不可用,则加载数据。如果~ (“lidarData_1.mat”“文件”) dataUrl ='https://ssd.mathworks.com/金宝appsupportfiles/lidar/data/TrackVehiclesUsingLidarExampleData.zip';datasetFolder = fullfile (pwd);解压缩(dataUrl datasetFolder);结束

模型概述

load_system (“TrackVehicles金宝appSimulinkExample”);set_param (“TrackVehicles金宝appSimulinkExample”“SimulationCommand”“更新”);open_system (“TrackVehicles金宝appSimulinkExample”);

激光雷达和图像数据读取器

激光雷达数据读取器和图像数据读取器模块使用MATLAB系统(金宝app模型)块。块的代码由helper类定义,HelperLidarDataReaderHelperImageDataReader分别。图像和激光雷达数据读取器从MAT文件读取记录的数据,并分别输出参考图像和点云中的点位置。

边界框探测器

如前所述,来自传感器的原始数据包含大量的点。这些原始数据必须经过预处理,以提取感兴趣的对象,如汽车、自行车和行人。预处理使用边界盒检测器块完成。包围盒检测器也实现为一个MATLAB System™块,由一个助手类定义,HelperBoundingBoxDetectorBlock.它接受点云位置作为输入,输出与障碍物相对应的边界盒检测。该图表显示了边界盒检测器模型所涉及的流程,以及用于实现每个流程的计算机视觉工具箱™功能。它还显示了控制每个进程的块的参数。

块输出检测和分割信息金宝app仿真软件。公共汽车(金宝app模型)对象命名detectionBussegmentationBus.这些总线是使用helper函数在基本工作区中创建的helperCreateDetectorBus中指定的PreLoadFcn回拨。看见模型的回调(金宝app模型)有关回调函数的详细信息。

跟踪算法

该跟踪算法采用联合概率数据关联(JPDA)跟踪器实现,该跟踪器采用交互多模型(IMM)方法跟踪目标。IMM滤波器由helperInitIMMFilter,指定为块的“过滤器初始化功能”参数。在此示例中,IMM过滤器配置为使用两个模型,一个恒速长方体模型和一个恒转动率长方体模型。这些模型将长方体的尺寸定义为状态转换期间的常数,其估计值在滤波器校正阶段随时间而变化。下面的动画显示了在过滤器的预测阶段以不同概率混合恒定速度和恒定转动率模型的效果。

IMM过滤器在通过检测纠正过滤器时自动计算每个模型的概率。下面的动画显示了车道变更事件期间估计的轨迹和模型的概率。

有关状态转换和测量模型的详细说明,请参阅MATLAB示例的“目标状态和传感器测量模型”部分。

跟踪块选择“启用所有轨道输出”和“启用可检测的轨道id输入”复选框,从跟踪器输出所有轨道,并计算它们的检测概率作为其状态的函数。

计算检测能力

可检测性计算块是使用MATLAB函数(金宝app模型)块。该块计算跟踪器的可检测trackid输入,并将其输出为一个有两列的数组。第一列表示轨迹的trackid,第二列表示传感器和边界盒检测器检测轨迹的概率。

可视化

可视化块也使用MATLAB系统块实现,并使用HelperLidRexampleDisplayBlock.块使用运行时对象参数来显示块的输出。看到在模拟期间访问块数据(金宝app模型)有关如何在模拟期间访问块输出的更多信息。

检测和跟踪总线对象

如前所述,不同块的输入和输出是总线对象总线编辑器(金宝app模型).下图显示了用于检测和跟踪的总线结构。

检测

detectionBus输出包含2个元素的嵌套总线对象,NumDetections检测

第一个元素,NumDetections,表示检测次数。第二个元素检测是表示所有检测的固定大小的总线对象。第一个NumDetections总线对象的元素表示当前的检测集。注意总线的结构类似于objectDetection类。

轨道

轨道总线类似于检测总线。它是一个嵌套总线,其中NumTracks定义总线中轨道的数量轨道定义固定大小的轨迹。轨迹的大小由块参数“最大轨迹数”控制。

第二个元素轨道总线对象是由trackBusTracks.此总线由跟踪器块通过使用指定为前缀的总线名称自动创建。注意总线的结构类似于objectTrack类。

后果

检测器和跟踪器算法配置完全为用激光雷达追踪车辆:从点云到轨迹表MATLAB示例。运行模型后,您可以在图形上显示结果。下面的动画显示时间为0到4秒的结果。轨迹由绿色边界框表示。边界框检测由橙色边界框表示。探测中也有橙色点,表示分割为障碍物的点云。分段地面显示为紫色。裁剪或丢弃的点云以蓝色显示。请注意,通过将检测定位到车辆的可见部分,跟踪对象能够保持其形状和运动中心。这说明了在测量函数中建模的偏移和收缩效应。

封闭系统(“TrackVehicles金宝appSimulinkExample”);

总结

该示例演示了如何使用JPDA跟踪器和IMM过滤器,使用激光雷达传感器跟踪对象。您了解了如何对原始点云进行预处理以生成传统跟踪器的检测,传统跟踪器假设每个传感器扫描一个对象检测一次。您还学习了如何使用长方体模型来描述JPDA跟踪器跟踪的扩展对象。