跳去主要內容

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 冇關聯,亦未獲佢哋背書。

硬件