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