welcom ! Handel home

2025年2月4日 星期二

建置新的 ROS 工作空間 (workspace)、package (包) 和 node (節點) 的操作範例

 建置新的 ROS 工作空間 (workspace)、package (包) 和 node (節點) 的操作範例,可以參考以下步驟:

1. 建置 ROS 工作空間 (workspace)

•創建工作空間資料夾: 首先,你需要創建一個資料夾作為你的 ROS 工作空間,並在其中創建一個 src 資料夾。

 

 例如,你可以使用以下指令:

•初始化工作空間: 接著,使用 catkin_init_workspace 指令來初始化工作空間。

這個指令會在 src 資料夾中創建一個 CMakeLists.txt 檔案。

•編譯工作空間: 回到工作空間的最上層目錄,使用 catkin_make 指令來編譯工作空間。

這會創建 build 和 devel 資料夾。

•設定環境變數: 每次開啟新的終端機時,需要設定 ROS 環境變數,讓系統知道你的工作空間位置。

你可以執行以下指令:

•或者,你可以將此指令加入 ~/.bashrc 檔案,使其在每次開啟終端機時自動執行。


2. 建立 ROS Package (包)

•創建 package: 進入 src 資料夾,使用 catkin_create_pkg 指令來創建一個新的 package。你需要指定 package 名稱以及相依套件。

例如,創建一個名為 my_tutorial 的 package,相依於 std_msgs, roscpp, 和 rospy:

•編譯 package: 回到工作空間的最上層目錄,使用 catkin_make 指令來編譯 package。

•你也可以使用 catkin_make --pkg <package_name> 來單獨編譯某個 package。

•Package 檔案: package 建立後,你會在 package 目錄下看到 CMakeLists.txt 和 package.xml 檔案,以及 src 資料夾。

package.xml 檔案描述了 package 的資訊,例如名稱、版本、作者、相依套件等。CMakeLists.txt 檔案定義了如何編譯 package 的 CMake 設定檔。


3. 建立 ROS Node (節點)

•建立節點檔案: 在 package 的 src 資料夾中,建立一個新的節點檔案。例如,你可以建立一個 C++ 檔案 hello_ros.cpp。

•撰寫節點程式碼: 在 hello_ros.cpp 檔案中,加入以下程式碼作為範例:

•設定 CMakeLists.txt: 打開 package 中的 CMakeLists.txt 檔案,加入以下程式碼來定義如何編譯節點:

•加入相依套件: 如果你的節點有使用到其他 ROS 套件,你需要在 package.xml 檔案中加入相依套件的宣告。例如,如果你的節點有使用到 roscpp,你需要加入:

•編譯節點: 回到工作空間的最上層目錄,使用 catkin_make 指令來編譯節點

•執行節點: 使用 rosrun 指令來執行你的節點。

•注意: 在執行任何節點之前,你需要先啟動 roscore (ROS Master)。 

bash roscore 或者, 如果你使用 roslaunch 來啟動節點,roslaunch 會自動啟動 roscore,你就不必手動啟動它。


4. 其他重要概念

•節點 (Node): 節點是 ROS 中執行的基本單元,它們可以發布訊息到話題 (topic),也可以訂閱話題以接收訊息。

•話題 (Topic): 話題是訊息傳遞的管道,節點可以透過話題來互相溝通。

•roslaunch: roslaunch 可以用來批次啟動多個節點,它會讀取 launch 檔案 (通常是 XML 格式),並按照檔案中的設定來啟動節點。

•rosrun: rosrun 指令可以用來單獨執行一個節點。

•roscore: roscore 是 ROS 的基礎,它負責管理節點之間的通訊。


5. 額外說明

•多個回呼函式 (Callback function): 如果你想讓同一個訂閱的 Topic 給多個函式使用,你可以宣告多個 ros::Subscriber 物件,並為每個物件指定不同的回呼函式。

•參數化: 你可以使用 NodeHandle::param 來將程式中的變數參數化,這樣你就可以在終端機上或在 launch 檔案中直接指定參數值。

•使用 launch 檔案: 你可以使用 launch 檔案來啟動多個節點,並設定它們的參數和 remap 設定。

•Gazebo模擬: Gazebo 是一個 3D 物理模擬器,可以用於模擬機器人和環境。你可以使用 gazebo_ros 套件來將 ROS 和 Gazebo 整合。


以上範例提供了一個基礎的 ROS 工作空間、package 和 node 的建置流程。你可以根據你的需求來擴展和修改這些範例。

沒有留言: