【令和最新版】Gazebo（旧Ignition）の現在

# はじめに

2022年 4月からIgnitionの名前がGazeboに変更され、ROS界隈に破壊と混沌をもたらしました。
それに加えてバージョン`Garden`からパッケージ名,API,メッセージ型等全てがign 系の名前からgzに変更されたことにより、さらに混乱する事態になっています。
そこでこれからROS2を始める方や、Gazebo ClassicからGazebo Ignitionに移行しようと考えている方のために現状のGazebo事情を整理することにしました。

以下は名称変更についての公式のアナウンスのリンクとそれを要約したものです。
Ignitionという名前は商標上の理由で使えないためGazeboという名前に戻したようです。
~~GazeboじゃなくてGazebo2とかでよかったのでは??~~

https://community.gazebosim.org/t/a-new-era-for-gazebo/1356

:::note info
- **Open Roboticsのシミュレーションチームによる大きな変更の発表**: "Ignition"という名前を廃止し、元の"Gazebo"ブランドに戻すと発表されました。
- **背景**: 7年前にGazeboの主要なアーキテクチャ変更に取り組む際に"Ignition"という名前が導入されました。これは、以前のGazebo（現在「Gazebo Classic」と呼ばれる）と新しいアプローチを区別するためでした。
- **新システムの成熟と実績**: 新しいシステムは、世界中のユーザーやステークホルダーからの寄与とサポートのおかげで、成熟し、実用化されています（例：DARPA SubTプログラム）。定期的にLTSリリースが提供されています。
- **Gazebo Classicの取り組みの終了**: Gazebo Classicに関する作業は終了し、最後のリリースはGazebo 11（2025年までサポート）でした。
- **商標の障害と名前変更の理由**: "Ignition"という名前の使用に関して商標上の問題が発生したため、この機会に名前を簡素化することにしました。
- **変更内容**:
   - ウェブサイト、GitHubの組織とリポジトリ、名前空間、コマンドラインツール、共有ライブラリ、ディレクトリ、API、ファイルでの"Ignition"または"ign"の名称を"Gazebo"または"gz"に変更。
   - IgnitionロゴをGazeboロゴに置き換え。
   - UIとドキュメントの変更。

:::


過去のIgnitionの状況については以下の記事が参考になります。


https://qiita.com/ryuji_yasu/items/d5eb42254de08afc87ba

https://qiita.com/ryuji_yasu/items/6b0b3d94049a8653ecb8


# Gazebo Classic とGazebo Ignitionの違い

Gazebo ClassicとGazebo Ignitionの大きな違いはROS/ROS2との連携にあると思っています。
Gazebo Classicは、gazebo_ros_pkgsパッケージを通じてROS/ROS 2と連携します。このパッケージは、シミュレーションされた環境からROS/ROS2の世界へセンサーデータを中継するための架け橋として機能します。具体的には、GazeboのプラグインはGazeboのC++ APIとROSのPub/Subを組み合わせて使用され、実質的にROSノードとして動作します。
一方、Gazebo IgnitionはROSとは独立しており、Ignition独自のトピック通信システムを使用します。ROS/ROS2との連携は、ros_gz_bridgeパッケージを介して行われます。このパッケージは、IgnitionのトピックとROS/ROS2のトピックをブリッジする役割を担います。これにより、Gazebo IgnitionでシミュレートされたデータをROS/ROS2ノードで利用できるようになり、ROS/ROS2のアプリケーションと統合することが可能になります。

Gazebo IgnitionはROSとは完全に独立したソフトウェアとなっているため、例えばROS2 Humble用に作成したシミュレーションファイルがROS Noeticでそのまま使用したりできます。



|           | Gazebo Classic       | Gazebo Ignition |
|-------------|---------------------|-------------------------|
| 開始年       | 2002                | 2019   |
| アーキテクチャ | モノリシック         | モジュラー             |
| ROS/ROS2統合      | `gazebo_ros_pkgs`   | `ros_gz_bridge`         |
| 最新リリース | Gazebo 11          | Gazebo Harmonic        |
| バージョンの命名規則 | 0 ~ 11の番号　| ROSと同様にアルファベット順の名前        |
| 物理エンジン  | ODE, Bullet, Simbody, DART | DART, TPE |
| ビジュアライゼーション | OGRE     | OGRE2|
| 対応OS       | Linux, (部分的にMacOSとWindows) | Linux, MacOS, Windows |




### 機能の比較

こちらに機能の比較があります。
Gazebo Classicになかった機能が新たに追加されていたり、Gazebo Classicにあった機能でまだ対応していない機能があったりします。

https://gazebosim.org/docs/citadel/comparison


### 物理エンジン

物理エンジンの違いが気になる方は比較した記事があります。


https://www.allisonthackston.com/articles/ignition-vs-gazebo.html

### Gazeboの歴史

2002年: Gazebo Classicの開発が、カリフォルニア大学南部校で始まる。
2011年: Willow GarageがGazebo Classicの開発をサポート。
2012年: Gazeboの開発がOpen Source Robotics Foundation（現在のOpen Robotics）に移管される。
2019年: Gazebo Ignitionの最初のリリースとして、Ignition Acropolisが発表される。
2020年: Gazebo Classicの最後のリリースであるGazebo 11がリリースされる。
2022年: IgnitionはGazeboに改名される。
2025年: Gazebo Classicのサポートが終了する。

この図を見るとIgnition Gazeboの方が本流で以前のGazeboの機能をGazebo Classicという名前で分岐したように見えます。
Gazebo Classicは2025年にEOLとなり、[今年リリースされるROS 2 Jazzy JaliscoではGazebo Classicのサポートはしないことが発表されており](https://discourse.ros.org/t/gazebo-classic-end-of-life-ros-2-jazzy/36239)、ubuntu24.04LTS以降ではGazebo Classicは実質使えないと思ったほうがいいでしょう。

![timeline.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399606/0e23c953-1b9f-0282-d83c-2d7d64fdfbd0.png)



### 参考

https://gazebosim.org/about

https://www.blackcoffeerobotics.com/blog/migration-from-gazebo-classic-to-ignition-with-ros-2

# ROSディストリビューションとの対応

以下はROS2ディストリビューションとGazeboバージョンの対応表です。
GazeboはROSとは独立したソフトウェアなのに、なぜROSディストリビューションとの対応が存在するかというと
GazeboとROSを連携するパッケージである`ros_gz`との対応のことを示します。

| ROS/Gazebo Version | GZ Citadel (LTS) | GZ Fortress (LTS) | GZ Garden | GZ Harmonic (LTS) |
|--------------------|------------------|-------------------|-----------|-------------------|
| ROS 2 Jazzy (LTS)  | ❌                | ❌                 | ⚡️         | ✅                |
| ROS 2 Rolling      | ❌                | ✅                 | ⚡️         | ⚡️               |
| ROS 2 Iron         | ❌                | ✅                 | ⚡️         | ⚡️               |
| ROS 2 Humble (LTS) | ❌                | ✅                 | ⚡️         | ⚡️               |
| ROS 2 Foxy (LTS)   | ✅                | ❌                 | ❌         | ❌               |
| ROS 1 Noetic (LTS) | ✅                | ❌                 | ❌         | ❌               |

:::note info
✅ - 推奨される組み合わせ
❌ - 互換性がない／不可能
⚡️ - 可能だが注意が必要
:::



以下で推奨バージョンのGazeboが自動的にインストールされます。Humbleの場合はGazebo Fortlessがインストールされます。

```bash
sudo apt-get install ros-${ROS_DISTRO}-ros-gz
```


またROS2インストール時に`sudo apt install ros-humnble-desktop-full`でインストールした場合も推奨バージョンのGazeboがインストールされます。
HumbleでもGardenやHarmonicを使うことができますが、その場合は非公式のDebianパッケージかソースコードからビルドすることでインストールできます。
特に理由がない限りは推奨バージョンのGazeboを使用するのがよいでしょう。


### Gazebo バージョンの確認方法

Gazebo画面左上にメニューをクリック、`About`から現在使用しているGazeboのバージョンを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399606/bec1cd07-50cd-5637-3fac-598e16dc7f8a.png)


### 参考

Installing Gazebo with ROS

https://gazebosim.org/docs/latest/ros_installation


# おわりに

最後に以下は今後Gazebo（旧Ignition）を使う上での自分の意見です。

- 今からGazebo ClassicからGazebo Ignitionに移行しようと考えている方はROS 2 Jazzy + Gazebo Harmonicからにした方がいい

ROS2 Humble + Gazebo Fortlessではign系のパッケージとgz系の同じ機能のパッケージが混在していて両方使えてしまうので、混乱を避けるため移行のタイミングはROS 2 Jazzyが出てからの方がいいのではないかと思います。
 メッセージ型もign → gzに変わっているのでFortlessでlaunchファイル等作ってもHarmonic移行時に書き直す必要があります。  


- ネットの記事などはあてにせず必ず公式のドキュメントを見る

この記事も半年後には情報が古くなるのでネットの記事やChatGPTの返答などはあてにせず、必ず最新のドキュメントを見に行くようにしましょう。


- Gazeboの呼び方について組織内で呼び方を決めておく

公の場ではまだGazebo ClassicとGazebo Ignitionと呼び分けるのがいいと思いますが、コミュニケーションコストを下げるため呼び方については組織内で統一した方がいいでしょう。（例：社内でGazebo Ignitionしか使わない場合はGazeboと呼ぶなど）

# Gazebo各サイトのリンク


- 公式サイト


https://gazebosim.org/home


- ドキュメント

右上のReleaseから各バージョンのドキュメントを選んで見る。

https://gazebosim.org/docs

- コミュニティ

Gazeboについて質問等あればここに投稿する。

https://community.gazebosim.org/

- Gazebo Fuelのリンク

このサイトにいろいろなモデルやワールドが公開されていて自由に使うことができます。

https://app.gazebosim.org/dashboard



- ros_gzのリポジトリ

https://github.com/gazebosim/ros_gz/tree/ros2

- Gazebo API Reference

ドキュメントのLibrary Referenceから各APIのリファレンスに飛ぶ。

https://gazebosim.org/api/sensors/8/


# 参考記事

以下Qiita, ZennにあったGazebo Igniton関連のすべての記事のリンクを貼りました。

https://qiita.com/ryuji_yasu/items/d5eb42254de08afc87ba

https://qiita.com/ryuji_yasu/items/6b0b3d94049a8653ecb8

https://qiita.com/porizou1/items/2f2f82427c5220e95369


https://qiita.com/srs/items/49b8512e29bdef0ebcd6

https://qiita.com/srs/items/2675e9dcbb942c979c3c

https://qiita.com/srs/items/c1f58886af795bce1357

https://qiita.com/hijimasa/items/12f4fb22ecdf0595ef85






https://qiita.com/N622/items/6ca879f8b1f9d667e561

https://qiita.com/N622/items/c875035b387105ae4d95

https://qiita.com/N622/items/f1c5dffa37e095116119

https://qiita.com/N622/items/f1c5dffa37e095116119

https://qiita.com/N622/items/9d89f77d85d9da0af29e