softmata/horus
Fastest Robotics Runtime System. If phones have Android, robots deserve HORUS.
HORUS – 用於機器人技術的即時分散式中介軟體(Rust / Python / C++)
是什麼 – HORUS 是一種低延遲、無鎖的程序間通訊(IPC)層,可取代 ROS 2 使用的 DDS 堆疊。它讓以 Rust、Python 或 C++ 編寫的程式能透過單一共享記憶體環形緩衝區共享資料,提供確定性排程與 200 納秒以下的跨程序延遲。
為何重要 – 對於機器人、自動駕駛車輛、工業自動化或任何安全關鍵系統,可預測的時序與最小開銷至關重要。HORUS 宣稱具備確定性執行類別、內建看門狗,以及為 AI 負載密集的感知工作負載設計的零複製流程。
核心概念(如 README 所示)
| 概念 | 作用 |
|---|---|
| Node | 實作 tick()(Rust)/ 回呼(Python)/ tick() 方法(C++)的工作單元。節點由 Scheduler 排程。 |
| Topic | 基於無鎖環形緩衝區的類型化發布/訂閱通道。所有語言使用相同的共享記憶體布局,因此 Rust 發佈者可被 Python 訂閱者直接讀取,無需複製。 |
| Scheduler | 管理執行類別(即時、執行緒池、事件驅動、非同步 IO、最佳努力)。可為每個節點設定速率、預算、截止時間、順序與遺漏處理策略。 |
| Safety monitor | 分階式看門狗,從警告逐步升級至速率降低、隔離,最終終止異常節點。節點可定義 enter_safe_state() 以將硬體置於已知安全狀態。 |
| BlackBox | 環形緩衝區飛行記錄器,用於事後分析。 |
| TransformFrame | 快速無鎖座標轉換樹(比 ROS TF2 快 10–33 倍)。 |
| 訊息類型 | 40 多種內建 POD 結構體(如 Imu、CmdVel、Detection、Image、PointCloud)。大容量資料(影像、張量)儲存在共享記憶體池中,可透過 NumPy 零複製存取。 |
| 驅動 | 透過 horus.toml 實作宣告式 HAL 結合(來自 Terra HAL 專案,30+ 驅動)。 |
快速入門片段(來自 README)
Rust – 使用 Topic::new、Scheduler::new().tick_rate(1000_hz()),以及可選策略如 .order() 和 .on_miss(Miss::SafeMode),在單一檔案中實作 1 kHz 傳感器控制器對。
Python – 使用 horus.run 的八行等效程式碼,包含 Node 物件、node.send / node.recv,以及可選的 rate 參數。
C++ – 繼承自 horus::Node 的類別節點,使用 subscribe/advertise 輔助函數與相同的排程器設定。
主要功能
- 確定性即時排程 – 五種執行類別,當節點具有速率/預算/截止時間時自動進入 RT 模式。
- 安全與容錯 – 分階式看門狗、截止時間強制、節點級安全狀態鈎子、BlackBox 記錄器、重啟/退避策略。
- 零複製 AI 流程 – 共享記憶體池讓相機畫面、點雲與張量可轉換為 NumPy 陣列而無需複製;僅小描述符在主題上傳輸。
- 高效率 – 報告的單向跨程序延遲為 171 納秒,同程序傳送延遲為 91 納秒,小訊息下吞吐量比 iceoryx2 高達 12.8 倍。
- 跨語言互操作性 – 同一主題對 Rust、Python 和 C++ 程序皆可見。
- 內建機器人原語 – 訊息、服務、動作、變換,以及 30 多個硬體驅動(Dynamixel、RealSense、CAN、EtherCAT 等)。
- CLI 工具 –
horus new、horus run、主題檢查(horus topic list/echo)、系統儀表板(horus monitor)、遠端部署、健康檢查與自我更新。
安裝與使用(如說明)
- 一鍵安裝器 –
curl …/install.sh | bash(或設定HORUS_VERSION以固定版本)。腳本取得預先建置的 CLI 並在~/.horus/cache/horus@<version>下快取對應的原始碼樹。 - 語言綁定
- Rust – 手動新增本地路徑相依(
cargo add horus指向快取原始碼)。尚未發布至 crates.io。 - Python – 舊版 0.1.x 格式使用
pip install "horus-robotics>=0.4.1",新版 0.4.x 格式需從快取原始碼建置pip install ~/.horus/cache/horus@0.4.1/horus_py。 - C++ – 連結
libhorus_cpp並包含<horus/horus.hpp>;需 CMake 3.20+ 與 C++17 編譯器。
- Rust – 手動新增本地路徑相依(
- 專案腳手架 –
horus new my_robot(使用--cpp/--python選擇語言,預設為 Rust)建立起始套件與驅動設定用的horus.toml。 - 執行 –
horus run使用快取原始碼建置 Rust 程式碼並啟動排程器。
性能亮點(來自 README)
| 指標 | 值 | 上下文 |
|---|---|---|
| 跨程序單向延遲 | 171 ns | 環形緩衝區發送/接收,於 Intel i9-14900K 上測量。 |
| 同程序傳送延遲 | 91 ns | 僅生產者端 send()。 |
| 1 發布 → 3 訂閱延遲 | 80 ns | 生產者端。 |
| 與 ROS 2 DDS 比較 | 約 5 µs 中位數(REP 2014)→ 約 30 倍更快(相同跨程序情境)。 | |
| 與 iceoryx2(8 B)比較 | 55 ns vs 416 ns(中位數)→ 7.6 倍更快。 | |
| 吞吐量(同迴圈) | 37.8 M msg/s vs 3.0 M msg/s(iceoryx2)→ 12.8 倍。 | |
| 大影像負載(1920×1080)單向 p50 | 284 ns(僅描述符,零複製) |
典型使用情境
- 子微秒級抖動可能導致不穩定的低階馬達控制。
- 將相機畫面、LiDAR 點雲與 IMU 資料在單一程序中融合,同時仍向 Python AI 模型暴露資料的傳感器融合流程。
- 需要確定性看門狗與保證安全狀態轉換的安全關鍵機器人。
- 需要超低 IPC 延遲的高頻交易或遊戲引擎子系統(README 也提及這些領域)。
成熟度與生態系
- 版本 – v0.4.1(README 寫作時最新標籤)。PyPI 上的 Python 套件仍為 0.1.9;新 0.4.x 格式需從原始碼建置。
- CI – 存在 GitHub Actions 標籤;基準測試包含在倉儲中。
- 文件 – 採用
https://docs.horusrobotics.dev托管,包含快速入門、排程器設定、安全監控與基準測試章節。 - 社群 – 支援透過連結的 Discord 伺服器。
- 授權 – Apache-2.0。
總結
HORUS 是一個真實、積極維護的中介軟體專案,專為即時機器人與其他延遲敏感系統設計。它提供確定性排程、安全監控,以及跨 Rust、Python、C++ 的零複製資料路徑。若您需要亞微秒級 IPC,且希望比 ROS 2 的 DDS 層實現更緊密整合,HORUS 值得評估。
相關
- 專案
- 專案
- 專案
- 專案