要將 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 插件都能正確載入。
沒有留言:
張貼留言