在ros中,節點通訊有多種方法。筆者在前面講過訊息(即乙個節點向話題中發布訊息,其他多個節點可以訂閱訊息。),本篇文章講解另一種方法,服務。服務是兩個節點之間的通訊。主要區別如下所示:
1)服務是點對點的,乙個節點傳送訊息,還需要等待接受節點的響應。而訊息發布後沒有響應之說,誰訂閱了這個話題,誰就可以讀取到此訊息。
2)服務是一對一的,訊息可以多對多。
參考:
總結下來,服務的過程就是:客戶端(client)傳送請求,服務端(server)接受請求後再將客戶端(client)所需要的資訊和回應發給客戶端(client)
另外:筆者在閱讀這些訊息和服務的內容時發現,訊息裡面的內容側重於狀態資訊,比如速度、姿態、位置、模式、是否解鎖。。。。而服務裡面的內容側重於某一種操作,比如設定模式為什麼、解鎖等等。所以理解了這個便於我們在書寫程式時當用到某一種內容時,能夠快速知道這個內容是屬於訊息裡的還是服務裡的。
ROS通訊機制
ros的核心功能是提供一種軟體點對點通訊機制,基於這一機制,開發人員可以非常靈活和高效地組織智慧型機械人的軟體實現。ros的執行架構是一種基於socket網路連線的松耦合 架構。在這個執行架構中包括一系列程序,這些程序可以駐留在多個不同的主機上並且在執行的過程中通過點對點的拓撲結構實現通訊。ros將...
ros學習筆記 ros的服務
服務 services 是節點之間通訊的另一種方式。服務允許節點傳送請求 request 並獲得乙個響應 response rosservice 可以很輕鬆的使用 ros 客戶端 伺服器框架提供的服務。rosservice 提供了很多可以在 topic 上使用的命令,如下所示 使用方法 rosser...
ROS 外掛程式機制
外掛程式作為ros中乙個特殊的存在,pluginlib是乙個c 庫,可以實現為乙個ros包動態的載入和解除安裝外掛程式。這裡的外掛程式通常是一些功能類,且以執行時可動態載入的庫 如共享物件,動態鏈結庫 的形式存在。借助pluginlib的幫助,使用者不必關心自己的應用程式該如何鏈結包含自己想使用的的...