要將 gzserver 和 gzclient 協同啟動,最常見且最方便的方法是使用一個 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,它會自動處理 gzserver 和 gzclient 的啟動。
[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()
)
這個指令會自動:
啟動
gzserver:在背景運行 Gazebo 的伺服器。啟動
gzclient:在前景啟動 Gazebo 的圖形介面。
總結:
雖然你可以手動啟動 gzserver 和 gzclient,
但使用 ros2 launch 是更標準、更推薦的做法,
它可以將整個模擬環境的啟動過程自動化,
並確保所有 ROS2 節點和 Gazebo 插件都能正確載入。
沒有留言:
張貼留言