#sensor #streaming #computer-vision #api-bindings

opensensor

一个用于从传感器流式传输和存档测量的crate

1个不稳定版本

0.4.0 2023年3月1日

#835 in 嵌入式开发

Apache-2.0

170KB
3K SLoC

OpenSensor - 实现新传感器的特性和泛型

用于实现与OpenSensor基础设施交互的新传感器的泛型。

要求

  • rust: 最小支持的Rust版本 1.65
  • lld链接器: 用于更快的Rust构建。
  • docker: 容器引擎
  • docker compose: 多容器编排。注意:docker-compose现已弃用,compose功能已集成到docker compose命令中。要与现有的docker安装一起安装,请运行sudo apt-get install docker-compose-plugin参考

对于基于Debian的Linux发行版,您可以使用以下命令安装opensensor-rs的依赖项(Docker除外,需要特殊仓库配置,如上所述)

apt-getinstall clang build-essential lld clang zstd libzstd-dev make cmake pkg-config libssl-dev

opensensor-rs已在Ubuntu 22.04 LTS上测试,但欢迎提交修复Windows或MacOS问题的pull请求。

快速开始

  1. 克隆仓库:git clone https://github.com/opensensordotdev/opensensor-rs.git
  • 确保已安装所有要求,特别是lld链接器!否则opensensor-rs无法构建!
  1. ./bootstrap_cluster.sh:启动测试Redpanda,MinIO和监控堆栈。
  2. cargo test:验证所有cargo测试通过

提供的泛型

OpenSensor architecture

  • Measurement:表示传感器产生的离散数据单元的物理数据结构。每个Sensor可以产生多种类型的Measurements
  • Transducer:与传感器硬件的接口,产生一系列Measurements
  • 传感器:多个产生相同类型测量值转换器之间的抽象,将常见的验证逻辑组合在一起。从转换器发送测量值mpsc通道中消耗,验证它们,并输出到Redpanda。

添加新的测量值

测量值在概念上使用Google flatbuffers进行序列化。有关测量值转换器传感器的示例实现,请参阅opensensor存储库中的sensor-simplecrate。

Arrow + Parquet存档

为了尽可能简化新传感器的实现,opensensor-rs试图通过Rust的Arrow绑定自动将测量值实现者的存档输出到Parquet。将任意Rust结构存档到arrow和parquet的实验在archiver目录和arrow.rs中进行了文档记录。理想情况下,此功能可以通过特性和实现来派生,以便任意测量值可以序列化和反序列化到/从parquet。

在arrow2上提交了此问题,尽管他们提交的PR修复了Rust代码(test_arrow.rs中的测试现在通过),但任何嵌套数组或结构的结果parquet仍然不能在pyarrow中进行反序列化。

test_arrow.rs中的测试用例基于以下示例

依赖关系

~72MB
~1.5M SLoC