康谋分享 | ADTF过滤器全面解析:构建、配置与数据处理应用
在ADTF (Automotive Data and Time-Triggered Framework)中,过滤器(Filter)扮演着数据处理的核心角色。过滤器是处理数据流的基本单元,它们接收、处理并发送数据。接下来,将分享ADTF中创建和使用过滤器,包括设置输入输出针脚(Pins)、配置触发器(Triggers)以及处理数据样本(Samples)。
一、过滤器基础
过滤器是ADTF中用于数据处理和转换的小型处理单元,可以通过特定的接口接收和发送数据,如图1所示。

图1 Filter
过滤器核心能力如下:
1. 数据接收:通过输入引脚(In Pins)和对应的样本读取器(Sample Reader)接收数据。
2. 数据发送:通过输出引脚(Out Pins)和对应的样本写入器(Sample Writer)发送数据。
3. 数据处理:在运行器(Runners)(也称为触发上下文、可运行对象或可调用对象)的上下文中处理数据。
在进行过滤器的设计,考虑将数据传输与运行时行为分离。因此引入了触发机制,包括数据触发和时间触发。
1. 数据触发: 功能在传入数据事件上运行。
2. 时间触发: 功能在传入时间事件上运行。
通过这种设计支持构建一个强大且可适应的系统,使用过滤器可以轻松集成和定制。比如在数采系统中,通过不同的时间触发设计,以适应不同频率的传感器数据采集。或者利用cDataTriggerHint类来确保当车辆传感器数据(如摄像头图像)到达时,触发相应的数据处理算法运行,从而实现实时数据流的高效响应和处理。
二、创建过滤器
通常,在ADTF中滤波器会被打包成一个插件。通过ADTF 的插件机制使其能够在 ADTF 的运行时加载。在滤波器中,可以通过可以创建输出引脚或输入引脚,这里我们以输出引脚为例。引脚传输出去的数据,在ADTF中称为样本(Sample)。其代码案例如下,创建一个滤波器并添加一个输出引脚及样本数据。

三、 样本(Sample)
样本(Sample)是 ADTF中用于数据传输的基本单元。它们不仅包含数据本身,还包含与数据流相关的元信息,如图2所示。

图2 Sample
一般来说,样本通过 streaming::ISample 接口进行操作。其样本组成包含以下内容:
1. 时间戳(Timestamp):为每个数据提供时间关联。
2. 样本缓冲区(SampleBuffer):通常是一个内存块的引用,包含用户数据。
3. 样本信息(Sample Info)(可选):提供额外的元数据。
4. 子流 ID(Substream Id)(可选):用于标识特定的数据子流。
比如我们可以轻易实现将内存缓冲区内容复制到样本中,实现数据传输。

四、过滤器应用
ADTF过滤器的应用场景广泛,它们不仅能够处理和转换数据,还能够根据特定的需求定制功能。在图3所示,在人脸识别算法工程中,过滤器被用于处理从摄像头捕获的视频流。
首先,一个过滤器用于解码视频流,将原始数据转换为图像帧。接下来,通过一个复杂的过滤器(OpenCV Face Detector Filter)实现人脸识别算法,识别并跟踪视频中的人脸。通过这些过滤器的协同工作,系统能够实时处理视频数据,并提供有用的输出,如安全监控或人流量统计。

图3 人脸识别算法工程
此外,过滤器可用于多种用途,包括但不限于:
1. 解码来自CAN、MOST或FlexRay等设备的流源数据。
2. 预处理传入数据,为算法实现做准备。
3. 通过复杂的算法实现重新计算和合并传入数据。
4. 实现循环控制器。
5. 接收传入数据并进行数据可视化。
五、总结
ADTF过滤器提供了一个灵活且强大的平台,用于构建和集成数据处理流程。无论是在汽车、工业自动化等领域,过滤器都能够提供定制化的解决方案,满足特定的技术需求。通过合理设计和配置过滤器,可以大大提高数据处理的效率和可靠性。
我是分享自动驾驶技术的康谋,关注我,了解更多信息!
康谋分享 | ADTF过滤器全面解析:构建、配置与数据处理应用的更多相关文章
- jQuery2.x源码解析(构建篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 笔者阅读了园友艾伦 Aaron的系列博客< ...
- 一个.NET通用JSON解析/构建类的实现(c#)转
转自:http://www.cnblogs.com/xfrog/archive/2010/04/07/1706754.html NET通用JSON解析/构建类的实现(c#) 在.NET Framewo ...
- Python 解析构建数据大杂烩 -- csv、xml、json、excel
Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...
- STM32 CAN总线标识符过滤器难点解析
STM32 CAN总线标识符过滤器难点解析 原创 2016年05月31日 15:12:24 标签: stm32 / CAN 4910 CAN总线是目前应用非常多的一种总线,在汽车电子,航空航天中应用广 ...
- 一个.NET通用JSON解析/构建类的实…
一个.NET通用JSON解析/构建类的实现(c#) 在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- 分析Python中解析构建数据知识
分析Python中解析构建数据知识 Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记 ...
- BeanDefinition 解析流程【解析所有配置类】
BeanDefinition 解析流程 BeanDefinition 解析入口:ConfigurationClassPostProcessor#postProcessBeanDefinitionReg ...
- Spring源码解析 – @Configuration配置类及注解Bean的解析
在分析Spring 容器创建过程时,我们知道容器默认会加载一些后置处理器PostPRocessor,以AnnotationConfigApplicationContext为例,在构造函数中初始化rea ...
- Spring MVC的多视图解析器配置及与Freemarker的集成
一.从freemarker谈起 Freemarker使用模板技术进行视图的渲染.自从看了Struts标签.Freemarker.JSTL的性能对比后,我毅然决定放弃Struts标签了!效率太差…… S ...
随机推荐
- 混元API的加密机制与原生集成实战
今天,我们将重点讨论在对接混元大模型时需要特别关注的几个要点.首先,最为关键的一点是,混元大模型的加密方式相比于其他大模型更为复杂和严密.在对接过程中,我们通常避免使用混元官方提供的SDK进行集成,主 ...
- 存储过程专题(Oracle)
本文转自 https://www.cnblogs.com/lukelook/p/9600407.html,感谢博主 豆豆DE思念 整理分享. 1.Oracle 存储过程基本格式 最简单的版本 is ...
- flutter3-dymall仿抖音直播商城|Flutter3.27短视频+直播+聊天App实例
自研flutter3.27+dart3.6+getx实战抖音短视频+聊天+直播电商带货app商城应用. flutter_dymall一款基于最新版Flutter3.27+Dart3.x+Getx+me ...
- [翻译] 为什么 Tracebit 用 C# 开发
原文: [Why Tracebit is written in C#] 作者: [Sam Cox (Tracebit联合创始人兼CTO)] 译者: [六六] (译注:Tracebit成立于2022年, ...
- captura怎样解决FFmpeg解析错误问题
captura怎样解决FFmpeg解析错误问题?captura软件里大家在进行屏幕录制的工作得时候都会用到captura软件,软件得功能可以满足大家的需求,可以轻松的录制屏幕,进行屏幕截屏等,但是又小 ...
- STM32实战——ESP8266 WIFI模块
ESP8266 硬件介绍 ESP8266系列模组有哪些: 在本实验中,ESP8266与ESP-01不做区分. ESP-01引脚介绍: 引脚 功能 3.3 3.3V供电,避免使用5V供电 RX UART ...
- C#短链接生成方法
public class Program { static void Main() { Random rd = new Random(); for (int i = 0; i < 10; i++ ...
- 后台返回文件URL,前端下载文件,即使设置文件名,下载的文件名称并不是自己所设置的问题
1.背景 项目中遇到这么一个问题,上传文件后,后台返回的是一个URL,前端需要通过点击下载这个文件 2.首次处理 当时一看是下载文件,觉得很简单,无非是通过创建a标签来实现,以下是我当时的代码,用的是 ...
- k8s NotReady cni config uninitialized
前言 k8s node 节点 join master 后,状态报错:NOT READY 查看 kubelet 日志 journalctl -xeu kubelet 报错如下:Container run ...
- 【Git】在 Eclipse 中使用 Git
在 Eclipse 中使用 Git Eclipse 中默认自带了 Git 插件,通过点击 Help→About Eclipse IDE 可以查看 1 全局配置 1.1 配置用户名和邮箱 点击 Wind ...