ROS2 ros2_ws是 node 預設 src 建立 pakcgae 說明
在 ROS 2 中,ros2_ws
是工作區(workspace)的典型名稱,而 src
是其中用來放置 ROS 2 套件(package) 的目錄。這些是 ROS 開發中基本的概念與結構。
🗂️ ROS 2 Workspace 結構說明
bashros2_ws/ ← ROS 2 工作區根目錄
├── src/ ← 所有的 ROS 2 套件都放這裡(可自訂套件名稱)
│ ├── my_package/ ← 你建立的 ROS 2 套件
│ └── ...
├── build/ ← 編譯時產生的中間檔案
├── install/ ← 安裝後可執行/可引用的檔案
└── log/ ← 編譯與執行時的 log
🔧 建立 ROS 2 套件基本指令(以 Node 為基礎)
📌 假設你已在 ros2_ws/src
裡:
bashcd ~/ros2_ws/src
ros2 pkg create --build-type ament_python my_node_pkg
或建立 C++ 套件:
bashros2 pkg create --build-type ament_cmake my_cpp_pkg --dependencies rclcpp
這會自動建立下列結構(以 Python 套件為例):
arduinomy_node_pkg/ ├── my_node_pkg/ ← Python 模組主目錄 │ └── __init__.py ├── package.xml ← ROS 套件的元資料 ├── setup.py ← Python 安裝腳本 ├── setup.cfg ← Python 配置檔 └── resource/ └── my_node_pkg
⚙️ 編譯與啟用套件
bashcd ~/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:
pythonentry_points={
'console_scripts': [
'my_node = my_node_pkg.my_node:main',
],
},
重新編譯後即可執行:
bashros2 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 範例」。
沒有留言:
張貼留言