ROS 机器人操作系统进阶实战
ROS(Robot Operating System) 是一個開源的機器人操作系統,目的是提供開發平臺、工具及生態給開發人員,可以讓開發人員快速開發。本課程通過精心設計的案例,分析技術要點、理解運行原理,以達到舉一反三的效果,從而應用到自己的機器人開發工作中去。
本課程將詳細介紹 ROS 的使用,課程包括了 Topic 通訊,Service 通訊,ROS 自定義消息,URDF可視化,TF坐標轉換等技術要點。每個技術點都會結合例子先把原理講解清楚,為了達到學以致用的目的,我們會再進行知識拓展,針對每個技術點實現對應的生動有趣的需求,保證學完后會有很大的收獲。
實驗介紹
在進行 ROS 項目開發前,首先介紹下整個 ROS 項目在部署運行過程中分為幾個部分,以及了解工程結構中 Workspace、Package、Node 它們之間的包含關系。
知識點
- 架構介紹
- 文件目錄結構
- Workspace 創建
- Package 創建
架構介紹
系統基本架構
總體來說,整個 ROS 項目在部署運行過程中,分為以下幾個部分:
- 環境
包含硬件環境和軟件環境。通常一個 ROS 機器人,需要一個開發主板用于運算和控制操作。
例如我們用樹莓派作為開發板,用于機器人的運算和控制操作,那么這就是軟件所運行的硬件環境。當然開發板上可能會外接一些其它硬件,如攝像頭,那么這些也屬于硬件環境。
開發板上通常需要有操作系統,所裝的操作系統屬于軟件環境。
-
執行器
執行器的主要作用是給操作系統發送一些指令,通過指令去控制硬件操作。例如發送指令給開發板,讓開發板外接的舵機轉動,然后驅動物體運動。執行器更像是硬件驅動的輸入。 -
傳感器
在硬件環境中,可能會安裝一些環境探測的硬件,例如溫度感應器。這些硬件感應器會將感覺的數據發布出來,傳感器其實扮演的就是這些硬件發布數據的傳播者,更像是硬件驅動的輸出。 -
軟件結構
這里所說的軟件結構是指,ROS 機器人運行時部署的軟件及軟件間的關系。
機器人運行起來后,內部會有很多單元程序運行,每個單元程序做很小的事情。比如讀取硬件驅動傳遞的數據、處理讀取的數據、判斷數據、發出指令等。
總之,ROS 將復雜的程序分解成了很小的一部分,每部分干很少的活,這樣每個部分還可以復用。
ROS 軟件結構組成
我們開發的每個節點都需要到 ROS Master 中去注冊,如下圖所示:
ROS Master:
- 管理 Node 節點間的通訊。
- 每個 Node 節點都需要到 Ros Master 中進行注冊。
啟動節點前,必須啟動 ROS Master。命令為?roscore。
ROS Node:
我們在 ROS 中所做的其實就是開發節點工作:
- 具備單一功能的可執行程序。
- 可以單獨編譯,可執行,可管理。
- 存放在 package 中。
文件系統
工作目錄結構
Workspace、Package、Node 是工程結構中的幾個關鍵詞,也是核心概念。以下圖片展示了三者之間的關系:
標準的 Workspace 工作目錄結構如下:
工作目錄理解
類似在企業中通過部門管理員工,俗話說人多瞎胡亂、雞多不下蛋。一旦項目變得復雜后,組織結構化和規范化就變得非常重要。
工作目錄說明
我們在開發一個 ROS 項目時,是以工作空間(workspace)來表示一個項目,一個工作空間包含如下 5 個部分:
- build:ROS 編譯打包的結果產出目錄。我們不需要對這個文件夾做任何編輯操作,屬于自動生成。
- devel:開發所需要的目錄。
- src:存放 package 的目錄。
- CMakeLists.txt:整個工作空間編譯的腳本。此文件我們通常不用修改。
- package:工作單元。
一個項目可以創建多個工作單元(package),一個工作單元包含如下幾個部分:
- pkg1:package 的名稱,開發過程中根據自己實際情況進行創建設定。
- CMakeLists.txt:當前 package 的編譯腳本。通常需要為 c++ 代碼添加編譯時的依賴、執行等操作。
- package.xml:package 相關信息。通常添加一些 ros 庫的支持。
- include?文件夾:存放 c++ 頭文件。
- config?文件夾:存放參數配置文件,格式為 yaml。
- launch?文件夾:存放 .launch 文件。
- src:c++ 源代碼。
- scripts:Python 源代碼。
- srv:存放定義的 service。
- msg:存放自定義的消息協議。
- action:存放自定義的 action。
實驗總結
通過上面的實驗,我們熟悉了 ROS 的系統架構以及 ROS 文件系統層次中的關鍵概念,并講解了 Clion Python 環境的搭建與配置,使我們更加清晰的了解 ROS 的運行機制、能夠更高效的編寫程序。
本實驗完整代碼下載:
wget https://labfile.oss.aliyuncs.com/courses/2947/code1.tar.gz # 解壓縮,使用如下命令 tar -zxf code1.tar.gz以上選自新課《ROS 機器人操作系統進階實戰》第一章,感興趣的話點擊鏈接查看課程了解詳情哦!
總結
以上是生活随笔為你收集整理的ROS 机器人操作系统进阶实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 2.4.0 全新
- 下一篇: 关于自然语言处理,有一本通关手册待接收