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