ROS 2 index翻譯(一)——ROS 2 概念概覽

ROS是一個基於匿名發佈/訂閱(publish/subscribe)機制的中間件(middleware),該機制允許在不同的ROS進程中傳遞消息。
ROS 2系統的核心是ROS圖(Graph)。ROS圖泛指ROS系統的節點網絡及其通信連接。

1.圖(Graph)概念速覽
①節點(Nodes):節點就是一個用ROS與其他節點通信的實體。
②消息(Messages):訂閱和發佈給一個話題(topic)所用到的ROS數據類型。
③話題(Topics):節點發布消息給一個話題,同時也可以從一個話題中接收消息。
④發現(Discovery):各節點間決定如何相互會話(talk)的自動化過程(process)。

2.節點
節點是ROS圖的參與者。ROS節點使用ROS客戶端庫(client library)與其他節點通信。節點能向話題發佈和訂閱消息,也可以提供或使用一項服務(Service)。節點包含一些配置參數。節點之間的連接通過分佈式發現過程(distributed discovery process)來建立。節點可能位於相同或不同的進程,或者在不同的機器中。這些概念將在下面詳細闡述。

3.客戶端庫(Client Libraries)
ROS客戶端庫允許用不同編程語言編寫的節點之間通信。這裏有一個核心ROS客戶端庫(RCL),它實現了不同語言的ROS API所需的通用功能。這使得基於特定語言的客戶端庫更易於編寫,並且具有更一致的行爲。
以下客戶端庫由ROS 2團隊維護:
① rclcpp = C++ 客戶端庫;
② rclpy = Python 客戶端庫。
另外,ROS社區還開發了其他客戶端庫。有關更多詳細信息,請參閱ROS2客戶端庫文章。

4.發現
節點的發現通過ROS2的底層中間件自動發生,可以總結如下:
①開啓一個節點時,該節點向具有相同ROS域的網絡上其他節點廣播其存在(使用ROS_DOMAIN_ID環境變量)。其他節點使用關於自身的信息響應該廣播,由此可以進行適當的連接並且節點可以進行通信。
②節點定期廣播其存在,由此可以與新建節點進行連接,甚至是在最初的發現週期之後。
③節點下線時會向其他節點廣播(說拜拜)。
假如節點兼容Quality of Service設定,它們將只能和其他節點建立連接。

5.示例:talker-listener
在一個PC機系統終端(terminal),開啓一個將在主題上發佈消息的節點(用C++編寫)。

ros2 run demo_nodes_cpp talker

在另一個終端,啓動第二個節點(用Python編寫),該節點將訂閱同一主題的消息。

ros2 run demo_nodes_py listener

你應該會看到這些節點自動發現彼此,並且開始交換信息。

英語原文:https://index.ros.org/doc/ros2/Concepts/Overview-of-ROS-2-concepts/

請關注本人的技術分享微信公衆號:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章