从收集原始传感器数据到可操作的分析,这个过程可能会遇到很多障碍,因为硬件组件和环境条件的现实情况会发挥作用。
译自 Empowering Developers to Harness Sensor Data for Advanced Analytics,作者 Nick Hehr。
对于数据科学家而言,传感器数据提供了来自物理世界的宝贵见解。从跟踪温室中的温度波动到分析制造工厂中工业机器的振动,这些微型设备捕获的关键信息可用于开创性的研究和开发。从收集原始传感器数据到可操作的分析的过程可能充满障碍,因为硬件组件和环境条件的现实情况会发挥作用。
捕获传感器数据的典型方法通常涉及涉及数据科学家和工程师等各个团队的繁琐工作流。当数据科学家仔细定义传感器要求并准备其笔记本以处理信息时,工程师则处理硬件部署和软件更新的复杂性,这降低了科学家快速调整这些变量的能力。这会创建一个漫长的反馈循环,从而延缓整个组织的创新步伐。
我观察到可以改进此过程的几个领域:
- 设备部署
- 可观察性和更新
- 安全性和弹性
想象一下,依赖传感器数据的人员在从现场设备收集数据时掌握主动权。不再需要等待其他团队(他们有自己的积压工作)进行基本配置或部署队列,从而阻碍探索。通过简化流程并减少各种进入障碍,数据团队可以获得更多信息和实验,从而有效地改进其工作。
为了展示如何在这些关键领域进行改进,我将使用 Viam 设置一台智能机器来捕获运动传感器数据,我正在收集这些数据来分析我家洗衣机的工况,随着洗衣机的老化,它们遇到了问题。Viam 是一个平台,它通过其云服务和开源软件帮助缩小硬件和软件之间的差距。
虽然访问 Linux 单板计算机和兼容 Arduino 的微控制器变得比以往任何时候都容易,这使得更多的人可以开始控制硬件;但对于创建可在这些目标设备上工作的可靠程序仍然存在学习曲线。
对于我的项目,我选择了一个我手头已经有的 Raspberry Pi 4B 和一个 MPU-6050 组合陀螺仪和加速度计分线传感器,以获取多个不同的数据点。由于 Raspbian(Raspberry Pi 的 Debian 发行版)已经在我的 Pi 上运行,并且已经连接到我的本地网络,我在 Viam 中创建了一台新机器,并按照 文档 安装了 viam-server 和我的连接配置。我的 Pi 连接到 Viam 后,我将我的运动传感器连接到主 I2C 引脚,并 将运动传感器添加到应用程序中的机器配置。现在,设备已准备好部署到我的洗衣房并开始捕获传感器数据!
即使是具有硬件编程经验的人,也很难超越此工作流的可访问性。如果我需要更换电路板,我可以安装 viam-server 和连接配置到新计算机,并立即恢复业务。如果我需要将其扩展到更多机器以概括我的数据集,我可以 创建一个可重复使用的配置片段 作为我个人车队中的单一真实来源。
如前所述,数据团队倾向于在数据捕获过程汇总在一起而不是在源头看到结果。如果该源有任何问题,例如传感器硬件缺陷或环境篡改,则团队在垃圾信息影响数据集的其余部分之前不会知道,并且在合作伙伴工程团队有带宽提供帮助之前可能无法访问以将其关闭。
在有问题的洗衣机上设置 Pi 和传感器后,我想查看硬件发出的读数类型。从应用程序的控制选项卡中,我可以看到流入的值以及有关我的机器状态的一些其他详细信息。我可以在放置传感器的位置周围移动,以查看这如何影响读数,然后再确定长期位置。
当我开始了解生命周期不同阶段的预期值基线时,我可以在旅途中通过此远程仪表板或 Viam 移动应用程序监控传感器健康状况。
现在,我对传感器将获取的数据有了很好的了解,我想开始实际保存这些数据以供以后分析和实验。我将 Viam 数据管理服务 添加到了我的机器配置中,这将允许我控制传感器数据在设备上的存储位置、应用于数据的各种标签以及同步到云端的频率。
有了这些设置,我可以更新我的传感器配置以捕获我关心的值以及获取这些值的频率。对于实际上包含几个单独传感器(陀螺仪、加速度计、温度计)的运动传感器,我可以在同步到云服务时选择将所有读数汇总在一起或将它们分解为单独的记录。由于我还不确定如何使用这些数据,因此我将所有读数汇总在一起;如果我发现我只需要一部分信息,那么我稍后可以更新配置以节省存储空间。
这种灵活性与控制力让我能够优化我的数据需求,而无需与其他团队合作。如果我知道某些环境条件(如移动洗衣机进行维护或影响其运行的风暴)会影响设备的运行方式,我可以在不影响其他设置的情况下关闭数据捕获。
为了收集传感器数据,服务要求在收集数据时将其发送出去,而不管网络状态或可靠性如何。这会导致丢失数据或需要额外的处理来处理不稳定和离线的设备连接;如果没有互联网,很难成为物联网设备。
对于我的项目,即使我的家庭也没有 100% 的正常运行时间;无论我的 ISP 发生故障还是我重新配置我的路由器和接入点,我的本地网络上的设备都需要能够偶尔离线。这种弹性已经内置于我添加到我的机器配置中的数据管理服务中。如果 Raspberry Pi 失去连接或网络变得不稳定,数据将继续捕获到本地文件系统,直到服务能够再次成功同步,然后再清除缓存数据。即使设备完全报废,我也知道可以在设备上找到该数据以供手动上传(如果需要)。
如果设备在同步过程中因断电而突然重新启动,我知道我可以依靠数据管理器在设备重新联机后解决该中断,而无需发送我稍后需要从我的数据集中清除的重复数据。
虽然丢失我项目的某些数据不会是世界末日,但知道这些相同的考虑因素将适用于未来任何具有更高一致性要求的工作,这让我感到很欣慰。
当您根据现实世界中的硬件反馈规划您的下一个重大举措时,请考虑那些会影响其成功的一些因素。
- 您能多快部署和迭代这些设备?
- 作为数据团队,您在管理所收集的信息的类型和数量方面有多少控制权?
- 这些传感器是否能够快速从它们所在环境的不稳定中恢复?
我刚刚开始我的数据科学和机器学习之旅,但我确保我拥有所有合适的工具来帮助我一路前行。