康谋分享 | 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 ...
随机推荐
- 认识soui4js(第2篇):代码编辑及调试
开始 假定您使用向导在d:\jsdemo目录创建一个工程,您也已经安装好了vscode, 那么您应该可以看到下面的界面效果: 工程生成后,主要包含一个soui资源包及一个main.js 要运行这个程序 ...
- 用python做时间序列预测十:时间序列实践-航司乘客数预测
本文以航司乘客数预测的例子来组织相关时间序列预测的代码,通过了解本文中的代码,当遇到其它场景的时间序列预测亦可套用. 航司乘客数序列 预测步骤 # 加载时间序列数据 _ts = load_data() ...
- QT5笔记:11. Qt类库的模块
基础模块:提供了Qt的最基本的功能 附加模块:实现了一些特定功能的提供了附加价值的模块 增值模块:商业版才有的模块,单独发布的提供额外附加价值的模块或工具 技术预览模块:一些处于开发阶段,但是可以作为 ...
- AI在电子游戏中的应用:如何让虚拟世界更具沉浸感
在过去的几十年里,电子游戏已从简单的像素化图形演变为高度复杂.视觉震撼的虚拟世界.从<超级马里奥>到<荒野大镖客2>,游戏的画面.音效和交互方式不断突破技术的极限.近年来,人工 ...
- mybatis - [05] Mybatis的CURD
数据库:mysql 8.0.28 技术框架:mybatis 3.5.13.maven 3.8.7 一.准备工作 (1)数据库建库建表 -- 创建数据库 create database if not e ...
- Kettle - 使用案例
原文链接:https://blog.csdn.net/gdkyxy2013/article/details/117106691 案例一:把seaking的数据按id同步到seaking2,seakin ...
- Hive - [01] 概述
一.Hive是什么 是Facebook开源,用于解决海量结构化日志的数据统计工具. 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. Hive处理的数 ...
- 【忍者算法】从快慢指针到倒数查找:优雅解决链表倒数问题|LeetCode第19题"删除链表的倒数第N个结点"
从快慢指针到倒数查找:优雅解决链表倒数问题 从生活场景说起 想象你在一个漫长的队伍中,想知道自己距离队尾还有多少人.一个巧妙的方法是:让你的朋友从你所在位置往后数N步,然后你和朋友一起向后走.当朋友走 ...
- NCS开发学习笔记-基础篇-第 1 课 – nRF Connect SDK 简介
第 1 课 – nRF Connect SDK 简介 目标 了解 nRF Connect SDK 的结构和内容 在内部,nRF Connect SDK 代码分为四个主要存储库: nrf – 应用程序. ...
- python 二级 语言基本元素笔记-字符串
l='12345' 1.递增顺序: 正向递增从0开始 负向从[-1]开始,l[1]=2,l[-1]=5 2.切片操作:左开右闭,l[2:5]=3,4 3.导入库,引入 库名.函数名 input函数 输 ...