天天看點

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

ROS學習筆記四

  • 一、工作空間
    • src - 代碼空間(Source Space)
    • build - 編譯空間(Build Space)
    • devel - 開發空間(Development Space)
    • install - 安裝空間(Install Space)
  • 二、建立工作空間
    • 建立工作空間
    • 編譯工作空間
    • 設定環境變量
    • 檢查環境變量
  • 三、建立功能包
    • 建立功能包
    • 編譯功能包
    • package.xml檔案
    • cMakeList.txt

一、工作空間

工作空間(workspace)是一個存放工程開發相關檔案的檔案夾。 類似于windows系統中我們所建立的工程檔案。

src - 代碼空間(Source Space)

放置功能包,包括其代碼,配置檔案等等。

build - 編譯空間(Build Space)

放置編譯過程中産生的中間檔案。

devel - 開發空間(Development Space)

放置編譯生成的可執行檔案,庫,腳本等。

install - 安裝空間(Install Space)

存放install指令安裝成功後的檔案。

下圖源自古月《ROS入門21講》
ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

二、建立工作空間

建立工作空間

$ mkdir -p ~/catkin_ws/src			
$ cd~/catkin_ws/src
$ catkin_init_workspace
           

其中工作空間名字可自定義,但其後一定要是src

mkdir -p:遞歸建立目錄,即使上級目錄不存在,會按照目錄層級自動建立目錄。

catkin_init_workspace:将該檔案夾初始化成工作空間屬性。

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

編譯工作空間

$ cd~/catkin_ws/
$ catkin_make
           

回到工作空間根目錄下進行編譯。

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

在根目錄下使用

$ catkin_make install
           

可以産生install檔案夾

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

設定環境變量

$ source devel/setup.bash
           

檢查環境變量

$ echo $ROS_PACKAGE_PATH
           

三、建立功能包

catkin_create_pkg package_name depend1 depend2 depend3

package_name:功能包的名字

depend:該功能包所需的依賴

同一工作空間下,不允許存在同名功能包,不同工作空間下,允許存在同名功能包。

建立功能包

$ cd/catkin_ws/src
$ catkin_create_pkg test_pkg std_msgs rospy roscpp
           

std_msgs:ROS定義的标準資訊結構

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

其中:

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

CMakeLists.txt和package.xml是每個功能包必須有的兩個檔案,可以區分功能封包件夾與普通檔案夾

編譯功能包

$ cd~/catkin_ws
$ catkin_make
$ source~/catkin_ws/devel/setup.bash
           
ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

當要運作功能包中的某個程式時,需要先設定工作空間的環境變量

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

可以用

$ echo $ROS_PACKAGE_PATH
           

進行檢查

ROS學習筆記四(建立工作空間與功能包)一、工作空間二、建立工作空間三、建立功能包

package.xml檔案

該檔案儲存功能包的有關資訊,作者,版本,開源程度等以及功能包的依賴,後續新增依賴可以在這裡手動添加。

cMakeList.txt

描述功能包的編譯規則。

往期連結

ROS學習筆記三(ROS指令行工具的使用)

ROS學習筆記二(ROS的核心概念)

ROS學習筆記一(Linux系統基礎操作)