iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
1
自我挑戰組

ROS自學筆記系列 第 15

Day 15 - ROS Services

不知不覺也前進第15天了,時間過得真快呢~
那前面我們已經看完了Topic這個溝通方式,現在就換到下一個 - Service囉!
Service於我的感覺像是web裡面的打API,像是topic會有publisher和subscriber,與service對應的是server和client,這兩者可以透過service進行溝通,所以就是client發送request給server,server再回傳對應的response給client,我覺得原理比topic簡單 XD
畫個示意圖跟topic比較一下,我想有寫過web相關技術的人應該都會很熟悉才對:
Service與topic傳輸方式比較圖
(請原諒小妹拙劣的繪圖技巧)

可以看到topic傳的是同一個message訊息,其實就是publisher發佈出來的訊息啦!
但是service送的是一組訊息,也就是request/response,server會針對不同的request做出回應。

servicetopic的溝通方式比較:

  • topic 的publisher和subscriber可以多對多,但是service內的server只能一對多個client。
  • topic 的subscriber是採用持續監聽的方式,不會因為收到一行訊息就中止;service一次就是收一條request,再回傳一條response回去。

那麼,了解server的原理後,接下來幾天就是不免俗的來製作server和client吧!

參考資料

ROS Tutorials - Understanding Services
ROS wiki - Services


上一篇
Day 14 - ROS Topic 常用指令 & ROS Graph
下一篇
Day 16 - 使用Python撰寫Server Node
系列文
ROS自學筆記30

尚未有邦友留言

立即登入留言