ros2/rmw_zenoh

RMW for ROS 2 using Zenoh as the middleware

解決的問題

rmw_zenoh 提供了一個基於 Zenoh 的 ROS 2 中間件(RMW)實作,作為預設基於 DDS 的通訊層的替代方案。它簡化了跨不同主機、容器和網路的發現與通訊,同時為本地通訊提供高性能選項。

工作原理

它使用 zenoh-cpp 綁定來實作 ROS 2 RMW 接口。系統依賴於 Zenoh 會話和可選的 Zenoh 路由器來管理發現與訊息路由。

主要機制包括:

  • Zenoh 路由器:作為發現與廣播的中央點,讓節點能在不依賴多播發現(預設已停用)的情況下互相找到彼此。
  • 共享記憶體(SHM):為本地節點之間的訊息傳遞提供隱式優化,透過將資料寫入共享記憶體區段而非使用網路堆疊,降低延遲並減少 CPU 使用量,特別適用於大容量資料傳輸。
  • 序列化緩衝池:在傳輸過程中重用緩衝區,以控制記憶體使用量並提升效率。
  • 設定:使用 .json5 設定檔與環境變數覆蓋來管理會話行為、路由器端點和安全設定。

適用對象

使用 ROS 2 的機器人開發者,需要彈性且高性能的通訊中間件,特別是在多台主機或 Docker 容器中運作的場景。

特色亮點

  • 隱式共享記憶體:透明地優化大容量資料的本地通訊,無需特定 API 呼叫。
  • 彈性發現機制:支援基於路由器的發現與多播探測,以實現點對點發現。
  • 跨主機橋接:透過 Zenoh 路由器簡化跨不同機器的 ROS 2 節點連接。
  • 整合式安全機制:透過 zenoh_security_tools 支援存取控制、驗證與加密。
  • 記憶體效率:實作緩衝池以重用序列化緩衝區,防止記憶體無控成長。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案