随着自动驾驶技术的发展,车辆的智能化程度不断提高,这体现了车辆感知,决策以及执行的能力。在算法开发和迭代过程中,提高测试和开发效率,关键在于多传感器数据的高质量采集,确保数据的同步性、完整性和一致性。 为了应对这一挑战,必须采取有效的数据整合策略。这包括开发处理不同数据速率和格式的组件,以及设计数据在时间上精确对齐的同步机制。进而创建一个统一的数据流形式,实时检测传感器的观测结果并进行落盘存储。 为了解决上述问题, ADTF 提供了一个强大的 Streaming Service ,它专门针对自动驾驶多传感器数据采集的需求设计。 ADTF Streaming Service 以其高效的数据处理能力、灵活的架构设计和强大的同步机制,为自动驾驶数采系统提供了一个高质量的解决方案。 一、ADTF 流服务 在ADTF中,流服务(Streaming Services)扮演着至关重要的角色,它们定义了系统的 入口点(Streaming Source) 和 出口点(Streaming Sink) 。具体来说,流服务既可以是数据管道的起点也可以是终点,它们通常用于处理来自硬件的样本数据和数据触发器。 1、流服务源(Streaming Source) 流服务源是样本和数据触发器进入系统的入口点。通常,任何设备链接都会作为流服务源来实现,组件如下图1所示: 图1:Streaming Source组件 Streaming Source 支持以下的应用场景: (1)从摄像头读取视频流 (2)从CAN总线设备读取CAN消息 (3)作为硬盘读取器提供基于文件的仿真数据 (4)通过网络或进程间连接接收来自分布式系统的样本,如ROS(机器人操作系统)或FEP(功能工程平台) 2、流服务汇(Streaming Sink) 流服务汇是样本和触发器离开系统的出口点。通常,任何设备链接都会作为流服务汇来实现。组件如下图2所示: 图2:Streaming Sink组件 Streaming Sink 支持以下应用场景: (1)向CAN总线设备写入原始CAN消息 (2)向设备写入FlexRay周期或汽车以太网PDU (3)创建硬盘访问,用于基于文件的数据记录和高性能录制 二、数据链路 流服务是实现高效数据处理和传输的关键,通过 Streaming Source和Streaming Sink,可以针对不同实际应用需求,搭建对应的数据链路 ,包括数据管道(Data Pipe)、子流(Substreams)以及触发管道(Trigger Pipe)。 1、数据管道(Data Pipe) 数据管道是连接样本写入器(Streaming Sink)和样本读取器(Streaming Source)的桥梁。在ADTF中,如图3所示,一个常见的数据管道从发送过滤器的样本写入器的输出引脚(Out Pin)开始,通过一个样本流(Sample Stream),到达一个或多个输入引脚(In Pins)及其对应的样本读取器。 图3:Data Pipe 2、子流(Substreams) 子流是减少过滤器图中引脚和连接复杂度的一种方法,如图4所示。通过使用子流,可以简化数据流的路径,提高系统的可读性和可维护性。 图4:子流 3、触发管道(Trigger Pipe) 触发管道是ADTF中基于触发路径的连接,通常从主动运行器(Active Timer Runner)开始,如图5所示,它触发连接的组件,类似于过滤器的运行器。 图5:触发管道 例如,在自动驾驶数据采集中,通过设计灵活的触发机制,数据管道可以同步来自雷达、摄像头和激光雷达的数据流,确保它们在时间上的对齐。 三、总结 ADTF Streaming Service在自动驾驶数采领域的应用,关键在于其能够实现多传感器数据的高效同步与处理。以下是几个关键应用点: 多传感器数据融合: 通过数据管道同步不同传感器的数据,实现高精度的环境感知。 实时决策支持: 利用触发管道快速响应传感器触发的事件,为决策算法提供实时数据。 数据存储与回放 :通过Streaming Sink实现数据的高效存储,以及通过子流进行数据回放和分析。 ADTF Streaming Service为自动驾驶数采系统提供了一个强大的工具,它不仅能够处理和同步多传感器数据,还能够适应不断变化的开发需求。