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支援存取控制、驗證與加密。 - 記憶體效率:實作緩衝池以重用序列化緩衝區,防止記憶體無控成長。
相關
- 專案
- 專案
- 專案
- 專案
- 專案