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 應用程式至關重要。
沒有留言:
張貼留言