2025年8月26日 星期二

ROS2 launch (gzserver , gzclient )

 要將 gzservergzclient 協同啟動,最常見且最方便的方法是使用一個 launch 檔案。但如果你需要手動操作,可以按照以下兩個步驟來進行。

1. 啟動 Gazebo 伺服器 (gzserver)

首先,在一個終端機中啟動 Gazebo 伺服器,並載入你的世界檔案(例如 empty.world)。這個指令會啟動 Gazebo 的後端,但不會顯示任何圖形介面。

# 確保 Gazebo 已被正確安裝
gzserver empty.world
  • 參數說明

    • empty.world:指定 Gazebo 要載入的世界檔案。這個檔案定義了環境、光線和任何靜態物體。

2. 啟動 Gazebo 客戶端 (gzclient)

在另一個終端機中,啟動 Gazebo 客戶端。gzclient 會自動尋找並連接到正在運行的 gzserver

gzclient
  • 自動連接gzclient 預設會嘗試連接到本地主機的 Gazebo 伺服器。

  • 一旦連接成功,你就會看到 Gazebo 的圖形介面,顯示 gzserver 中正在運行的世界。

使用 launch 檔案自動化啟動 (推薦)

為了避免手動啟動兩個終端機,並確保所有設定都正確載入,強烈建議使用 ROS2 的 launch 檔案。我們之前建立的 gazebo.launch.py 就已經包含了這個邏輯。

這個 launch 檔案使用 IncludeLaunchDescription 來啟動 Gazebo,它會自動處理 gzservergzclient 的啟動。

[Python]
# 這是我們之前建立的 launch 檔案中的一部分
# This is a part of the launch file we created before
gazebo_ros_dir = get_package_share_directory('gazebo_ros')

gazebo_node = IncludeLaunchDescription(
    PythonLaunchDescriptionSource(
        os.path.join(gazebo_ros_dir, 'launch', 'gazebo.launch.py')
    ),
    launch_arguments={'world': 'empty.world'}.items()
)

這個指令會自動

  1. 啟動 gzserver:在背景運行 Gazebo 的伺服器。

  2. 啟動 gzclient:在前景啟動 Gazebo 的圖形介面。

總結: 雖然你可以手動啟動 gzservergzclient

但使用 ros2 launch 是更標準、更推薦的做法,

它可以將整個模擬環境的啟動過程自動化,

並確保所有 ROS2 節點和 Gazebo 插件都能正確載入。



沒有留言:

張貼留言