ROS2 服务通信
ROS2的服務通信
服務就是節點之間的你問我答。
服務通信是通過客戶端與服務端進行通信的,具有同步通信機制,服務器端是唯一的,而客戶端不是唯一的。
.srv文件定義請求和應答數據結構。
創建服務服務端的程序流程:
- 創建接口初始化
- 創建節點并初始化
- 創建服務端對象
- 通過回調函數處進行服務
- 向客戶端反饋應答結果
- 銷毀節點并關閉接口
現在創建一個服務端的節點,在節點里進行兩個整型的相加。
創建服務客戶端的程序流程:
- 創建接口初始化
- 創建節點并初始化
- 創建客戶端對象
- 創建并發送請求數據
- 等待服務器應答數據
- 銷毀節點并關閉接口
現在創建一個客戶端的節點,在節點里輸入兩個數,然后傳遞給服務端就行處理。
使用ROS2通信服務,創建一個物體識別的通信服務節點。
物體識別的服務端
服務端主要是對圖像驅動后的話題進行一個訂閱。同事對圖像進行一個處理,去識別到我們的目標位置。
這里設置號好所需識別的顏色的HSV閾值,并且初始化節點,訂閱對象,然后通過cv_bridge創建一個圖像轉換對象,將opencv圖像和ROS圖像的消息進行互相轉換,并且創建服務端
這里進行目標的識別,經過一些opencv的處理之后,最后將處理結果顯示出來
這是處理圖像的回調函數,將opencv圖像轉成ROS2的圖像數據。
這是目標位置的回調函數,會對目標位置進行獲取與輸出。
物體識別的客戶端
這里服務名稱要跟服務端的名稱一致
初始化節點的接口,并且創建了一個node對象
總結
- 上一篇: 文本文档的后缀名怎么显示和隐藏
- 下一篇: 异动庄股的盘口语言