主要内容

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

这个例子向您展示了如何使用安装在车辆顶部的激光雷达传感器的测量来跟踪车辆。由于激光雷达传感器的高分辨率能力,传感器的每次扫描都包含大量的点,通常称为点云。该实例说明了在Simulink中处理点云和跟踪对象的工作流程。金宝app本例中使用的激光雷达数据来自高速公路驾驶场景。您使用联合概率数据关联(JPDA)跟踪器和交互多模型(IMM)方法跟踪记录的数据。该示例紧跟使用激光雷达跟踪车辆:从点云到跟踪列表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模型)块。块的代码是由辅助类定义的,HelperLidarDataReader而且HelperImageDataReader分别。图像和激光雷达数据阅读器从MAT文件中读取记录的数据,并分别输出参考图像和点云中点的位置。

包围盒探测器

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

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

跟踪算法

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

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

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

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

计算检测能力

计算可检测性块是使用MATLAB函数(金宝app模型)块。该块计算跟踪器的可检测TrackIDs输入,并将其输出为一个包含2列的数组。第一列表示轨道的trackid,第二列指定它们被传感器和包围盒检测器检测到的概率。

可视化

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

检测和跟踪总线对象

如前所述,不同块的输入和输出由总线对象定义。控件可以可视化每个总线的结构式编辑器(金宝app模型).下面的图像显示了用于检测和跟踪的总线结构。

检测

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

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

跟踪

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

第二个元素跟踪总线对象定义为trackBusTracks.该总线由跟踪块通过使用指定为前缀的总线名自动创建。注意,总线的结构与objectTrack类。

结果

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

close_system (“TrackVehicles金宝appSimulinkExample”);

总结

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