🏁 はじめに
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さんに聞きながら一歩ずつ進めば、必ず形になります✨
🚀 次回予告
次は、このロボットを実際に動かしてみる予定です!
お楽しみに!
