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 機器人操作系統進階實戰》第一章,感興趣的話點擊鏈接查看課程瞭解詳情哦!

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