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