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 结构体(如 ImuCmdVelDetectionImagePointCloud)。大负载(图像、张量)存储在共享内存池中,可通过 NumPy 零拷贝访问。
驱动 通过 horus.toml 实现声明式 HAL 集成(来自 Terra HAL 项目,30+ 驱动)。

快速入门片段(来自 README)

Rust – 使用 Topic::newScheduler::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 newhorus run、主题检查(horus topic list/echo)、系统仪表板(horus monitor)、远程部署、健康检查和自更新。

安装与使用(如说明)

  1. 一键安装器curl …/install.sh | bash(或设置 HORUS_VERSION 以固定版本)。脚本获取预构建 CLI 并在 ~/.horus/cache/horus@<version> 下缓存匹配的源码树。
  2. 语言绑定
    • 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 编译器。
  3. 项目脚手架horus new my_robot(使用 --cpp / --python 选择语言,默认为 Rust)创建启动包和驱动配置用的 horus.toml
  4. 运行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 值得评估。

相关

  • 项目
  • 项目
  • 项目
  • 项目