🏁 はじめに

ROS2でTurtlebot3を使って自律走行まで行いました。
そろそろチュートリアルを卒業して、自分デザインのロボットに挑戦してみたいと思います。

まずはその第一歩。
Gazebo上に「四角形」を出してみる! というところから始めます。




もちろん今回も――
ChatGPTさん頼みですがね。😆

⚙️ Gazeboのバージョン問題発生!

作業を進めていくと、画面構成やメニューが違うというトラブルが発生しました。
どうやら「Gazebo Sim(Ignition版)」と「Gazebo Classic」では、UI構成がかなり違うようです。

ですが、落ち着いて一つずつ設定していけば大丈夫でした!

🧩 1. ROS2ワークスペースの準備

まずは作業ディレクトリを確認します。

ros2_ws/ ← ROS 2ワークスペース
└── src/
    └─ my_robot_description/ ← 自作パッケージ
        ├── package.xml
        ├── CMakeLists.txt
        ├── urdf/ ← URDFやSDFを置く場所
        │ └── my_robot.sdf
        ├── meshes/ ← STLやDAEモデル
        └── launch/
            └── display.launch.py

📦 2. 自作パッケージを作成

my_robot_description フォルダが無い場合は、以下を実行して作成します。

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake my_robot_description

📄 3. SDFモデルを作る

続いて、my_robot_description/urdf/my_robot.sdf を新規作成します。
以下をコピペすればOKです👇

<sdf version="1.7">
  <model name="my_robot">
    <static>false</static>

    <link name="base_link">
      <pose>0 0 0.1 0 0 0</pose>

      <visual name="visual">
        <geometry>
          <box><size>0.3 0.3 0.1</size></box>
        </geometry>
        <material>
          <ambient>0.3 0.3 1.0 1</ambient>
        </material>
      </visual>

      <collision name="collision">
        <geometry>
          <box><size>0.3 0.3 0.1</size></box>
        </geometry>
      </collision>
    </link>
  </model>
</sdf>

🧾 4. package.xmlとCMakeLists.txtの確認

ビルド対象がないのでCMakeLists.txtはそのままでOK。

📄 package.xml(Gazeboとの連携に以下を追加)

<exec_depend>gazebo_ros</exec_depend>

🔧 5. 環境設定と永続化

ターミナルで以下を入力します。

export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:~/ros2_ws/src/my_robot_description/urdf
source ~/.bashrc

ここまでで準備完了です!

💥 6. 画面が違う!? バージョン問題の罠


GAZEBOのメニュー構成が、参考記事と違う…?
そう感じたら、ほぼ確実に「Gazebo Classic」ではなく「Gazebo Sim(Ignition版)」を使っています。

特別な設定は不要。
以下のコマンドを使えば表示できます👇

gz sim -v4 my_robot.sdf

🎉 ついに出た!四角形ロボット!

ついに、GAZEBO上に青い四角形のロボットが出現しました。
シンプルですが、これが「自作ロボットの第一歩」です。

ここまでくると、
「自分でデザインしたロボットを動かしたい!」という気持ちが湧いてきますね。

🪄 まとめ

今回やったこと:

・自作パッケージを作成
・SDFモデルを追加
・Gazebo上に表示成功!

ポイントは、Gazebo Simではコマンド構文が異なるということ。

gz sim -v4 my_robot.sdf

この一文を覚えておくだけで、今後のトラブルがぐっと減ります。

🧠 今回の学び

ROS2ではGazeboが「Ignition Gazebo」へ移行しており、
コマンド体系やメニュー構成が違うことに注意。

でも大丈夫。
ChatGPTさんに聞きながら一歩ずつ進めば、必ず形になります✨

🚀 次回予告

次は、このロボットを実際に動かしてみる予定です!
お楽しみに!