welcom ! Handel home

2025年2月4日 星期二

ROS 專案的目錄結構

 ROS (機器人作業系統) 的工作空間 (workspace) 是用來組織和建置 ROS 專案的目錄結構。一個典型 ROS 工作空間包含以下幾個關鍵的資料夾:

•src (source space): 這個資料夾是存放 ROS 原始碼的地方。每個 ROS 專案 (package) 都會放在 src 資料夾底下。

•build (build space): 這個資料夾是當你使用 catkin_make 或 colcon build 指令編譯 ROS 專案時,產生的中間檔案和編譯結果存放的地方.

•devel (development space): 這個資料夾用於存放編譯後的可執行檔和設定檔。

它也提供了一個方便的環境,讓你在開發過程中可以輕鬆執行和測試你的 ROS 程式碼.

•install (install space): 這個資料夾用於存放最終安裝的檔案,可以被其他 ROS 專案使用. 

在開發過程中,你通常會使用 devel 資料夾,而不是 install 資料夾.


一個 ROS 的工作空間的典型結構如下所示:

workspace_name/

├── src/

│   └── package1/

│   │   ├── CMakeLists.txt

│   │   ├── package.xml

│   │   └── ... (source code, configuration files, etc.)

│   └── package2/

│       ├── CMakeLists.txt

│       ├── package.xml

│       └── ...

├── build/

├── devel/

└── install/


以下是一些關於 ROS 工作空間和資料目錄結構的重點:

Catkin: ROS 使用 Catkin 作為其主要的建置系統。 

Catkin 會尋找工作空間中的 CMakeLists.txt 和 package.xml 檔案來建立專案.

•Package (包):ROS 的程式碼是組織在叫做 "package" 的單元裡。

每個 package 應該包含一個 package.xml 檔案 (用於描述 package 的資訊) 

和一個 CMakeLists.txt 檔案 (用於描述如何編譯 package)。

•Node (節點):ROS 程式的基本單元是節點 (node)。

節點可以發佈訊息到話題 (topic),也可以訂閱話題以接收訊息。

一個節點通常對應到一個可執行檔.

•分散式架構:ROS 採用分散式架構,讓不同的節點可以獨立運作,並且透過訊息傳遞來彼此溝通.

•roscore : roscore 是 ROS 的基礎,它是一個節點的集合,讓 ROS 節點之間能夠互相            溝通,在啟動任何 ROS 節點之前,必須先啟動 roscore。

        當使用 roslaunch 批次啟動節點時,roslaunch 會自動啟動 master

        所以便不必在啟動之前輸入 roscore。

•ROS環境設定: 需要設定環境變數,通常會使用 source devel/setup.bash (或者setup.zsh        等) 指令來設定環境變數,這樣才能正確找到 ROS 的相關執行檔和函式庫。

       在 src 資料夾中,每一個 package 都會包含 CMakeLists.txt 和 package.xml 檔案。

•package.xml: 描述 package 的資訊,例如名稱、版本、作者、相依套件等。

•CMakeLists.txt: 定義如何編譯 package 的 CMake 設定檔。


例如,一個機器人描述的 package 可能會包含以下檔案:

robot_description/

├── CMakeLists.txt

├── launch

│   ├── robot.launch

│   └── robot.rviz

├── meshes

│   └── robot.stl

├── package.xml

└── urdf

├── materials.xacro

├── robot.gazebo

└── robot.xacro


其中, robot.xacro 檔案會動態的產生 URDF 檔案,

robot.gazebo 則會定義 Gazebo 如何處理機器人的 links 和 joints

總之, ROS 的工作空間提供了一個結構化的環境,

    讓開發者可以建立、編譯和執行 ROS 專案。 

了解其資料目錄結構對於開發 ROS 應用程式至關重要。

沒有留言: