2025年6月23日 星期一

Ros2 use Ignition Gazebo( Gazebo Sim) package not gazebo_ros

ros2 pkg list | grep gazebo 的輸出結果。

這個結果 ros_ign_gazebo 和 ros_ign_gazebo_demos 清楚地顯示,您當前使用的 Docker 映像檔 (osrf/ros:humble-desktop-full) 
預設安裝的是 Ignition Gazebo (也稱為 Gazebo Sim) 的 ROS 2 橋接套件,
而不是傳統的 Gazebo Classic (即 ROS 1 時代常用的 Gazebo)。

這就是為什麼您會看到 Package 'gazebo_ros' not found 的錯誤訊息。gazebo_ros 套件是用於整合 Gazebo Classic 和 ROS 2 的,而您的系統上只有 Ignition Gazebo 相關的橋接套件。

解決方案:使用 ros_ign_gazebo 啟動 Ignition Gazebo
既然您已經在 ros_ign_gazebo 的環境下,我們就需要使用它的啟動檔案來開啟 Gazebo Sim,並載入您的世界。

以下是操作步驟:

1. 確認 ros_ign_gazebo 的啟動檔案
通常,ros_ign_gazebo 會提供一個通用的啟動檔案來啟動 Ignition Gazebo。

2. 修改您的世界檔案路徑
Ignition Gazebo 處理世界檔案的方式與 Gazebo Classic 略有不同。最簡單的方法是確保您的世界檔案 maze.world 位於 GAZEBO_MODEL_PATH 可以搜尋到的位置。

由於您已經將 my_maze_world/models 加入 GAZEBO_MODEL_PATH,我們來確保 worlds 資料夾也能被找到。您可以透過以下兩種方式之一達成:

選項 A (推薦):將 worlds 資料夾也加入 GAZEBO_MODEL_PATH

這是在啟動 Gazebo Sim 之前最直接的方式,讓它能找到您的世界檔案。

Bash

# 確保在 ros2_ws 目錄下
cd ros2_ws

# 再次 source ROS 2 官方安裝的路徑 (這一步很重要!)
source /opt/ros/humble/setup.bash

# 然後再 source 您的工作區
source install/setup.bash

# 設定 GAZEBO_MODEL_PATH,這次包含 models 和 worlds
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:$(ros2 pkg prefix my_maze_world)/share/my_maze_world/models:$(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds
選項 B (替代):直接指定世界檔案的絕對路徑


沒有留言:

張貼留言