Klepsydra ROS2 多核心環形緩衝區執行器

產品資訊
規格
- 輕量級、模組化且與最常用的作業系統相容
- ROS2 Executor 插件能夠處理多達 10 倍的數據,同時 CPU 消耗減少多達 50%
- GPU(圖形處理單元)可實現高度平行化並提高處理資料速率和 GPU 利用率
- 克萊西德拉AI
- Klepsydra SDK
- 克萊西德拉 GPU
- 串流媒體能力
- Klepsydra ROS2執行器外掛程式全球應用
產品使用說明
- 上下文:並行處理
該產品旨在解決與太空應用中的機載處理相關的挑戰,其中 CPU 使用率、資料量和功率需求是令人關注的問題。它透過有效處理中等數據量,為現代硬體和舊軟體提供了解決方案。 - 比較和交換
「比較與交換」是多執行緒中用來實現同步的演算法。它將記憶體位置的內容與給定值進行比較,並且僅當它們相同時,才將該記憶體位置的內容修改為新的給定值。此操作作為單一原子操作執行。該產品將該演算法作為其功能的一部分來實現。
無鎖程式設計的優點和缺點
本產品採用無鎖定程式技術,並具有以下優點:tages和disadvantages
- 優點:
- 減少 CPU 使用率
- 高效處理資料量
- 缺點:
- 實施的複雜性
- 需要底層硬體的支援(大多數現代硬體支援無鎖編程)
ROS2執行器
該產品包括一個 ROS2 Executor,它透過管理訂閱、訊息、服務、計時器和節點的回調來調度 ROS2 應用程式。它使用來自底層中間件 DDS 佇列的訊息並將它們分派給其中一個執行緒執行。執行器可以配置為順序或並行執行回調。
最先進的 ROS2 執行器
該產品採用了最先進的 ROS2 執行器,可提供不同的執行策略
- 單執行緒執行器: 順序執行回調並定期掃描應用程式結構以更新節點、訂閱、服務等。
- 多執行緒執行器: 並行執行回調並定期掃描應用程式結構以更新問題的描述。
串流執行器
該產品引入了串流執行器,與線程式執行器在幾個方面有所不同
- 它不會為每次迭代重建可執行列表。
- 所有節點、回調組、計時器、訂閱等都是在建構時建立的。
- 節點內的所有訂閱都在同一執行緒上執行,無論用於流設定的核心數量為何。
- Klepsydra 串流執行器
本產品的串流執行器專門設計用於使用發布者-訂閱者對處理串流主題。它透過 rmw 從中間件接收訊息,有效地將訊息傳遞給所有節點中的訂閱者。事件循環管理這些主題,確保資料流暢。 - 克萊西德拉領域
Klepsydra Realm 是串流執行器的一個元件,可作為調度程序。它協調流設置中生產者和消費者的執行。 - 製片人
生產者負責產生將由訂閱者使用的資料。該產品支援串流媒體設定中的多個製作者。 - 消費者
消費者負責處理和利用生產者產生的數據。該產品支援串流媒體設定中的多個消費者。
常見問題 (FAQ)
- 哪些作業系統與該產品相容?
該產品與最常用的作業系統相容。 - 與傳統方法相比,該產品可以處理多少資料?
與傳統方法相比,該產品能夠處理多達 10 倍的數據,同時 CPU 消耗降低多達 50%。 - 該產品是否利用 GPU 並行化?
是的,該產品利用 GPU(圖形處理單元)進行高度並行化,從而提高處理資料速率和 GPU 利用率。
多核心 ROS2 應用的離線最佳化方法:多核心環形緩衝區 ROS2 執行器
2023 年斯圖加特 ROS 聚會
巴勃羅·吉利諾博士( pablo.ghiglino@klepsydra.com )
ROS2 串流執行器
上下文:並行處理
- 機載處理面臨的挑戰

- 現代硬體和舊軟體:
- 計算機在中低資料量時達到極限
- 資源利用效率低下
- 低數據處理能力過大
對空間應用的影響
- 因軟體原因導致任務重複失敗
- 從地球獲取感測器數據非常耗時。
- 衛星難以滿足電力需求

比較和交換
- 比較和交換(CAS)是多執行緒中用來實現同步的指令。它將記憶體位置的內容與給定值進行比較,並且僅當它們相同時,才將該記憶體位置的內容修改為新的給定值。這是作為單一原子操作完成的。
- 自 370 年以來,比較和交換一直是 IBM 1970 架構的一個組成部分。
- Maurice Herlihy (1991) 證明 CAS 可以實現比原子讀、寫和獲取並添加更多的演算法

無鎖程式設計的優點和缺點
優點
- 所需的 CPU 消耗更少
- 更低的延遲和更高的數據吞吐量
- 決定論大幅增加
缺點
- 極為困難的程式技術
- 需要帶有 CAS 指令的處理器(儘管 90% 的市場都有)
Klepsydra 環形緩衝器

產品
輕量級、模組化且與最常用的作業系統相容
- SDK——軟體開發套件
增強一般應用和處理器密集型演算法的邊緣資料處理 - AI——人工智慧
高效能深度神經網路 (DNN) 引擎,可在邊緣部署任何人工智慧或機器學習模組 - ROS2執行器插件
ROS2 的執行器能夠處理多達 10 倍的數據,同時 CPU 消耗降低多達 50%。 - GPU(圖形處理單元)
GPU 的高度平行化可提高處理資料速率和 GPU 利用率
背景:太空中的 ROS1
- 好處:
- 實現空間自主、感知與控制

- 靈活、模組化,並得到大型社群的支持。

- Examp萊斯:
- NASA 的機器人太空人 2 (R2) – 在國際太空站上協助太空人
- NASA 的 Astrobee – 國際太空站的自主操作
- 球體 – 用於國際太空站研究的球形衛星
- 德斯特雷 – 國際太空站操縱和維修的機械手臂
- 谷歌月球 XPRIZE – 用於月球車任務

背景:Space-ROS
- 太空探索和機器人領域的 ROS 框架

- 部分符合太空使用資格
- Examp萊斯:
- 太空人的機器人助手
- 使用自主漫遊車進行行星探索
- 衛星運作與控制

- 自主太空船對接
- 在軌服務和維修

- 好處:
- 實現自主、溝通與感知
- 加速太空任務的開發和運作。

ROS2執行器解釋
執行器透過管理訂閱、訊息、服務、計時器和節點的回調來協調和調度 ROS2 應用程式。在ROS2中,執行器並不會保留自己的訊息和回呼佇列,而是從底層中間件DDS佇列中消費訊息,然後將其分派給其中一個執行緒執行。
最先進的
ROS2執行器
- 單執行緒執行器:單一執行緒查詢中間件並依序執行回呼。然後它掃描結構並更新節點、訂閱、服務等。
- 靜態單執行緒執行器,結構的掃描和定義僅在建構期間執行一次。所有節點、回調群組、計時器、訂閱等都是在呼叫 spin() 之前建立的。
- 多執行緒執行器會建立許多將並行執行回呼的執行緒。與單執行緒執行器類似,它會定期掃描應用程式的結構並更新問題的描述。
串流執行器結束view
- 串流執行器使用 Klepsydra 事件循環將訊息傳遞到所有節點中的訂閱者,這些訊息透過 rmw 來自中間件。事件循環使用發布者-訂閱者對來管理這些主題。
- 串流執行器的行為在幾個方面與靜態單執行緒執行器類似。首先,它不會為每次迭代重建可執行列表。所有節點、回調組、計時器、訂閱等都是在建構時建立的。其次,節點內的所有訂閱都在同一執行緒上執行,無論用於流設定的核心數量有多少。
Klepsydra 串流執行器

串流執行器
它是如何運作的?
- 為給定 ROS2 節點所需的每個主題建立一個發布者-訂閱者對。
- 在內部,每個發布者-訂閱者對由兩個參數標識:節點名稱和主題名稱。換句話說,發佈到同一主題的兩個不同節點將被獨立管理。
- 與屬於同一節點的主題關聯的所有發布者-訂閱者對均由同一事件循環管理。

流式執行器單核心與多核心
- 先進的tag串流執行器的一個優點是不需要對訂閱者進行多執行緒管理,因為所有訂閱者都由相關事件循環的執行緒管理,這對於單核心和多核心都是通用的。
- 前者的工作方式與靜態單執行緒執行器類似,因為所有節點中的所有訂閱者都由同一執行緒調用
性能基準:參考系統
- 即時工作小組的使命是倡導並致力於記憶體管理、即時發布/訂閱、即時 DDS 以及允許追蹤、分析和優化的工具( https://github.com/ros-realtime )
- Reference_system 套件的開發是為了提供創建複雜系統的基本構建塊,然後可用於以標準化和可重複的方式評估功能或效能。 ( https://github.com/ros-realtime/reference-system )
- 第一個使用此引用系統的項目是 autoware_reference_system ( https://github.com/ros-realtime/referencesystem/blob/main/autoware_reference_system/README.md )

性能基準
- Klepsydra 串流基準設定:
- 此基準測試基於 Autoware 參考系統。它模擬真實的駕駛應用程式。
- 所有測量均使用 Raspberry Pi 4B 進行,並配備:ROS galactic、Ubuntu 20.04 和 4 GB 內存,恆定頻率 1.50GHz
- 參考系統的相容設置,且無 CPU 隔離
- 測試的處理器:
- Raspberry PI 4(RTWG 的參考處理器)
- Unibap 的 iX10(NASA 和 Blue Origin 測試台)
- Teledyne e2v LS1046
性能基準



- 遺傳演算法的目標是最小化關鍵路徑的平均延遲。
- 即,從雷射雷達資料發佈到物體碰撞估計器完成其工作所花費的時間。
- 圖顯示了我們的研究試圖優化的關鍵路徑
串流執行器
Klepsydra 串流分發優化器 (SDO)
- 當核心之間節點的負載分配得到最佳化時,串流執行器的多核心變體工作效果最佳,並且可以在延遲、功耗和資料吞吐量方面產生顯著差異。
- 然而,核心的映射並不是微不足道的,需要一種系統化的方法。一種可能的方法是定義一個目標函數來衡量基於核心配置的系統效能。
- 然後可以使用遺傳演算法透過迭代測試不同的配置並根據目標函數選擇性能良好的配置來優化核心配置。這個過程一直持續到找到最佳配置為止。
- 這種方法可以更有效地使用多核心系統,並確保以最佳方式分配負載。
結果總結
- 對於小型節點工作,增加的複雜性並不能轉化為更好的結果。靜態單線程非常簡單,優於其他執行器。
- 增加工作負載時,串流執行器是最好的執行器,其次是靜態單執行緒執行器。
- 預計流執行器的性能始終優於單線程,因為應用程式在運行時不會修改其拓撲。事實證明確實如此

- 樹莓派 PI4 的結果
- Unibap 的 iX10 和 Teledyne 的 LS1046 也獲得了類似的效能提升

結論
概括
- 本文提出了一種最佳化 ROS2 執行模型的新穎方法,該方法結合了基於無鎖環形緩衝區的 ROS2 執行器實現,以及使用遺傳演算法來優化機器人應用程式負載到目標電腦中可用核心的分配。
- 事實證明,這種組合對於計算負載繁重的系統(如上面解釋的參考系統)非常有效。本研究的一個關鍵好處是它對不同應用的適應性:可以使用串流執行器加上遺傳優化來加速不同的 ROS2 節點拓撲,這是 ROS2 中討論最多的挑戰之一。
未來的工作
概括
- 對於這項研究的未來工作,在串流執行器中需要包含以下幾個功能:
- 支持謙卑和滾動,
- 單核心流執行器的開源版本和
- 使用感測器多工器以及具有多個訂閱者的主題的事件循環。
- RISC-V架構測試
文件/資源
![]() |
Klepsydra ROS2 多核心環形緩衝區執行器 [pdf] 使用者指南 ROS2多核心環形緩衝區執行器,ROS2,多核心環形緩衝區執行器,環形緩衝區執行器,緩衝區執行器,執行器 |





