ROS學習記錄2 ROS框架的概述

2021-10-04 08:32:02 字數 2400 閱讀 2782

要想真的用好ros這款框架,需要我們需要比較好了解整個框架的架構。本文只做概念性的記錄,後面會詳細編寫其內容。

對於這一節內容,我選擇了幾個比較好的部落格鏈結分享:

ros學習筆記二:ros系統架構及概念

ros被分為三部分與層級:檔案系統級計算圖級開源社群級

引用一張圖,其中檔案系統級可以由綜合功能包和功能包構成,綜合功能包由許多功能包構成,ros提供了許多的綜合功能包以便我們呼叫。而功能包裡的東西,是我們的重點。

我們來看看乙個ros的裡的檔案結構的例子,等會兒講解的時候也可以對照著這**來看:

我們先tree乙個目錄(該目錄就是工作目錄),這個目錄裡有:builddevelsrc三個子資料夾。其中的builddevel分別是編譯的中間產物和結果,我們可以不用太去管它,最重要的就是src這個資料夾了,我們編寫的東西,基本上都存放在這裡。

結合圖例,我們的功能包就是這個src資料夾裡的example,這個包就叫做功能包,裡面可能會有以下東西:

型別必需

路徑作用

資料夾必需

/include/包名

用於存放我們寫的**的標頭檔案

資料夾否

/msg

用於編寫我們非標準通訊資料型別格式

資料夾否

/svr

用於編寫我們服務的資料格式

資料夾否

/script

用於存放指令碼檔案,python**也放這裡

資料夾必需

/src

用於存放我們編寫的節點的原始碼

檔案必需

/用於編譯的cmake語句

檔案必需

/功能包清單檔案

對於功能包的管理,ros推出了一些類似於linux的命令,例如roscdrosls等,至於用法不贅述,可以看這裡的詳細例子:創客智造-ros入門教程-1.1.2 ros檔案系統介紹

綜合功能包是一些只有乙個package.xml檔案的特定包,它不包含其他檔案,如**等。綜合功能包用於引用其他功能特性類似的功能包。

訊息存放在功能包的/src/msg裡,用於規定通訊的非標準資料型別。

服務存放於功能包的/srv裡,用於規定通訊的非標準資料型別。

ros使用了一種簡化的服務描述語言來描述ros的服務型別

ros的計算圖集由下圖所示組成

這圖展示了執行時它們的關係:

名稱作用

節點(node)

節點是主要的計算執行程序,推薦乙個節點只對應乙個功能

節點管理器(master)

顧名思義,可以直接理解為管理這些節點是否存活,管理它們之間的關係的東西,也就是我們執行時用roscore啟動的東西之一

引數伺服器(parameter server)

引數伺服器是可通過網路訪問的共享的多變數字典。節點使用此伺服器來儲存和檢索執行時的引數。

訊息(message)

訊息包括乙個節點發生到話題到其他節點的資料型別

話題(topic)

話題相當於訊息的中轉站,多個節點可以給同乙個節點傳送同一種訊息,多個節點也可以在節點力接收同一種訊息

服務(service)

用於節點至節點的傳輸(不經過話題) ,其資料型別也可能需要自定義

訊息記錄包(bag)

訊息紀錄包是由ros建立的一組檔案。它使用 .bag 格式儲存訊息、主題、服務和其他ros資料資訊。(類似於日誌檔案,查錯方便)

說明:話題和服務是兩種不同不同的通訊方式。兩者有所差別,詳細的內容可以看這些部落格:

ros學習筆記6~topic(話題) 和service(服務)的區別

ros話題和服務

我們可以大概可以這樣理解訊息話題與服務,話題與服務是節點的通訊方式,而訊息是話題的資料型別。

這一級別的內容沒有什麼可以說的,主要就是可以學習ros的資源包括一下內容:

ros學習記錄2 ros檔案系統

在工作空間組織和管理功能包的資料夾,用catkin工具來編譯 2.1.1 建立工作空間 mkdir p tutorial ws src 建立catkin工作空間 名字自定義,但是要有src資料夾 cd catkin ws 回到工作空間,catkin make必須在工作空間下執行 catkin mak...

ROS 學習筆記(2)ROS 命令列工具

古月居 命令列工具 啟動終端指令,也是ros使用中第一步需要執行的指令 啟動終端,使用roscore啟動 ros master roscore會出現如下介面 這個終端是不可以關閉的。執行指令,執行ros功能包中的某個節點 接著開啟另外乙個終端,使用 rosrun 指令執行節點,節點屬於功能包,因此執...

ROS教程2 ROS檔案系統介紹

由於該部分會用到程式包ros tutorials,因此需要先安裝 sudo apt install ros ros tutorials注意將 替換成你所安裝的版本 比如jade indigo hydro groovy fuerte等 本文所使用的主要是kinetic版本,因此寫成 sudo apt ...