welcom ! Handel home

2025年1月12日 星期日

ROS 工作區 (Workspace) and 套件 (Package) 建立

 

工作區 (Workspace)

1. 工作區的架構

  • 工作區是一個資料夾,通常包含以下子資料夾:
    • build/:存放編譯過程中產生的暫存檔,包括 makefile
    • devel/:存放編譯後的可執行檔。
    • src/:存放所有程式碼,包括編譯腳本 (CMakeLists.txt) 和套件描述檔 (package.xml)。

2. 初始化工作區

  • 建立一個資料夾並包含 src 子資料夾,例如:

    mkdir -p ~/hello_ws/src
  • 使用以下命令在 src/ 資料夾中初始化工作區:

    cd ~/hello_ws/src catkin_init_workspace
  • 這會在 src/ 資料夾中產生一個 CMakeLists.txt 檔案。

3. 編譯工作區

  • 切換到工作區的最外層資料夾,例如:
    cd ~/hello_ws
  • 使用以下命令編譯工作區:
    catkin_make
  • 這會在工作區中產生 build/devel/ 資料夾。

4. 連結工作區與 ROS

  • 方法一:在 ~/.bashrc 檔案中加入以下內容,並執行 source ~/.bashrc 更新設定檔:

    echo "source ~/hello_ws/devel/setup.bash" >> ~/.bashrc

    每次開啟終端機時,會自動設定好環境。

  • 方法二:每次開啟終端機後,切換到工作區最上層,執行:

    source devel/setup.bash

5. 確認工作區設定

  • 使用以下命令確認環境變數是否包含工作區路徑:
    echo $ROS_PACKAGE_PATH

套件 (Package)

1. 建立套件

  • 切換到工作區的 src/ 資料夾中:
    cd ~/hello_ws/src
  • 使用以下命令建立套件:
    catkin_create_pkg [package_name] [dependency1] [dependency2] ...
    範例:
    catkin_create_pkg hello std_msgs geometry_msgs rospy roscpp
  • 這會建立一個新的套件資料夾,包含:
    • CMakeLists.txt
    • package.xml
    • include/ 資料夾

2. 套件描述檔 (package.xml)

  • <build_depend>:指定編譯時的相依套件。
  • <run_depend>:指定執行時的相依套件。

3. 編譯腳本 (CMakeLists.txt)

  • project():指定套件的名稱。
  • find_package(catkin REQUIRED COMPONENTS ...):尋找套件並加入需要的元件。
  • include_directories():指定編譯時引入的資料夾。

4. 手動加入相依套件

  • 打開 package.xml 檔案,在以下區塊中加入相依套件:

    <build_depend>相依套件名稱</build_depend> <build_export_depend>相依套件名稱</build_export_depend> <exec_depend>相依套件名稱</exec_depend>

建立節點 (Node)

1. 節點檔案的建立

  • 切換至套件底下的 src/ 資料夾:

    cd ~/hello_ws/src/hello/src
  • 新增一個節點檔案,例如 hello_ros.cpp

2. 修改編譯腳本

  • 打開 CMakeLists.txt 檔案,加入以下內容:

    add_executable(執行檔名稱 檔案路徑) target_link_libraries(執行檔名稱 ${catkin_LIBRARIES})

3. 編譯與執行

  • 切換到工作區的最上層,執行:

    catkin_make
  • 執行以下命令設定環境:

    source devel/setup.bash
  • 節點執行指令:

    rosrun [package_name] [node_name]

其他注意事項

1. 相依套件

  • 建立套件時,必須指定相依的套件,例如 std_msgs, rospy, roscpp
  • 如果需要新增相依套件,需手動修改 package.xmlCMakeLists.txt

2. 版本兼容性

  • 確保 ROS 版本與 Gazebo 及其他相依套件相容。

3. 編譯注意

  • 每次更改套件設定或新增檔案後,記得執行 catkin_make 進行編譯,以確保變更生效。

總結

  1. 工作區架構

    • 包含 build/, devel/, src/ 等目錄。
    • 使用 catkin_make 編譯並初始化工作區。
  2. 套件建立與配置

    • 使用 catkin_create_pkg 建立套件。
    • 配置 package.xmlCMakeLists.txt 文件。
  3. 節點創建與編譯

    • 在套件內創建節點檔案,更新 CMakeLists.txt,並重新編譯。

通過遵循這些步驟,您可以正確地建立和管理 ROS 工作區與套件!

沒有留言: