关于车联网:软件定义汽车场景中的数据流处理

56次阅读

共计 4327 个字符,预计需要花费 11 分钟才能阅读完成。

在当今疾速倒退的技术环境中,汽车行业正处于改革期。软件定义汽车(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

正文完
 0