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