多對多通信
大家再仔細想下這些可以訂閱的東西,是不是并不是唯一的,我們每個人可以訂閱很多公眾號、報紙、雜志,這些公眾號、報紙、雜志也可以被很多人訂閱。沒錯,ROS里的話題也是一樣,發(fā)布者和訂閱者的數(shù)量并不是唯一的,可以稱之為是多對多的通信模型。
因為話題是多對多的模型,發(fā)布控制指令的搖桿可以有一個,也可以有2個、3個,訂閱控制指令的機器人可以有1個,也可以有2個、3個。
大家可以想象一下這個畫面,似乎還是挺魔性的,如果存在多個發(fā)送指令的節(jié)點,建議大家要注意區(qū)分優(yōu)先級,不然機器人可能不知道該聽誰的了。
異步通信
話題通信還有一個特性,那就是異步,這個詞可能有同學是第一次聽說?所謂異步,只要是指發(fā)布者發(fā)出數(shù)據(jù)后,并不知道訂閱者什么時候可以收到。
類似古月居公眾號發(fā)布一篇文章,你什么時候閱讀的,古月居根本不知道,報社發(fā)出一份報紙,你什么時候收到,報社也是不知道的。這就叫做異步。
異步的特性也讓話題更適合用于一些周期發(fā)布的數(shù)據(jù),比如傳感器的數(shù)據(jù),運動控制的指令等等,如果某些邏輯性較強的指令,比如修改某一個參數(shù),用話題傳輸就不太合適了。
消息接口
最后,既然是數(shù)據(jù)傳輸,發(fā)布者和訂閱者就得統(tǒng)一數(shù)據(jù)的描述格式,不能一個說英文,一個理解成了中文。在ROS中,話題通信數(shù)據(jù)的描述格式稱之為消息,對應編程語言中數(shù)據(jù)結(jié)構(gòu)的概念。
比如這里的一個圖像數(shù)據(jù),就會包含圖像的長寬像素值、每個像素的RGB等等,在ROS中都有標準定義。
消息是ROS中的一種接口定義方式,與編程語言無關,我們也可以通過.msg后綴的文件自行定義,有了這樣的接口,各種節(jié)點就像積木塊一樣,通過各種各樣的接口進行拼接,組成復雜的機器人系統(tǒng)。
-
機器人
+關注
關注
213文章
29563瀏覽量
211927 -
數(shù)據(jù)
+關注
關注
8文章
7247瀏覽量
91308 -
異步通信
+關注
關注
1文章
58瀏覽量
10316 -
通信模型
+關注
關注
0文章
10瀏覽量
7908
發(fā)布評論請先 登錄
MQTT的通信模型及消息
基于VxWorks實時操作系統(tǒng)的通信模型該怎樣去設計?
怎樣通過WebRTC實現(xiàn)多對多通信呢
移動Agent位置透明通信模型的設計
數(shù)據(jù)網(wǎng)格中基于優(yōu)化機制的通信模型
異步通信,異步通信是什么意思

基于VxWorks的通信模型設計

評論