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

零之前言

要想真的用好ROS這款框架,需要我們需要比較好了解整個框架的架構。本文只做概念性的記錄,後面會詳細編寫其內容。
對於這一節內容,我選擇了幾個比較好的博客鏈接分享:
ROS學習筆記二:ROS系統架構及概念

一、三層級

ROS被分爲三部分與層級:文件系統級計算圖級開源社區級

1.文件系統級

在這裏插入圖片描述
引用一張圖,其中文件系統級可以由綜合功能包和功能包構成,綜合功能包由許多功能包構成,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的服務類型

2.計算圖集

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

這圖展示了運行時它們的關係:
在這裏插入圖片描述

名稱 作用
節點(node) 節點是主要的計算執行進程,推薦一個節點只對應一個功能
節點管理器(master) 顧名思義,可以直接理解爲管理這些節點是否存活,管理它們之間的關係的東西,也就是我們運行時用roscore啓動的東西之一
參數服務器(parameter server) 參數服務器是可通過網絡訪問的共享的多變量字典。節點使用此服務器來存儲和檢索運行時的參數。
消息(message) 消息包括一個節點發生到話題到其他節點的數據類型
話題(topic) 話題相當於消息的中轉站,多個節點可以給同一個節點發送同一種消息,多個節點也可以在節點力接收同一種消息
服務(service) 用於節點至節點的傳輸(不經過話題) ,其數據類型也可能需要自定義
消息記錄包(bag) 消息紀錄包是由ROS創建的一組文件。它使用 .bag 格式保存消息、主題、服務和其他ROS數據信息。(類似於日誌文件,查錯方便)

說明:話題和服務是兩種不同不同的通信方式。兩者有所差別,詳細的內容可以看這些博客:
ROS學習筆記6~Topic(話題) 和Service(服務)的區別
ROS話題和服務
我們可以大概可以這樣理解消息話題與服務,話題與服務是節點的通訊方式,而消息是話題的數據類型。

3.開源社區級別

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

  • 發行版
  • 軟件庫
  • ROS維基
  • Bug提交系統
  • 郵件列表
  • ROS問答
  • 博客
  • ……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章