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