dora-rs/dora

DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.

解決する課題

Doraは、リアルタイムロボティクスおよびAIアプリケーションを構築するための高性能フレームワークを提供します。Rustベースのコアとゼロコピー共有メモリ通信を利用することで、従来のロボティクスフレームワーク(ROS2 Pythonなど)でよく見られるレイテンシとスループットのボトルネックを解決し、データ量の多いAIパイプラインに適したものにしています。

仕組み

Doraは、アプリケーションがYAMLファイル内の有向グラフとして定義されるデータフロー指向のアーキテクチャを採用しています。ノード(独立したプロセス)またはオペレーター(軽量なプロセス内関数)は、型付きの入出力を介して接続されます。

技術的には、以下を採用しています:

  • Zenoh SHMデータプレーン: ノードが共有メモリを介して直接データを公開できるようにし、レイテンシを低減するためにデーモンをバイパスします。
  • Apache Arrow: シリアライズのオーバーヘッドを排除するために、エンドツーエンドで列指向のメモリフォーマットを使用します。
  • 分散オーケストレーション: コーディネーターが複数のデーモン(ホストごとに1つ)にわたるデータフローのライフサイクルを管理し、シームレスなローカルおよびクロスマシン通信を可能にします。

対象者

複雑なリアルタイムシステムを構築する必要があるロボティクスおよびAIエンジニア向けに設計されており、高いスループット(例:カメラフィードやLLM出力など)と複数の言語(Rust、Python、C、C++)のサポートを必要とします。

ハイライト

  • 極限のパフォーマンス: ROS2 Pythonより10〜17倍高速で、大きなペイロードに対してゼロコピー共有メモリを実現。
  • 多言語サポート: Rust、Python、C、C++のネイティブAPIを提供し、複数言語が混在するデータフローを可能にします。
  • 本番環境対応のツール: 障害許容性(再起動ポリシー)、分散クラスタ管理、トレースとメトリクスのためのOpenTelemetry統合を含みます。
  • オブザーバビリティ: リソース監視(dora top)、トピックインスペクション、および回帰テスト用のレコード/リプレイ機能のための組み込みTUIを提供します。
  • Node Hub: 再利用可能でバージョン管理されたノード(例:YOLO、LLM)をプロジェクトに取り込むためのパッケージマネージャー。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト