目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第56篇:将支持AI的可穿戴健康监测器移植到到Zephyr


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。


今天分享第56篇技术报告,由王中甲整理,题目为:

将支持AI的可穿戴健康监测器移植到开源硬件上的Zephyr中



作者简介

Szymon Duchniewicz, 埃维诺(Avanade)开源技术工程师,从事开源工作。

Jakub Duchniewicz, Tietoevry公司的一名程序员,为客户进行5G L1 和 L2 开发。



动机

  • 全球范围内的医疗系统面临着花费过高的问题。

  • 我们可以使用廉价硬件来诊断和报告心血管疾病和异常(例如心律失常)、高血压、高血压等问题。

  • 兴趣。


最初的计划

最初,我们通过BLE(低功耗蓝牙)发送数据(假设没有 WiFi 连接),然后通过蜂窝连接将数据发送到具有ML模型的服务器。但是,我们检查后发现我们似乎无法通过BLE向主机设备(移动设备)发送命令。因此我们需要稍微改变我们的方法。我们原本认为某些模型可以直接部署在设备上。然而,由于这是医学世界,大多数模型都需要相当大的复杂性,我们需要外部存储器或将模型安装到服务器。


该项目中使用的组件:

  • Arduino Nano 33 IoT - main MCU + WiFi/BLE + Secure + IMU

  • MAX30102 - PPG and SpO2

  • Galvanometer - skin resistance

  • LiPo Battery - mAh still not decided upon

  • 0.96" SH1106 - display

  • Small bezels, such as pushbuttons or a buzzer

原始项目地址:

https://community.element14.com/challenges-projects/design-challenges/design-for-a-cause-2021/b/blog/posts/bibop-1---introduction-game-plan-and-rationale


Arduino Nano 33 IoT是闭源硬件,现在开源硬件和开源技术进入了我们的视野。通过使用开源硬件和技术,我们可以更广泛地分享和访问项目的设计和代码。采用开源硬件和技术还有其他好处。首先,开源硬件提供了更多的灵活性和可定制性。我们可以根据自己的需求和喜好对硬件进行修改和调整,以满足项目的特定要求。其次,开源技术使得项目更容易与其他系统和平台进行集成和扩展。这为我们提供了更多的选择和可能性,以实现更复杂和强大的功能。


新计划(开源)

SoC框图:


  • 新的目标硬件——QuickLogic QTPlus

  • 在 EOS S3 上运行 – 结合了 eFPGA 和 Arm Cortex 的 SoC M4单片机 https://github.com/Willmish/bibop-zephyr-eos-s3

  • 可以在Cortex M4上部署TensorFlow Lite模型

  • 低功耗SoC:适合边缘部署。边缘部署意味着我们可以将解决方案直接部署在网络边缘,靠近数据生成的地方,从而减少延迟并提高效率。

  • 传感器融合和管理。这涉及将来自不同传感器的数据进行融合,以获得更全面和准确的信息。为了实现这一目标,我们可以利用灵活的融合引擎(Flexible Fusion Engine - FFE)来处理和整合传感器数据。

  • 使用可编程逻辑电路(eFPGA)进行模型部署。eFPGA可以在SoC中实现可编程的硬件逻辑,这意味着我们可以根据需要加载和执行不同的模型。这使得我们的解决方案更加灵活和可扩展,可以适应不同的应用场景和需求。

  • 利用I2S Always-on PDM麦克风来获取始终开启的音频数据。这种麦克风可以持续采集音频数据,无需额外的触发信号。通过结合传感器数据和音频数据,我们可以获得更全面和准确的信息,提高解决方案的性能和效果。


实现

板刷新(board flashing):板刷新是指在微控制器或开发板上编程或更新固件的过程。

刷新过程遇到的问题及解决方法:

  • 主板变砖,无法刷新任何东西。(引导加载程序被破坏,修复引导加载程序)

  • 无法访问调试硬件。(JLink刷新支持)

OpenOCD(开放片上调试器)是一种广泛使用的开源工具,有助于调试固件并将其刷新到各种微控制器上。(网址:

https://github.com/willmish/openocd/tree/!eoss3_flash_patch)



启用Zephyr支持

我们做了什么来改善主板/SoC 对 Zephyr 的支持?

  • 阅读大量 QuickLogic 的 QORC SDK 代码和 AntMicro 在树内 Zephyr 支持方面的工作

  • 为HAL添加了I2C和Wishbone总线支持(基于FreeRTOS实现)

  • 在Zephyr中添加了EOS S3的I2C驱动程序

  • 更新SoC+Board DeviceTree表示板载传感器和I2C总线

  • 将 HAL 移植到 Zephyr 时的阻碍:FFE 时钟启用

  • 解决 I2C HAL 中的BUG

  • 使用繁忙循环等待 FFE WishBone 总线状态寄存器更改为就绪

  • 使用 HAL for Zephyr 添加 12C 驱动程序

  • 修改驱动CMakeLists.txt为您的驱动程序添加Kconfig文件

  • 修改主驱动程序Kconfig文件

  • 在 dts/bindings/i2c 中以 .yaml 格式添加 dts 绑定添加驱动程序的实际源代码

  • 更新相关 SoC DeviceTree 以包含新外设

  • MAX30102 支持:为 I2C 和配置传感器启用配置(在 prj.conf 中)

  • 显示支持:SSD1306. 并为 I2C 启用配置(在 prj.conf 中),启用显示和动态内存分配、字符帧缓冲区



在EOS S3上部署 AI

在我们最初的目标中,eFPGA是我们的首选。eFPGA针对小功耗和低逻辑操作进行了优化,非常适合我们的应用。然而,对于机器学习来说,eFPGA的计算能力可能不够强大。我们只需要2个32x32或4个16x16的乘法器来进行计算。这对于较为简单的机器学习任务可能是足够的。如果我们不使用eFPGA,我们可以选择使用微控制器上的M4核心进行推理。SensiML和TFLite是两个适用于微控制器的机器学习框架。SensiML是一个专门用于边缘设备的机器学习框架,它提供了易于使用的工具和库,帮助我们训练和部署模型。而TFLite是Google开发的一个轻量级的TensorFlow框架,专为移动和嵌入式设备设计。它支持各种硬件平台,包括微控制器,使我们能够在低功耗设备上进行高效的推理。TensorFlow Lite(TF Lite)简化了在微控制器上部署机器学习模型的过程。

  1. 将TensorFlow(TF)模型转换为TensorFlow Lite(TFLite)模型:这个转换过程优化了模型,使其能够在资源受限的设备上高效运行。

  2. 运行量化(quantization):量化是将模型中的浮点数参数转换为更紧凑的整数表示的过程,以降低模型的内存占用和计算需求。

  3. 将模型加载到微控制器上:将转换和量化后的TFLite模型加载到目标微控制器的内存中,以便进行推理。

  4. 数据预处理:在运行推理之前,需要对输入数据进行预处理,确保其与模型的输入要求相匹配。

  5. 将浮点数转换为int8_t类型:由于微控制器通常只支持整数计算,需要将输入数据从浮点数转换为int8_t类型。

  6. 运行推理:使用ARM CMSIS-NN(Cortex Microcontroller Software Interface Standard)库进行推理,该库提供了优化的卷积神经网络(CNN)算法,以在微控制器上执行高效的推理。

  7. 将int8_t类型转换回浮点数:在推理完成后,将输出结果从int8_t类型转换回浮点数,以便进行后续的分析和处理。

通过这些步骤,我们可以简化在微控制器上部署机器学习模型的过程,并实现高效的推理。TF Lite提供了一种轻量级、简单易用的方式,使我们能够在资源受限的环境中利用机器学习的能力。



使用光电体积描记法预测血压

光电体积描记法(Photoplethysmography)是一种非侵入性的生物测量技术,可以用于预测血压。这项技术利用光的吸收和反射特性来测量皮肤下血液的体积变化。MAX30102传感器使用LED光源发射光束,并通过检测反射光的强度变化来推测血液的容积变化。通过分析这些变化,我们可以计算出SpO2和心率等参数。然而,需要注意的是,血压的预测是一项更为复杂的任务。血压受到多种因素的影响,包括动脉弹性、血管阻力和心脏功能等。单纯使用光电体积描记法获取的数据可能不足以准确预测血压。

我们提取了一些特征来预测血压,这些特征包括峰值比率(收缩压和舒张压之比)、周期持续时间和各种增量。相比于将整个采样周期放入模型中,我们只使用了这6个特征。然而,在将特征输入模型之前,我们仍然需要对数据进行滤波和预处理。我们使用公开的数据集进行模型训练,其中的真实血压数据是从侵入性动脉血压(ABP)中获得的。这个模型可能不是最先进的,因为卷积神经网络(CNN)的性能更好,但它的计算量更大。因此,结果可能因人而异。


我们的模型的准确性(平均绝对误差)如下:

  • 收缩压:16.5

  • 舒张压:8.3




上一条:ZDS 2023技术报告分享第57篇:Zephyr下游开发的最佳实践 下一条:ZDS 2023技术报告分享第55篇:通过集成Linux主机简化Zephyr的使用

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学