以下是 ROS 2 和 micro-ROS 通訊架構的文字描述和 Markdown 圖示:
文字描述:
整個通訊架構的核心是 ROS 2 網路,它基於 DDS(Data Distribution Service)中介層。在這個 ROS 2 網路中,運行著各種 ROS 2 節點,它們可以發布主題 (Topics)、訂閱主題、提供和使用服務 (Services),以及執行動作 (Actions)。
當我們引入 micro-ROS 時,Arduino 微控制器上的應用程式會成為一個 micro-ROS Client。這個 Client 本身並不直接參與 DDS 通訊,而是透過一個在更強大的電腦上運行的 micro-ROS Agent 作為橋樑。
micro-ROS Client 和 Agent 之間使用特定的通訊方式進行資料交換,常見的方式包括序列埠 (Serial/UART) 或網路協定 (UDP/TCP)。Client 將其 ROS 2 操作(例如發布訊息到某個主題)封裝成 Agent 可以理解的格式,並透過選定的傳輸方式發送給 Agent。
micro-ROS Agent 接收到來自 Client 的請求後,會將其轉換為標準的 ROS 2 DDS 通訊,並將其發布到 ROS 2 網路中。同樣地,當 ROS 2 網路中有與 micro-ROS Client 訂閱的主題相關的訊息時,Agent 會接收到這些訊息,並將其轉換為 Client 可以理解的格式,再透過相同的傳輸方式發送給 Client。
因此,micro-ROS Agent 本質上是一個協調者和轉換器,它使得資源受限的微控制器能夠間接地參與到功能完善的 ROS 2 生態系統中。
Markdown 架構圖:
graph LR
subgraph ROS 2 Network
ROS2Node1 -- DDS --> ROS2Node2
ROS2Node1 -- DDS --> ROS2Agent
ROS2Agent -- DDS --> ROS2Node2
end
subgraph micro-ROS System
ArduinoClient -- Serial/UDP --> ROS2Agent
end
%%ROS2Agent -- Bridges Communication --> ArduinoClient
%%ROS2Agent -- Bridges Communication --> ROS2Network
[text show]
[ROS2Node1] <--DDS--> [ROS2Node2]
|
v
[ROS2Agent] <--Serial/UDP--> [ArduinoClient]
圖示說明:
- ROS 2 Network 子圖: 代表標準的 ROS 2 環境。
ROS2Node1
和ROS2Node2
是典型的 ROS 2 節點,它們之間直接透過 DDS 進行通訊。ROS2Agent
在這個網路中也作為一個 ROS 2 節點存在,它可以與其他標準 ROS 2 節點進行 DDS 通訊。
- micro-ROS System 子圖: 代表包含 Arduino 和 micro-ROS Agent 的部分。
ArduinoClient
代表運行在 Arduino 微控制器上的 micro-ROS Client 程式。ArduinoClient -- Serial/UDP --> ROS2Agent
表示 Arduino Client 使用序列埠或 UDP 等通訊方式與 micro-ROS Agent 進行通訊。
- 連接箭頭:
ROS2Agent -- Bridges Communication --> ArduinoClient
強調 Agent 作為 Client 和 ROS 2 網路之間的通訊橋樑。ROS2Agent -- Bridges Communication --> ROS2Network
同樣強調 Agent 在 ROS 2 網路中的角色。
總結:
micro-ROS 的通訊架構是一種代理模式,微控制器上的 Client 並不直接參與底層的 DDS 通訊,而是依賴於運行在更強大電腦上的 Agent 來作為其在 ROS 2 網路中的代表。Agent 負責處理與 ROS 2 網路的通訊細節,並將資料轉換成 Client 可以理解的格式,反之亦然。這種架構使得資源受限的微控制器也能夠安全且有效地融入 ROS 2 生態系統。
沒有留言:
張貼留言