康谋分享 | 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 ...
随机推荐
- 二叉树神级遍历算法:morris遍历算法
morris遍历的实质 建立一种机制,对于没有左子树的节点只到达一次,对于有左子树的节点会到达两次 morris遍历的实现原则 记作当前节点为cur. 如果cur无左孩子,cur向右移动(cur=cu ...
- TortoiseGit拉取出现“Could not open repository. libgit2 returned: repository path……”错误的解决办法
TortoiseGit拉取出现"Could not open repository. libgit2 returned: repository path--"错误的解决办法 1.问 ...
- Mac启用或停用root用户
1.选取苹果菜单 () >"系统偏好设置",然后点按"用户与群组"(或"帐户"). 2.点按 ,然后输入管理员名称和密码. 3.点按 ...
- Salt key 系统的接口
官方文档:https://docs.saltstack.com/en/3000/ref/wheel/all/salt.wheel.key.html Wheel 系统包装了Salt key 系统,以编程 ...
- java http协议,添加header以及post传参,以及服务端获取
一.客户端请求 public static String test(){ JSONObject obj = new JSONObject(); obj.put("cusName", ...
- autMan奥特曼机器人-青龙运行结果推送到autMan
一.使用到的autMan云插件为"青龙推送autMan"或"JD未来活动定时运行" 二选一即可,两都不可同时安装,有冲突 青龙推送autMan:这个插件仅用于将 ...
- 解释 Git 的基本概念和使用方式
Git是一种分布式版本控制系统,常用于管理和追踪软件开发项目的代码.以下是Git的基本概念和使用方式的解释: 仓库(Repository):Git管理代码的基本单位,可以理解为一个存储代码历史和版本信 ...
- 傻妞教程——对接mongoDB使用返佣系统
使用docker安装mongo 1.安装 1.1 拉取mongo镜像 docker pull mongo:4.4 1.2 创建mongo数据持久化目录 mkdir -p /docker_volume/ ...
- CentOS7搭建CDH5.15.0集群
CentOS7搭建CDH5.15.0集群 一.节点说明 节点 Server/Agent Memory master Server & agent 4G node1 agent 2G node2 ...
- win7系统安装mysql新建数据库/数据表及故障处理,安装mysql后net start mysql服务无法启动
问题描述:win7系统安装mysql,安装mysql后net start mysql服务无法启动 1.下载mysql: 官网地址:https://dev.mysql.com/downloads/mys ...