2025年6月26日 星期四

ROS2 Gazebo Sim vs Gazebo Classic(v11) Launch update

ros2 launch ros_ign_gazebo ign_gazebo.launch.py gz_args:="-r $(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world"

 你這行指令是用來啟動 Ignition Gazebo (現在叫 Gazebo Sim),但你現在想改用 Gazebo Classic(v11)。這兩者的架構、啟動方式不一樣,

不能直接共用 ros_ign_gazebo 的 launch 檔。


✅ 目標:改成用 Gazebo Classic v11 + ROS 2(gazebo_ros) 來啟動 maze.world


🔧 Step 1:安裝對應套件(如尚未裝)

bash
sudo apt install ros-humble-gazebo-ros-pkgs

這會安裝:

  • Gazebo Classic v11

  • ROS-Gazebo 介接 plugin(如 libgazebo_ros_factory.so


🧱 Step 2:確認 world 檔案路徑存在

你的 world 應該在:

swift
$(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world

可用這指令驗證:

bash
ros2 pkg prefix my_maze_world

▶️ Step 3:用 gazebo_ros 官方 launch file 啟動 Gazebo Classic v11

bash
ros2 launch gazebo_ros gazebo.launch.py world:=$(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world

✅ 說明

  • gazebo_ros gazebo.launch.py 是 ROS 2 for Gazebo Classic 的官方啟動器

  • world:=... 是它支援的參數,用來指定 .world 檔

  • 這會啟動 GUI + server + ROS plugin(/clock, /spawn_entity 等)


🛠️ 進階用法(加參數)

你也可以關掉 GUI,只啟動 server:

bash
ros2 launch gazebo_ros gazebo.launch.py gui:=false \ world:=$(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world

💡 附:你原本那行的問題(for Ignition)

bash
ros2 launch ros_ign_gazebo ign_gazebo.launch.py \ gz_args:="-r $(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world"

這是用來啟動 Ignition Gazebo(Gazebo Sim Fuel / Fortress 版)
它呼叫的是 ign launch 而不是 gzserver,兩套系統 plugin 完全不同。


✅ 總結指令(改用 Gazebo Classic):

bash
ros2 launch gazebo_ros gazebo.launch.py \ world:=$(ros2 pkg prefix my_maze_world)/share/my_maze_world/worlds/maze.world

如要我幫你寫一個 .launch.py 直接載入 world + 車子模型,也可以幫你整合。只要提供你的套件與模型名稱即可。




沒有留言:

張貼留言