ROS2官方教程 ROS2 概念概覽

2021-09-02 22:17:41 字數 1189 閱讀 3283

原文:

ros是乙個基於匿名訊息發布(publish)或訂閱(subscribe)機制的中間層,這種機制可以幫助訊息能夠在不同的ros程序之間傳輸。

在ros2系統中的核心是ros圖(ros graph),ros圖指的是乙個ros系統中的節點網路以及它們之間通訊時的聯絡。

在ros圖中,節點是必要的組成部分。ros節點使用ros客戶端程式庫(ros client library, rcl)來實現與其他節點之間的通訊。節點可以從主題中發布或訂閱訊息,同時也可以提供或使用服務。每個節點具有一些可以配置的引數。節點之間的通訊是通過乙個分布式的發現程序(distributed discovery process)來建立的。節點可以在同乙個程序中,也可以在不同的程序中,甚至是在不同的機器中。這些概念將會在之後的章節描述中詳細說明。

ros客戶端程式庫允許不同程式語言的節點之間進行通訊。ros客戶端程式庫是實現最通用功能的核心,實現了不同語言的ros api所需要的通用功能。所以與特定程式語言相關的ros客戶端程式庫是很容易編寫的,而且他們有很多一致的行為特性。

ros2的團隊維護著以下兩個客戶端程式庫:

另外,其他語言的客戶端程式庫已經在ros社群中被開發,可以參考ros2 client libraries:

通過ros2底層的中介軟體來實現自動化發現節點的任務,可以簡單描述如下:

當乙個節點啟動後,它會向處於同乙個ros域(ros demain)網路中的其他節點廣播它存在的狀態,通過設定ros_domain_id環境變數來實現。其他節點響應這個廣播並回應各自的資訊,從而建立起準確的連線,進而可以實現通訊;

同時,所有節點週期性的廣播它存在的狀態,從而可以在新的節點建立之後能夠與該節點建立通訊,甚至在最初的發現機制之後就可以建立連線;

當乙個節點關閉時,它會廣播關閉的訊息給其他節點;

節點僅僅會與相容的qos(quality of service)設定的其他節點建立連線。

在乙個終端中,啟動乙個c++節點來發布訊息到乙個主題:

ros2 run demo_nodes_cpp talker
在另乙個終端中,啟動第二個節點,可以選擇python節點,用來從同乙個主題中接收訊息:

ros2 run demo_nodes_py listener
可以發現,兩個節點之間自動的實現了通訊,開始交換資料。

ROS2學習 建立自己的ROS2功能包

建立資料夾 mkdir p ros2 ws src cd ros2 ws colcon build1 建立功能包 建立乙個pubsub的包 ros2 pkg create build type ament cmake cpp pubsub改xml檔案裡的郵箱 2 寫發布節點 建立ros2 talke...

ROS2官網教程學習筆記理解ROS2節點篇

提前準備 學習任務 3 ros2 node info 總結以下內容主要對官網教程進行翻譯 在ros2中單獨提出了graph概念,在接下來的教程中,將學習構成ros2網路的一系列關於ros2核心概念。ros網路乙個由ros2中的元素在同一時刻進行資料處理組成的網路。換個視覺化的方式來說它包含所有可執行...

ROS翻譯 Ubuntu下安裝ROS2

資源 要安裝debian軟體包,你需要將我們的debian儲存庫新增到apt源。首先你需要授權我們的gpg金鑰,就像這樣 sudo apt update sudo apt install curl curl sudo apt key add 然後將儲存庫新增到你的源列表中 sudo sh c ech...