主要内容

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

此示例向您展示了如何使用安装在自助式车辆顶部的LIDAR传感器的测量来跟踪车辆。由于LIDAR传感器的高分辨率能力,来自传感器的每个扫描包含大量点,通常称为点云。该示例说明了Simulink中的工作流程,用于处理点云并跟踪对象。金宝app在该示例中使用的LIDAR数据从高速公路驾驶场景中记录。您使用记录的数据跟踪带有联合概率数据关联(JPDA)跟踪器的车辆和交互多模型(IMM)方法。这个例子紧密跟随用激光雷达追踪车辆:从点云到轨迹表(传感器融合与跟踪工具箱)MATLAB®示例。

设置

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

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

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

模型概述

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

LIDAR和图像数据阅读器

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

边界框探测器

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

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

跟踪算法

该跟踪算法采用联合概率数据关联(JPDA)跟踪器实现,该跟踪器采用交互多模型(IMM)方法跟踪目标。IMM滤波器由helperInitIMMFilter,它被指定为块的“筛选初始化函数”参数。在该示例中,IMM滤清器被配置为使用两个模型,恒定速度长方体模型和恒定匝率长方体模型。该模型将长方体的尺寸定义为状态转换期间的常量,并且它们的估计在滤波器的校正阶段期间的时间在时间​​上发展。下面的动画显示了在滤波器的预测阶段期间将恒定速度和恒定转速模型混合恒定速度和恒定转速模型的效果。

当滤波器校正检测时,IMM滤波器会自动计算每个模型的概率。下面的动画显示了在车道更改事件期间模型的估计轨迹和模型的概率。

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

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

计算检测能力

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

可视化

还使用MATLAB系统块实现可视化块,并使用使用HelperlidareXampledisPlayplock..块使用runtimeObject.参数来显示块的输出。看到仿真期间访问块数据(金宝app模型)有关如何在仿真期间访问块输出的更多信息。

检测和跟踪总线对象

如前所述,不同块的输入和输出是总线对象。您可以使用该总线可视化每个总线的结构总线编辑器(金宝app模型).下面的图像显示了用于检测和轨道的总线结构。

检测

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

第一个元素,NumDetections,表示检测次数。第二个元素检测是表示所有检测的固定大小的总线对象。第一个NumDetections总线对象的元素表示当前的检测集。注意总线的结构类似于objectDetection(传感器融合与跟踪工具箱)类。

轨道

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

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

结果

检测器和跟踪器算法完全按照配置用激光雷达追踪车辆:从点云到轨迹表(传感器融合与跟踪工具箱)Matlab示例。运行模型后,您可以在图上可视化结果。下面的动画显示时间0到4秒的结果。曲目由绿色边界框表示。边界盒检测由橙色边界框表示。检测在它们内部也具有橙色点,表示点云被分段为障碍物。分段地显示在紫色。裁剪或丢弃的点云以蓝色显示。请注意,跟踪物体能够通过将检测定位在车辆的可见部分上来维持其形状和运动中心。这说明了在测量功能中建模的偏移和收缩效果。

close_system(“TrackVehicles金宝appSimulinkExample”);

总结

此示例显示了如何使用带有IMM滤波器的JPDA跟踪器来使用LIDAR传感器跟踪对象。您了解到如何预处理原始点云以生成传统跟踪器的检测,该检测是每个传感器扫描每个对象的一个​​检测。您还学习了如何使用Quote模型来描述JPDA跟踪器正在跟踪的扩展对象。

另请参阅

(传感器融合与跟踪工具箱)

相关的话题