软件定义汽车场景中的数据流处理

这篇具有很好参考价值的文章主要介绍了软件定义汽车场景中的数据流处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在当今快速发展的技术环境中,汽车行业正处于变革期。软件定义汽车(Software-Defined Vehicle, SDV)处于这场变革的前沿,为用户提供了无与伦比的互联、智能和数据洞察。SDV 会产生海量的数据,如何实时高效的处理这些数据成为当务之急。

本文将深入分析 SDV 数据的流处理技术,探讨其如何在软件定义汽车领域助力安全、性能和用户体验的创新。

什么是软件定义汽车?

软件定义汽车是一种高度互联、自动化和智能化的车辆。它们能够与其他车辆、基础设施、云服务和移动设备实现信息交互,并根据不同的环境和用户需求进行自适应调整。SDV 还可以通过软件应用接受远程控制或更新,从而改变其功能、性能或外观。

例如,通过 SDV 我们可以:

  • 根据司机的心情或路况,在环保、运动或自动驾驶等不同的模式之间自由切换。
  • 根据乘客的偏好或天气状况,调节其内部灯光、音乐或温度。
  • 接收来自制造商或第三方供应商的软件更新,从而提升其功能或安全性。

通过流处理技术挖掘 SDV 数据价值

SDV 从传感器、摄像头、GPS、雷达等多种来源生成海量的数据,这些数据具有多样性和复杂性。它们需要实时或近实时地进行处理,以便为 SDV 及其用户提供有用的信息并协助他们决策行动。

流处理是一种针对此类数据流的高效处理技术。它采用数据到达后立即处理的方式,无需在数据库或文件系统中保存。流处理可以对数据流执行各种操作,如过滤、聚合、转换、补全和分析。

此外,流处理可以整合来自多个来源的数据,实现多源数据的集成,从而提供统一的数据视图。它还具有水平扩展的能力,以应对不断增加的数据量和增长速度。

通过流处理,我们可以利用 SDV 数据在以下方面获益:

  • 提升安全和性能:流处理可以发现车辆的异常或故障,并及时通知司机或服务提供商。它还可以根据数据分析结果来调节参数以优化 SDV 的性能。
  • 优化用户体验:流处理可以根据司机或乘客的偏好或行为,为他们提供定制化的建议或反馈。它还可以为 SDV 提供新的功能或服务,如娱乐、导航或社交网络。
  • 提高效率和利润:流处理可以通过提高资源利用和降低能源消耗来减少 SDV 的运营和维护成本。此外,流处理可以通过从数据洞察中衍生的增值服务和产品为服务提供商创造额外的收入。

eKuiper:适用于 SDV 数据的强大流处理引擎

LF Edge eKuiper 是一款专为物联网边缘设计的轻量级数据流处理引擎。它的核心功能仅占用 10MB 的空间,可以轻松地部署在车辆 MPU 上。用户可以借助 eKuiper 来对 SDV 数据进行流处理。

在我们的文章 使用 eKuiper 按需桥接 CAN Bus 数据至 MQTT 中,我们已经演示了 eKuiper 如何连接和解析 CAN 总线数据。此外,eKuiper 还支持 MQTT、HTTP、SQL 数据库和文件等多种数据源。结合 NanoMQ,它甚至可以连接到与 MQTT 桥接的 SOA(SomeIP、DDS)数据。通过流处理能力,eKuiper 可以计算和转换来自这些不同数据源的数据,以生成有用的信息并触发相应的操作。

eKuiper 使用 SQL 来创建称为规则的流处理管道。这些规则可以实现热部署和热更新。多个规则可以灵活地串联起来,以构建复杂的场景。通过单个规则,eKuiper 可以实现:

  • 信号层数据筛选:灵活选择想要查看或分析的信号层数据,无论是指定的信号、变化的信号、或符合某些条件的信号。
  • 车辆侧规则引擎:可以在车辆侧设置一些自定义规则,让 eKuiper 在满足某些条件时自动执行一些动作。比如,您可以设置当车速超过 70 公里时,自动关闭所有车窗。
  • 智能分析:利用 eKuiper 的本地分析能力,在不需要编码或连接云端的情况下,可以对数据进行实时处理和分析。您还可以使用 eKuiper 集成的人工智能模型(目前支持 TF Lite)来进行更深入的数据挖掘和预测。它还可以将数据反馈给车辆上的训练模型,以提高模型的准确性和效率。
  • 边缘计算:利用 eKuiper 的边缘计算能力,降低传输带宽和云端计算压力。eKuiper 可以根据时间窗口对数据进行汇总,大幅减少传输的数据量,同时保持数据的趋势不变。它还支持对数据进行下采样和压缩,以节省存储空间和网络资源。
  • 异质数据融合:利用 eKuiper 的数据融合能力,解析来自各种协议(如 TCP、UDP、HTTP、MQTT)和各种格式(如 CAN、JSON、CSV)的数据,并通过灵活的规则将其合并为一个统一的数据流。
  • 消息路由:利用 eKuiper 的消息路由能力,智能地决定哪些数据发送到云端,哪些数据保存在本地供其它车载应用使用。比如,您可以根据 GDPR 或某些白名单来确定消息路由,以保护用户的隐私和安全。

eKuiper 赋能软件定义汽车

根据 eKuiper 的上述能力,我们可以自由搭建 SDV 工作流,并通过执行它们来实现各种可能的场景。

安全问题检测

利用车辆的实时数据,eKuiper 可以智能地分析和识别安全问题,并及时地提醒司机采取措施。我们可以使用简单的 SQL 语句来制定自己的安全规则,比如当车速超过限制时发出警告;也可以使用人工智能模型来检测更复杂的安全问题,比如疲劳驾驶、车道偏离、碰撞风险等。我们只需将训练好的 TensorFlow Lite 模型上传到车上,eKuiper 就会自动加载并将数据输入模型。其结果可以用于触发动作或提醒司机。

在下面的示例中,我们将使用 CAN 总线的数据来识别频繁的刹车行为并提醒司机。

SELECT CASE WHEN count(*) > 5 THEN 1 ELSE 0 END as alert
FROM CANStream
WHERE SENSOR_TYPE_BRAKE_DEPTH>15
Group by SlidingWindow(ss, 10)

它检测最近 10 秒内,是否有超过 5 个刹车深度大于 15 的刹车事件。如果有,它将发出警报。

利用自动化功能提升用户体验

利用解析出的有意义的数据,eKuiper 可以自动地触发一些动作,以优化用户的驾驶体验。比如,当您忘记关车窗而车速超过了 80 公里/小时,eKuiper 可以自动关闭车窗;当车辆陷入拥堵而车内温度升高时,eKuiper 可以自动开启空调,并根据您的偏好调节温度和风速。这样,您就可以享受更加舒适和便捷的驾驶体验。

在下面的示例中,我们将使用 CAN 总线的数据,根据预先训练好的人工智能模型,为司机自动推荐最佳驾驶模式。假设我们已经根据之前收集的 CAN 总线数据训练好了能够识别驾驶模式的模型。

  1. 通过 REST API 将模型上传到车辆。
  2. 定义规则来加载模型,对流数据进行推理,并通过 MQTT 发送警报。tflite 函数是 eKuiper 提供的一个插件函数,用于对 TensorFlow lite 模型进行推理。第一个参数是可变的模型名称,接下来的参数是输入数据。结果是模型的输出。
SELECT tflite("trained_mode",signal1, signal2) as result FROM CANStream

派生指标的计算与可视化

收集的数据通常只包含基本的原始数据。为了从数据中获取有用信息,我们需要用算法进行计算。例如,计算指定时间窗口内的平均速度。然后可以在汽车的界面上展示这些数据并提供驾驶建议。

在下面的示例中,我们记录并计算每次刹车的模式,包括平均减速度、刹车距离等。这种分析有助于我们了解用户的刹车习惯,并根据这些信息为司机提供建议。结果可以显示在汽车的界面上,让司机了解自己的刹车习惯。

eKuiper 使用两条规则来完成这个功能。第一条规则检测刹车并选择要计算的信号。第二条规则逐步计算这些指标。这两条规则由内存中的 sink/source 连接,像流水线一样工作。

规则 1:检测刹车信号,确定计算的开始条件,并选择适当的信号传递给下一条规则。我们可以使用 SQL 语句来描述这个算法:只有当刹车打开且速度超过 10 时,才开始进行计算。当刹车关闭或速度降低到 3 以下时,停止计算。

SELECT CASE WHEN brake = 1 AND speed > 10 THEN 1 ELSE 0 END AS brake_start,
       CASE WHEN brake = 0 OR speed < 3 THEN 1 ELSE 0 END AS brake_end,
       speed, distance, timestamp
FROM CAN_STREAM
WHERE brake_start = 1 OR (brake_end = 1 AND lag(brake_end) = 0)

这条规则将在刹车开始或结束时,把数据传送给第二条规则。输出的数据格式如下:

{
  "brake_start": 1,
  "brake_end": 0,
  "speed": 20,
  "distance": 100,
  "timestamp": 1622111111
}
{
  "brake_start": 1,
  "brake_end": 0,
  "speed": 18,
  "distance": 120,
  "timestamp": 1622111311
}
...
{
  "brake_start": 0,
  "brake_end": 1,
  "speed": 0,
  "distance": 200,
  "timestamp": 1622112511
}

规则 2:按照公式 a=△v/△t 计算平均减速度,并在刹车停止时输出计算结果。

SELECT lag(speed) OVER (WHEN had_changed(brake_end)) as start_speed, speed as end_speed, (start_speed - end_speed) / (timestamp - lag(timestamp) OVER (WHEN had_changed(brake_end)) ) AS deceleration
FROM BRAKE_MEM_STREAM
WHERE brake_end = 1

其中,lag(speed) OVER (WHEN had_changed(brake_end)) 指的是 brake_end 上一次从 1 变成 0 的时刻的速度值,也就是刹车启动时的速度。该 lag 函数也用于计算时间间隔。结果如下图所示,它只有在刹车停止时才会输出一次。

{
  "start_speed": 20,
  "end_speed": 0,
  "deceleration": 0.5
}

结语

在软件定义汽车不断塑造未来交通的过程中,流处理技术已成为发挥 SDV 数据全部价值的关键驱动力。通过实时分析能力,流处理技术提升了安全性、优化了性能,并为智能车辆提供了个性化的体验。随着技术的不断进步和应用的扩展,流处理技术将深刻改变我们对软件定义汽车的认知和互动方式,让我们的出行变得更加安全、舒适和高效。

版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.com/zh/blog/data-stream-processing-for-software-defined-vehicle文章来源地址https://www.toymoban.com/news/detail-548314.html

到了这里,关于软件定义汽车场景中的数据流处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算与大数据处理:实时计算与数据流

    云计算和大数据处理是当今信息技术领域的两个热门话题。随着互联网的普及和人们生活中的各种设备的不断增多,我们生活中的数据量不断增加,这些数据需要存储和处理。云计算是一种基于互联网的计算资源共享和分配模式,可以让用户在需要时轻松获取计算资源,从而

    2024年04月13日
    浏览(46)
  • 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

    目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流  2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层  1、分层说明  2、顶层数据流图 3、中层数据流图 4、底层数据流图 四、数

    2024年02月13日
    浏览(41)
  • 算法进阶——数据流中的中位数

    题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当

    2024年01月24日
    浏览(46)
  • 【软件设计师】程序猿需掌握的技能——数据流图

    作为一个程序员,不仅要具备高水平的程序编码能力,还要是熟练掌握软件设计的方法和技术,具有一定的软件设计能力,一般包括软件分析设计图(常见的有数据流图,程序流程图,系统流程图,E-R图)和其他对业务表达的说明资料。 数据流图(Data Flow Diagram,简称DFD)

    2024年02月20日
    浏览(49)
  • [Java 探索之路~大数据篇] 新时代大数据流处理入门指南

    本文主要介绍大数据基础,以及 flink 流计算 1.批处理 批处理(Batch Processing)是指对一批数据进行处理。我们身边的批处理比比皆是,最常见的批处理例子有:微信运动每天晚上有一个批处理任务,把用户好友一天所走的步数统计一遍,生成排序结果后推送给用户;银行信用

    2024年03月10日
    浏览(50)
  • 软考:软件工程:软件开发方法,软件可行性分析,需求分析,ER实体图,数据流图,状态转换图,数据字典

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月11日
    浏览(44)
  • 剑指offer41.数据流中的中位数

     我一开始的想法是既然要找中位数,那肯定要排序,而且这个数据结构肯定要能动态的添加数据的,肯定不能用数组,于是我想到了用优先队列,它自己会排序都不用我写,所以addNum方法直接调用就可以,但是找中位数就很麻烦,它不能根据下标访问,于是我写了一个很屎

    2024年02月15日
    浏览(43)
  • ClickHouse 与 Kafka 整合: 实时数据流处理与分析解决方案

    随着数据量的不断增长,实时数据处理和分析变得越来越重要。ClickHouse 和 Kafka 都是在现代数据技术中发挥着重要作用的工具。ClickHouse 是一个高性能的列式数据库,专为 OLAP 和实时数据分析而设计。Kafka 是一个分布式流处理平台,用于构建实时数据流管道和流处理应用程序

    2024年02月22日
    浏览(51)
  • 实时大数据流处理技术:Spark Streaming与Flink的深度对比

    引言 在当前的大数据时代,企业和组织越来越多地依赖于实时数据流处理技术来洞察和响应业务事件。实时数据流处理不仅能够加快数据分析的速度,还能提高决策的效率和准确性。Apache Spark Streaming和Apache Flink是目前两个主要的实时数据流处理框架,它们各自拥有独特的特

    2024年03月10日
    浏览(62)
  • ❀工信工实验参考——《VHDL实验1——Quartus软件入门及双(单)向数据流总线的设计》

    一般来说,我贴上来的代码都是能直接跑的,如果不行可以邮箱交流1902946954@qq.com 仅供参考,微机的老师讲的很好,所以请还是要先自己完成咯。 免责声明,本人菜只因一只,内容仅供参考,错了不负责哈 地           点:      31  楼   312房; 实验台号: 实验日期与

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包