ros2/rmw_zenoh

RMW for ROS 2 using Zenoh as the middleware

What it solves

rmw_zenoh は、Zenoh に基づく ROS 2 Middleware (RMW) 実装を提供し、デフォルトの DDS ベースの通信レイヤーに代わる選択肢を提供します。異なるホスト、コンテナ、ネットワーク間でのディスカバリと通信を簡素化し、同時にローカル通信のための高性能なオプションを提供します。

How it works

zenoh-cpp バインディングを使用して ROS 2 RMW インターフェースを実装しています。システムは Zenoh セッションと、オプションの Zenoh ルーターを使用して、ディスカバリとメッセージルーティングを管理します。

主なメカニズムには以下が含まれます:

  • Zenoh Router: ディスカバリとゴシップのための中心的なポイントとして機能し、ノードがマルチキャスト・ディスカバリ(デフォルトでは無効)に依存せずに相互に見つけ合えるようにします。
  • Shared Memory (SHM): ローカルノード間で渡されるメッセージに対して暗黙的な最適化を提供し、ネットワークスタックを使用する代わりに共有メモリセグメントにデータを書き込むことで、大きなペイロードのレイテンシと CPU 使用率を低減します。
  • Serialization Buffer Pool: 送信中にバッファを再利用することで、メモリ使用量を制限し、効率を向上させます。
  • Configuration: .json5 設定ファイルと環境変数によるオーバーライドを使用して、セッションの動作、ルーターのエンドポイント、およびセキュリティ設定を管理します。

Who it’s for

柔軟で高性能な通信ミドルウェアを必要とする ROS 2 ユーザー、特に複数のホスト間、または Docker コンテナ内で動作させるロボット開発者。

Highlights

  • Implicit Shared Memory: 特定の API コールを必要とせずに、大きなペイロードのローカル通信を透過的に最適化します。
  • Flexible Discovery: ルーターベースのディスカバリと、ピア・ツー・ピアのディスカバリのためのマルチキャスト・スカウティングの両方をサポートします。
  • Cross-Host Bridging: Zenoh ルーターを介して、異なるマシン間の ROS 2 ノードを接続することを簡潔にします。
  • Integrated Security: zenoh_security_tools を通じて、アクセス制御、認証、および暗号化をサポートします。
  • Memory Efficiency: シリアライゼーション・バッファ・プールを実装して、シリアライゼーション・バッファを再利用し、制御不能なメモリ増大を防ぎます。

関連

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