ros消息服务器,ROS服务和消息
ROS發布/訂閱是多對多(在連接方面)和單向的
數據傳輸。它是異步的,這意味著你的代碼不會阻塞,你需要實現一個異步的回調函數。在
另一方面,ROS服務是同步的、一對一的雙向數據傳輸,這意味著客戶機阻塞并等待來自服務器的響應。在
考慮以下情況:想象一個機器人和一個帶有機器人模型的模擬器。模擬器需要實時更新機器人的模型(當真實世界中的機器人改變配置時,模擬器需要更新模型以反映這種變化,這樣模擬器中的機器人模型總是與真實機器人的當前配置保持同步)。在
設想一個控制機器人收銀員的節點。此節點需要使用機器人的攝像頭檢測到客戶,以開始交互。在
在第一種情況下,您將需要一個發布/訂閱模型,因為模擬器在執行其他操作時需要數據實時流動。因此,機器人將把它的關節值發布到一個主題,模擬器將使用一個回調函數訂閱該主題,該函數將實時異步更新模擬器中的機器人模型。在
然而,在第二種情況下,您不希望節點不斷檢查客戶,也不是您希望經常做的事情。在程序邏輯中,您知道何時需要檢測客戶。當您第一次啟動節點時,您知道需要阻塞并等待客戶進來。在這里使用服務更合適。當你想檢測一個客戶時,你會向服務器發送一個請求(結果你的程序會阻塞等待響應)。服務器將使用攝像頭檢測客戶(使用某種檢測算法),并相應地向您作出響應。在
一般來說,當您需要數據持續流動并想異步處理這些數據時,您將使用發布/訂閱;當您需要同步進行特定計算時,您將使用服務。在
總結
以上是生活随笔為你收集整理的ros消息服务器,ROS服务和消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电梯维修属于什么服务器,电梯维修属于建筑
- 下一篇: css中小型大写,css3 – Open