基本概念:
ROS是一個(gè)用于在不同進(jìn)程間匿名的發(fā)布、訂閱、傳遞信息的中間件。
ROS2系統(tǒng)的核心部分是ROS網(wǎng)絡(luò)(ROS Graph)。
ROS網(wǎng)絡(luò)是指在ROS系統(tǒng)中不同的節(jié)點(diǎn)間相互通信的連接關(guān)系。
ROS Graph這里翻譯成了ROS網(wǎng)絡(luò),因?yàn)槲矣X得Graph更加抽象,而網(wǎng)絡(luò)的概念更容易幫助理解其內(nèi)涵。
ROS網(wǎng)絡(luò)(ROS Graph)概念簡(jiǎn)介:
節(jié)點(diǎn)(Nodes):一個(gè)節(jié)點(diǎn)是一個(gè)利用ROS系統(tǒng)和其他節(jié)點(diǎn)通信的實(shí)體
消息(Messages):ROS中在訂閱和發(fā)布主題時(shí)所用到的數(shù)據(jù)結(jié)構(gòu)
主題(Topics): 節(jié)點(diǎn)可以發(fā)布信息到一個(gè)主題,同樣也可訂閱主題來(lái)接收消息
發(fā)現(xiàn)(Discovery): 一個(gè)自動(dòng)運(yùn)行的進(jìn)程,通過(guò)這個(gè)進(jìn)程不同的節(jié)點(diǎn)相互發(fā)現(xiàn),建立連接
節(jié)點(diǎn)(Nodes)
一個(gè)節(jié)點(diǎn)就是一個(gè)在ROS網(wǎng)絡(luò)中的參與者。
ROS節(jié)點(diǎn)通過(guò)ROS客戶端程序庫(kù)(ROS client library)來(lái)和其他節(jié)點(diǎn)進(jìn)行通信。
節(jié)點(diǎn)可以發(fā)布或者訂閱主題 節(jié)點(diǎn)也可以提供ROS服務(wù)(Service)。
節(jié)點(diǎn)有很多可以配置的相關(guān)參數(shù)。
節(jié)點(diǎn)間的連接時(shí)通過(guò)一個(gè)分布式發(fā)現(xiàn)進(jìn)程來(lái)建立的(即上面所說(shuō)的發(fā)現(xiàn))。
不同的節(jié)點(diǎn)可以在同一個(gè)進(jìn)程里面,也可以在不同的進(jìn)程里面,甚至可以在不同的機(jī)器上。
客戶端程序庫(kù)
ROS客戶端程序庫(kù)可以讓不同的語(yǔ)言編寫的節(jié)點(diǎn)進(jìn)行通信。
在不同的編程語(yǔ)言中都有對(duì)應(yīng)的ROS客戶端程序庫(kù)(RCL),這個(gè)程序庫(kù)實(shí)現(xiàn)了ROS的基本API。
這樣就確保了不同的編程語(yǔ)言的客戶端更加容易編寫,也保證了其行為更加一致。
下面的客戶端程序庫(kù)是由ROS2團(tuán)隊(duì)維護(hù)的
rclcpp = C++ 客戶端程序庫(kù)
rclpy = Python 客戶端程序庫(kù)
另外其他客戶端程序也已經(jīng)有ROS社區(qū)開發(fā)出來(lái)。可以看[[ROS 客戶端程序庫(kù)]]來(lái)了解詳細(xì)信息
發(fā)現(xiàn)
節(jié)點(diǎn)之間的互相發(fā)現(xiàn)是通過(guò)ROS2底層的中間件實(shí)現(xiàn)的。
過(guò)程總結(jié)如下:
當(dāng)一個(gè)節(jié)點(diǎn)啟動(dòng)后, 它會(huì)向其他擁有相同ROS域名的節(jié)點(diǎn)進(jìn)行廣播,說(shuō)明它已經(jīng)上線。
ROS域名(ROS domain, 可以通過(guò)設(shè)置ROS_DOMAIN_ID環(huán)境變量來(lái)設(shè)置)
其他節(jié)點(diǎn)在收到廣播后返回自己的相關(guān)信息,這樣節(jié)點(diǎn)間的連接就可以建立了,之后就可以通信了。
節(jié)點(diǎn)會(huì)定時(shí)廣播它的信息,這樣即使它已經(jīng)錯(cuò)過(guò)了最初的發(fā)現(xiàn)過(guò)程,它也可以和新上線的節(jié)點(diǎn)進(jìn)行連接。
節(jié)點(diǎn)在下線前它也會(huì)廣播其他節(jié)點(diǎn)自己要下線了。
節(jié)點(diǎn)只會(huì)和具有相兼容的[服務(wù)質(zhì)量]設(shè)置的節(jié)點(diǎn)進(jìn)行通信。
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7565瀏覽量
88794 -
客戶端
+關(guān)注
關(guān)注
1文章
290瀏覽量
16688 -
ROS
+關(guān)注
關(guān)注
1文章
278瀏覽量
17010
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論