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

ros的基本概念是什么
評論