ROS 現在支援兩套 Gazebo 系列模擬器,它們的關係如下:
| 名稱 | 簡稱 | 傳統名稱 | 開發組織 | 與 ROS 整合 | 備註 |
|---|---|---|---|---|---|
| Gazebo Classic | gazebo | gzserver, gzclient | Open Robotics(舊) | gazebo_ros(ROS 1/2) | 老牌穩定、仍廣用 |
| Gazebo (Ignition) → Gazebo (Sim) | gazebo sim | ign-gazebo, gz-sim | Open Robotics → GazeboDev | ros_gz(新版橋接) | 新一代、支援物理擴充、架構模組化 |
🆚 比較:Gazebo Classic vs Gazebo Sim (Ignition)
| 項目 | Gazebo Classic (v11) | Gazebo Sim / Ignition |
|---|---|---|
| 最新版本 | v11 (最終版) | Gazebo Sim (Garden, Harmonic...) |
| 套件名 | gazebo_ros | ros_gz (以前叫 ros_ign) |
| 程式啟動指令 | gzserver, gzclient | ign gazebo 或 gz sim |
| 核心格式 | .sdf, .world | .sdf, .world(但支援更多 plugin 模組) |
| 支援物理引擎 | ODE 為主 | 支援 ODE、Bullet、DART、Simbody、NVIDIA PhysX |
| 模組架構 | 單體 | 模組化架構(Transport / Rendering / Physics 分離) |
| 渲染支援 | OGRE1.x | OGRE2、Vulkan、WebGL(Gazebo Web) |
| ROS 2 整合性 | 穩定(ROS 2 Humble 內建) | 更先進但需要橋接(如 ros_gz_bridge) |
| 發展狀態 | 已停止開發(安全維護) | 積極開發中,官方推薦使用 |
| 適合對象 | 想穩定使用、有大量舊專案 | 想用新功能、複雜模擬、多機系統 |
⛓️ ROS 2 整合方式比較
| 模擬器 | ROS 套件 | 常見指令 | 啟動 launch |
|---|---|---|---|
| Gazebo Classic | gazebo_ros | ros2 launch <pkg> <file>.launch.pyspawn_entity.py | <launch>.py 啟動 gazebo_ros |
| Gazebo Sim | ros_gz, ros_gz_bridge | ros2 launch ros_gz_sim gazebo.launch.py | 類似,但需設定 bridge / sdf 檔路徑 |
✅ 你該用哪一個?
| 需求 | 建議版本 |
|---|---|
| 用 ROS 教學範例、資源多、穩定 | Gazebo Classic v11(gazebo_ros) |
| 使用物理更真實的車模/雙足/仿真器 | Gazebo Sim (Ignition) |
| 多機、Web 視覺化、NVIDIA GPU 模擬 | Gazebo Sim + PhysX/Omniverse |
| 使用 Jetson / GPU 運算加速 | Gazebo Sim + Vulkan 可行 |
| 教學使用、有時間學新橋接套件 | 可以選 Gazebo Sim |
🚀 開發建議(2025)
-
初學者 / 目前用 ROS 2 Humble / 預設套件:
→ 選 Gazebo Classic v11 + gazebo_ros,因為整合簡單、資源多。 -
中長期維護、新專案、用 ROS 2 Iron / Jazzy 以後:
→ 建議轉往 Gazebo Sim(Garden, Harmonic)+ ros_gz_sim,雖需橋接,但新功能多。
想看實戰比較(可提供):
-
兩種模擬器下
diff_drive機器人的範例 launch 檔 -
ros_gz_bridge的 topic/TF/service 映射範例 -
世界 / plugin 在新舊格式下的差異(例如 camera、imu、LIDAR)
沒有留言:
張貼留言