2025年6月25日 星期三

ROS2 ros2_ws是 node 預設 src 建立 pakcgae 說明

 ROS2 ros2_ws是 node 預設 src 建立 pakcgae 說明

在 ROS 2 中,ros2_ws 是工作區(workspace)的典型名稱,而 src 是其中用來放置 ROS 2 套件(package) 的目錄。這些是 ROS 開發中基本的概念與結構。


🗂️ ROS 2 Workspace 結構說明

bash
ros2_ws/ ← ROS 2 工作區根目錄 ├── src/ ← 所有的 ROS 2 套件都放這裡(可自訂套件名稱) │ ├── my_package/ ← 你建立的 ROS 2 套件 │ └── ... ├── build/ ← 編譯時產生的中間檔案 ├── install/ ← 安裝後可執行/可引用的檔案 └── log/ ← 編譯與執行時的 log

🔧 建立 ROS 2 套件基本指令(以 Node 為基礎)

📌 假設你已在 ros2_ws/src 裡:

bash
cd ~/ros2_ws/src ros2 pkg create --build-type ament_python my_node_pkg

或建立 C++ 套件:

bash
ros2 pkg create --build-type ament_cmake my_cpp_pkg --dependencies rclcpp

這會自動建立下列結構(以 Python 套件為例):

arduino
my_node_pkg/ ├── my_node_pkg/ ← Python 模組主目錄 │ └── __init__.py ├── package.xml ← ROS 套件的元資料 ├── setup.py ← Python 安裝腳本 ├── setup.cfg ← Python 配置檔 └── resource/ └── my_node_pkg

⚙️ 編譯與啟用套件

bash
cd ~/ros2_ws colcon build source install/setup.bash

▶️ 執行你寫的 Node

你可以在 my_node_pkg/my_node_pkg/my_node.py 裡建立 Python node,例如:

python
# my_node_pkg/my_node_pkg/my_node.py import rclpy from rclpy.node import Node class MyNode(Node): def __init__(self): super().__init__('my_node') self.get_logger().info('Hello from my_node!') def main(args=None): rclpy.init(args=args) node = MyNode() rclpy.spin(node) node.destroy_node() rclpy.shutdown()

並且更新 setup.py 中的 entry points:

python
entry_points={ 'console_scripts': [ 'my_node = my_node_pkg.my_node:main', ], },

重新編譯後即可執行:

bash
ros2 run my_node_pkg my_node

✅ 常見補充

功能指令
建立空白套件ros2 pkg create my_pkg
加入依賴--dependencies rclpy std_msgs
Python 套件需 ament_python--build-type ament_python
C++ 套件需 ament_cmake--build-type ament_cmake

如果你想看一個簡單的實作 node 範例(C++ 或 Python)、launch 檔、URDF 檔案或建構設定,我可以幫你一步步補齊。只需告訴我你要開發的功能主題,例如:「四輪小車」、「sensor node」、「簡單 pub/sub 範例」。

沒有留言:

張貼留言