dora
100% Rust 实时机器人中间件,用数据流图建模应用,性能比 ROS2 Python 快 10-
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
100% Rust 实时机器人中间件,用数据流图建模应用,性能比 ROS2 Python 快 10-
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
DORA(Dataflow-Oriented Robotic Architecture) — 一个 100% Rust 编写的实时机器人与 AI 应用中间件框架,将应用程序建模为有向数据流图(Directed Graph),通过节点与算子之间的低延迟数据通道连接不同模块。想象一下工厂流水线的可视化版本:每个工位是一个节点,原材料从传送带流入,经过各个节点加工后输出成品,而 DORA 就是管理这条流水线的操作系统。
传统机器人开发长期依赖 ROS(Robot Operating System),但 ROS 诞生于 2007 年,其 Python 实现性能瓶颈明显——大量数据在节点间传递时需要进行序列化/反序列化,在实时性要求高的场景(如自动驾驶、工业机械臂)中,这种开销是致命的。DORA 诞生于 2022 年,目标非常明确:做一个比 ROS2 Python 快 10-17 倍的机器人中间件。核心思路是用 Rust 重写所有底层组件,利用 Rust 的零成本抽象和内存安全特性,在保证性能的同时提供多语言开发体验。
DORA 将数据流图作为一等公民,用 YAML 文件声明性地描述整个应用拓扑。开发者用 YAML 定义数据从哪个节点流出、流向哪些节点、在哪里被处理。底层通信采用 Apache Arrow 作为统一数据格式——一种列式内存布局,使得 Zero-Copy 数据传递成为可能。大于 4KB 的消息通过共享内存直接共享给下一节点,完全绕过序列化。跨机器通信借助 Zenoh 协议,提供 pub-sub 能力,支持广域网下的分布式机器人控制。
DORA 的多语言节点设计让混合编程自然发生:同一个数据流图中,可以同时有 Rust 写的传感器驱动节点、Python 写的 YOLO 视觉检测节点、C++ 写的数据融合节点,彼此之间通过 Arrow 格式无缝传递数据。Python 开发者可以直接 pip install dora-rs,Rust 开发者则通过 dora-node-api 获得编译时类型安全的 API。
DORA 项目自身采用了一种独特的开发模式:大量代码生成、代码审查、重构和测试工作由 AI Agent 自动完成,人类只负责设定方向并审核每一次合并。这种 "Agentic Engineering" 实践使得一个小型团队能够维护一个庞大的 monorepo——包含 4 种语言 API、数十个示例、完整的文档站和 CI/CD 流水线。
DORA 提供了一整套运维工具链:每个节点可以配置独立的重启策略,支持指数退避;内置健康监控和熔断机制;dora top 命令提供实时 TUI;dora topic echo 实时打印数据流;dora trace view 查看分布式追踪。所有日志内置 OpenTelemetry 集成,可直接对接 Jaeger、Prometheus 等主流可观测性平台。支持 Record & Replay 功能,完整录制数据流供离线回放和回归测试。
DORA 提供了双向桥接(ROS2 bridge),现有 ROS2 节点可以无缝接入 DORA 数据流图。这意味着企业在已有 ROS2 代码资产的情况下,可以逐步将性能瓶颈模块迁移到 DORA,而无需重写整个系统。
作为一个相对年轻的项目,DORA 的生态还不算丰富。与 ROS 生态数千个包相比差距明显。学习曲线方面,声明式 YAML 数据流图对习惯了传统编程思维的开发者有一定适应成本。Rust 生态的工具链复杂度(cargo、maturin、native dependencies)对于纯 Python 背景的开发者来说并不友好。
DORA 的出现代表了一个重要趋势:AI 与机器人技术的深度融合正在催生新一代中间件。随着具身智能(Embodied AI)概念升温,机器人的感知-决策-控制链路对实时数据流的要求远超传统工业机器人。DORA 的低延迟数据流 + Arrow 内存格式 + Zenoh 分布式通信,恰好是为这个方向量身打造的基建。在自动驾驶、手术机器人、服务机器人等领域,DORA 的设计理念都有广阔的应用空间。