主要内容

在Simulink中使用激光雷达数据跟踪车辆万博1manbetx

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

设置

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

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

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

模型概述

load_system (“TrackVehicles万博1manbetxSimulinkExample”);set_param (“TrackVehicles万博1manbetxSimulinkExample”“SimulationCommand”“更新”);open_system (“TrackVehicles万博1manbetxSimulinkExample”);

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

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

边界框探测器

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

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

跟踪算法

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

当用检测对滤波器进行校正时,IMM滤波器自动计算每个模型的概率。下面的动画显示了在变道事件中估计的轨迹和模型的概率。

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

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

计算检测能力

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

可视化

可视化块也使用MATLAB系统块实现,并使用HelperLidarExampleDisplayBlock.块使用RunTimeObject参数来显示块的输出。看到在模拟过程中访问块数据(万博1manbetx模型)有关如何在模拟期间访问块输出的进一步信息。

检测和跟踪总线对象

如前所述,不同块的输入和输出是总线对象。控件可以可视化每个总线的结构公共汽车编辑器(万博1manbetx模型).下面的图像显示了用于检测和轨道的总线结构。

检测

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

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

跟踪

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

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

结果

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

close_system (“TrackVehicles万博1manbetxSimulinkExample”);

总结

这个例子展示了如何使用带有IMM滤波器的JPDA跟踪器来使用激光雷达传感器跟踪目标。您了解了如何预处理原始点云以生成常规跟踪器的检测,该跟踪器假定每个传感器扫描的每个对象都有一个检测。您还学习了如何使用长方体模型来描述JPDA跟踪器所跟踪的扩展对象。