跳到主要内容

HCR 中的 Rust

从服务端重放到嵌入式机器人固件,全程使用 Rust

HCR 在策略、重放、协议状态和经验证的硬件控制交汇处使用 Rust。浏览器界面仍采用 React 与 Blockly;服务和嵌入式网关则由 Rust 运行。

技术架构

两个 Rust 运行时,两种部署限制

评分服务使用可增量扩展的 hcr.v1 契约与权威重放。当前 no_std ESP8266 网关运行有界 HTTP/JSON 舵机 API;MQTT 与 CBOR 仍是规划中的设备路径。

Rust · MQTT over WebSocket · HTTP binding

Service

在服务器端重放程序、运行自适应题库,并负责回合截止时间和排名。

hcr-backend

hcr.v1 · JSON and CBOR

协议

每条消息都使用一个信封,并通过 ULID 关联。次要版本只允许新增字段;接收方会忽略无法识别的内容,而不会因此失败。

hcr-backend/schema

Rust (no_std) · ESP8266 · Arduino C++ as a hardware library

硬件

实体五舵机机械臂由 Rust 管理启动策略、路由、HTTP/JSON 和舵机状态;C++ 仅限于字节型 C ABI 之后。网关尚未实现 MQTT。

hcr-fw

开源

HCR 背后的 Hotaru Rust 生态

HCR 在 crates.io 发布后端服务 crate,并使用 Hotaru 构建服务与嵌入式协议层。可浏览该 crate、框架官网、核心代码库,以及独立维护的 MQTT 实现。

设计

Rust 负责策略;C++ 只作为硬件库

依赖关系只有一个方向。仅有一个 crate 声明外部硬件函数,边界上传递的是字节,而不是 Arduino 字符串、C++ 对象、路由、JSON 或应用状态。

Rust 负责

  • 启动策略与协作式执行器
  • Hotaru 路由与协议
  • HTTP 解析与响应
  • 舵机验证与状态

C++ 负责

  • 时钟、中断屏蔽、看门狗、重启、堆、随机数、串口
  • Wi-Fi 接入点与终端模式、原始 TCP 和 UDP 句柄
  • 强制门户 DNS 与 SPIFFS 句柄
  • GPIO、PWM、舵机脉冲写入、原始 OTA 写入

Rust

Rust 对 HCR 意味着什么

HCR 在需要确定性重放、明确协议类型、受控并发及精简嵌入式边界的部分使用 Rust。这是具体的架构选择,并不表示 HCR 的每个部分都由 Rust 编写。

浏览器界面使用 React 与 TypeScript 构建。HCR 是独立项目,与 Rust Project 或 Rust Foundation 没有关联,亦未获其背书。

硬件