为ADAS或全自动驾驶开发感知算法的工程师通常有大量的输入数据可供处理。但这些数据来自许多不同类型的传感器,包括雷达、激光雷达、摄像机和车道检测器,最初提出的问题比回答的要多。你如何理解这些数据,将其变为现实?如何您是否协调来自不同传感器的冲突输入?一旦您开发了一种算法,您如何评估它产生的结果?
这里有一个关于MATLAB特性和功能的指南®自动驾驶工具箱™ 这可以帮助您解决这些问题。我们将重点关注四项关键任务:可视化车辆传感器数据、标记地面真相、融合来自多个传感器的数据,以及合成传感器数据以测试跟踪和融合算法。
可视化车辆传感器数据
理解数据是感知系统开发早期阶段的主要挑战。传感器以不同的格式和速率提供其输出。例如,摄影机提供3D矩阵中的图像,激光雷达提供点列表,嵌入式或智能摄影机提供包含车辆、车道和其他对象详细信息的对象列表。这些输出的不同性质使得很难看到整体情况(图1)。
在这个早期阶段,我们需要确切地知道传感器是如何代表车辆周围的环境的。最好的可视化方式是鸟瞰图,因为它可以让我们在一个地方看到来自不同传感器的所有数据。
我们使用MATLAB和自动驾驶工具箱中的可视化工具来创建鸟瞰图。然后我们用这些对象向视图添加更多的细节:
- 的
coverageAreaPlotter
,显示传感器覆盖区域 - 的
detectionPlotter
,显示由视觉、雷达和激光雷达传感器检测到的物体列表 - 的
laneBoundaryPlotter
,将车道检测覆盖到图像上
我们现在有了传感器覆盖、检测和车道边界的精确可视化(图2)。
自动化地面真实标记
使用机器学习或深度学习技术训练目标探测器需要Ground truth。评估现有的检测算法也很重要。建立基本事实通常是一个劳动密集型的过程,需要在视频中手动一帧一帧地插入标签。自动驾驶工具箱中的Ground Truth Labeler应用程序包括计算机视觉算法,以加速标记Ground Truth的过程。该应用有三个主要功能(图3):
- 的车辆检测器通过使用聚合通道功能(ACF),自动检测和标记关键帧中的车辆。
- 的时间内插程序标记在所选关键帧之间的所有帧中检测到的对象。
- 的点跟踪器使用Kanade Lucas-Tomasi(KLT)算法的一个版本跨帧跟踪感兴趣的区域。
- 的添加算法允许您添加自定义算法,并促进对象检测器的迭代开发。
融合来自多个传感器的数据
实际上,每个感知系统都使用来自多个互补传感器的输入。协调来自这些传感器的数据可能是一个挑战,因为每个传感器可能会给出稍微不同的结果。例如,视觉检测器可能会报告某辆车在某个位置,而雷达检测器则会显示同一辆车在附近的一个位置,但在另一个位置完全不同的位置。
的multiObjectTracker
在自动驾驶工具箱跟踪和保险丝检测。一个常见的应用是融合雷达和视觉检测,并改善周围车辆的估计位置(图4)。
合成传感器数据以生成测试场景
一些测试场景(如即将发生的碰撞)太危险,无法在真实车辆中执行,而其他场景可能需要阴天或其他特定天气条件。我们可以通过合成对象级传感器数据来解决这一难题,以生成将道路、车辆和行人作为虚拟对象的场景。我们可以使用s合成数据以测试我们的跟踪和传感器融合算法(图5)。
在感知系统中使用车辆数据
车辆数据的可视化、融合和综合是开发目标检测算法的基础。当我们准备部署MATLAB算法时,我们可以使用MATLAB Coder™生成可移植的,符合ANSI/ISO的C/ c++代码,以集成到我们的嵌入式环境中。