ros2 launch
和 ros2 run
是 ROS 2 中常用的兩個命令,但用途不同、適用場景也不同。
以下是詳細差異說明與使用情境比較:
🚀 ros2 run
:執行單一節點
🔹 功能:
執行某個 已安裝的單一節點(node 可執行檔)
🔹 語法:
bashros2 run <package_name> <executable_name>
🔹 使用場景:
-
測試單一 node
-
手動啟動簡單的 ROS 程式
-
script 開發測試、除錯
🔹 範例:
bashros2 run turtlesim turtlesim_node ros2 run my_package my_node_script
✅ 優點:
-
快速、簡潔
-
適合單個 node 測試或除錯
🚀 ros2 launch
:啟動一組節點或整體 ROS 系統
🔹 功能:
透過 .launch.py
啟動 一個或多個節點與參數配置,可控制 node 啟動順序、參數、namespace、remap、Gazebo、URDF 載入等。
🔹 語法:
bashros2 launch <package_name> <launch_file.launch.py>
🔹 使用場景:
-
載入機器人模型 + Gazebo 模擬
-
啟動一整套系統(感測器 + 控制 + 可視化)
-
多 node 同時啟動
-
整合開發流程
🔹 範例:
bashros2 launch turtlebot3_gazebo turtlebot3_world.launch.py ros2 launch my_robot_pkg bringup.launch.py
✅ 優點:
-
統一管理與設定多個 node
-
可使用參數、條件式邏輯
-
適合實際部署與模擬使用
📊 總結比較表
功能比較 | ros2 run | ros2 launch |
---|---|---|
啟動內容 | 單一 node | 一個或多個 node + 配置 |
設定參數 | 不支援(或需手動指定) | 可使用 launch arguments、YAML 等 |
啟動 Gazebo 等 | ❌ 不行 | ✅ 可以整合 URDF、RViz、Gazebo |
適合開發階段 | 單一 node 測試、除錯 | 整體系統部署、模擬或測試 |
檔案格式 | 無需特殊檔案(只需 node) | 需要 .launch.py 檔案 |
🛠 補充範例:一個最簡的 launch file
python# my_package/launch/display.launch.py
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='my_package',
executable='my_node',
name='my_node',
output='screen'
)
])
📌 結論
-
用
ros2 run
:
當你只想快速測試一個 node 是否能動作 -
用
ros2 launch
:
當你要執行整體系統,或需要更複雜的設定(例如機器人模型、模擬、GUI、參數檔)
沒有留言:
張貼留言