建置新的 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 的建置流程。你可以根據你的需求來擴展和修改這些範例。
沒有留言:
張貼留言