此示例演示如何使用安装在 ego 车辆上的激光雷达传感器捕获的激光雷达点云数据来检测、分类和跟踪车辆。此示例中使用的激光雷达数据是从高速公路驾驶方案中记录的。在此示例中,对点云数据进行分段,以确定使用网络的对象类别。具有交互式多模型滤波器的联合概率数据关联(JPDA)跟踪器用于跟踪检测到的车辆。
一、概述
感知模块在实现具有ADAS系统的车辆的完全自主性方面发挥着重要作用。激光雷达和摄像头是感知工作流程中必不可少的传感器。激光雷达擅长提取物体的精确深度信息,而相机则产生丰富而详细的环境信息,这对于物体分类非常有用。
此示例主要包括以下部分:
-
接地层分割
-
语义分割
-
定向边界框拟合
-
面向跟踪的边界框
流程图概述了整个系统。
二、加载数据
激光雷达传感器以有组织格式或无组织格式生成点云数据。此示例中使用的数据是使用 Os1 激光雷达传感器收集的。此激光雷达生成具有 64 条水平扫描线的有组织的点云。点云数据由三个通道组成,表示点的 x、y 和 z 坐标。每个通道的大小为 64 x 1024。
三、接地层分割
此示例采用混合方法,该方法使用段“来自”地面“LidarData(计算机视觉工具箱)和 pcfitplane(计算机视觉工具箱)函数。首先,使用函数估计接地平面参数。估计的接地平面沿着车辆方向划分为条带,以便使用每个条带上的功能来适应平面。这种混合方法以分段方式稳健地适合地平面,并处理点云中的变化。
四、语义分割
示例使用预训练的网络模型。 是一个端到端的实时语义分割网络,针对汽车、卡车和背景等对象类进行了训练。网络的输出是一个屏蔽的图像,每个像素都根据其类进行标记。此遮罩用于过滤点云中不同类型的对象。网络的输入是五通道图像,即 x、y、z、强度和范围。有关网络或如何训练网络的详细信息,请参阅使用 PointSeg 深度学习网络(激光雷达工具箱)的激光雷达点云语义分割示例。
准备输入数据:该函数从加载的点云数据生成五通道数据。
在加载的预训练网络的一个帧上运行前向推理。
使用生成的语义掩码过滤包含卡车的点云。同样,为其他类过滤点云。
五、簇状和边界框管接头
提取不同对象类的点云后,通过使用 pcsegdist(计算机视觉工具箱)函数应用欧几里得聚类来对对象进行聚类。为了对属于单个聚类的所有点进行分组,将获得的作为聚类的点云用作非地面点中增长区域的种子点。使用 findNearestNeighbors(计算机视觉工具箱)函数遍历所有点以扩大该区域。提取的聚类将使用 pcfitcuboid(激光雷达工具箱)功能拟合到 L 形边界框中。从自上而下的角度来看,这些车辆簇类似于字母L的形状。此功能有助于估计车辆的方向。定向边界框拟合有助于估计对象的航向角,这在路径规划和交通机动等应用中非常有用。
也可以通过查找每个方向上的最小和最大空间范围来计算聚类的长方体边界。但是,此方法无法估计检测到的车辆的方向。这两种方法之间的区别如图所示。
六、可视化设置
使用该类在一个窗口中可视化完整的工作流。可视化窗口的布局分为以下几个部分:
-
激光雷达范围图像:2-D 中的点云图像作为范围图像
-
分割图像:从语义分割网络生成的检测到的标签,该网络与强度图像或数据的第四通道叠加在一起
-
定向边界框检测:具有定向边界框的 3-D 点云
-
顶视图:具有定向边界框的点云的俯视图
循环访问数据
该类是一个包装器,其中包含上述各节中提到的所有分段、聚类和边界框拟合步骤。使用该函数提取检测到的对象。
跟踪定向边界框
将使用联合概率数据关联 (JPDA) 跟踪器。时间步长设置为 0.1 秒,因为数据集是在 10 Hz 下捕获的。跟踪器中使用的状态空间模型基于具有参数的长方体模型,dt[x, y, z, φ, l, w, h].有关如何追踪激光雷达数据中边界框的更多详细信息,请参阅使用激光雷达追踪车辆:从点云到追踪列表示例。在此示例中,类信息是使用 的属性提供的。创建新轨道时,使用帮助程序函数定义的筛选器初始化函数将使用检测的类来设置对象的初始维度。这有助于跟踪器使用轨道的适当尺寸调整边界框测量模型。
七、总结
此示例显示了如何在激光雷达数据上检测和分类装有定向边界框的车辆。还学习了如何使用 IMM 筛选器跟踪具有多个类信息的对象。通过添加更多训练数据,可以进一步改进语义分割结果。
八、程序
使用Matlab R2021a版本,点击打开。
打开下面的“DetectClassify...Example.mlx”文件,点击运行,就可以看到上述效果。
关注下面公众号,后台回复关键词:使用激光雷达检测分类跟踪车辆仿真,发送源码链接。