不知不覺也前進第15天了,時間過得真快呢~
那前面我們已經看完了Topic
這個溝通方式,現在就換到下一個 - Service
囉!Service
於我的感覺像是web裡面的打API,像是topic
會有publisher和subscriber,與service
對應的是server和client,這兩者可以透過service
進行溝通,所以就是client發送request
給server,server再回傳對應的response
給client,我覺得原理比topic
簡單 XD
畫個示意圖跟topic
比較一下,我想有寫過web相關技術的人應該都會很熟悉才對:
(請原諒小妹拙劣的繪圖技巧)
可以看到topic
傳的是同一個message
訊息,其實就是publisher發佈出來的訊息啦!
但是service
送的是一組訊息,也就是request
/response
,server會針對不同的request
做出回應。
service
跟topic
的溝通方式比較:
topic
的publisher和subscriber可以多對多,但是service
內的server只能一對多個client。topic
的subscriber是採用持續監聽的方式,不會因為收到一行訊息就中止;service
一次就是收一條request
,再回傳一條response
回去。那麼,了解server
的原理後,接下來幾天就是不免俗的來製作server和client吧!
ROS Tutorials - Understanding Services
ROS wiki - Services