在ROS系統中,無論話題還是服務,或者我們后續將要學習的動作,都會用到一個重要的概念——通信接口。
通信并不是一個人自言自語,而是兩個甚至更多個人,你來我往的交流,交流的內容是什么呢?為了讓大家都好理解,我們可以給傳遞的數據定義一個標準的結構,這就是通信接口。
接口的定義
接口的概念在各個領域隨處可見,無論是硬件結構還是軟件開發,都有廣泛的應用。
比如生活中最為常見的插頭和插座,兩者必須匹配才能使用,電腦和手機上的USB接口也是,什么Micro-USB、TypeC等等,都是關于接口的具體定義。
軟件開發中,接口的使用就更多了,比如我們在編寫程序時,使用的函數和函數的輸入輸出也稱之為接口,每一次調用函數的時候,就像是把主程序和調用函數通過這個接口連接到一起,系統才能正常工作。
更為形象的是圖形化編程中使用的程序模塊,每一個模塊都有固定的結構和形狀,只有兩個模塊相互匹配,才能在一起工作,這就很好的講代碼形象化了。
所以什么是接口,它是一種相互關系,只有彼此匹配,才能建立連接。
回到ROS的通信系統,它的主要目的就是傳輸數據,那就得讓大家高效的建立連接,并且準確包裝和解析傳輸的數據內容,話題、服務等機制也就誕生了,他們傳輸的數據,都要符合通信接口的標準定義。
比如攝像頭驅動發布的圖像話題,由每個像素點的R、G、B三原色值組成,控制機器人運動的速度指令,由線速度和角速度組成,進行機器人配置的服務,有配置的參數和反饋的結果組成等等。
類似這些常用的定義,在ROS系統中都有提供,我們也可以自己開發。
這些接口看上去像是給我們加了一些約束,但卻是ROS系統的精髓所在。
舉個例子,我們使用相機驅動節點的時候,完全不用關注它是如何驅動相機的,只要一句話運行,我們就可以知道發布出來的圖像數據是什么樣的了,直接開始我們的應用開發;
類似的,鍵盤控制我們也可以安裝一個ROS包,如何實現的呢?不用關心,反正它發布出來的肯定是線速度和角速度。
-
通信接口
+關注
關注
3文章
238瀏覽量
30996 -
ROS
+關注
關注
1文章
278瀏覽量
17010 -
系統
+關注
關注
1文章
1017瀏覽量
21347
發布評論請先 登錄
相關推薦
評論