| name | gazebo-world-builder |
| description | Design simulation worlds using SDF with ground planes, models, physics configuration, and lighting |
| domain | authoring |
| version | 1.0.0 |
| created | "2025-11-29T00:00:00.000Z" |
| triggers | ["Creating new Gazebo world files","Adding models from Gazebo Fuel","Configuring physics parameters","Debugging physics instability"] |
| learned_from | ["Module 2 Chapter 10 Building Simulation Worlds (2025-11-29)"] |
Gazebo World Builder Skill
Persona
Think like a simulation environment designer who creates realistic testing grounds for robots. You understand physics engines, lighting, and model placement. You build worlds that are stable, performant, and suitable for the testing scenarios required.
Pre-Flight Questions
Before creating or modifying any SDF world, ask yourself:
1. Environment Purpose
- Q: What is this world testing?
- Impact: Determines obstacles, terrain, lighting needs
- Navigation → obstacles, open spaces
- Manipulation → tables, objects to grasp
- Outdoor → terrain, weather effects
2. Physics Requirements
3. Model Sources
- Q: Are models from Gazebo Fuel or custom?
- Fuel: Use
https://fuel.gazebosim.org/... URIs
- Custom: Define inline or reference local files
Principles
Principle 1: Every World Needs Core Elements
<?xml version="1.0"?>
<sdf version="1.8">
<world name="my_world">
<physics type="dart">
<max_step_size>0.004</max_step_size>
<real_time_factor>1.0</real_time_factor>
</physics>
<light type="directional" name="sun">
<cast_shadows>true</cast_shadows>
<pose>0 0 10 0 0 0</pose>
<diffuse>0.8 0.8 0.8 1</diffuse>
<direction>-0.5 0.1 -0.9</direction>
</light>
<model name="ground_plane">
<static>true</static>
<link name="link">
<collision name="collision">
<geometry><plane><normal>0 0 1</normal></plane></geometry>
</collision>
<visual name="visual">
<geometry><plane><normal>0 0 1</normal><size>100 100</size></plane></geometry>
</visual>
</link>
</model>
</world>
</sdf>
Principle 2: Use Gazebo Fuel for Standard Models
<include>
<uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Table</uri>
<name>table_1</name>
<pose>2 0 0 0 0 0</pose>
</include>
<include>
<uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Cardboard Box</uri>
<name>box_1</name>
<pose>2.5 0.3 0.8 0 0 0</pose>
</include>
Popular Fuel models:
OpenRobotics/models/Table
OpenRobotics/models/Cardboard Box
OpenRobotics/models/Coke Can
OpenRobotics/models/Construction Cone
Principle 3: Configure Physics for Stability
<physics type="dart">
<max_step_size>0.004</max_step_size>
<real_time_factor>1.0</real_time_factor>
<gravity>0 0 -9.81</gravity>
</physics>
For unstable simulations:
- Reduce step size (0.004 → 0.001)
- Increase solver iterations
- Check collision geometry (too complex?)
- Verify inertia values (too small?)
Principle 4: Surface Properties for Realism
<surface>
<friction>
<ode>
<mu>0.8</mu>
<mu2>0.6</mu2>
</ode>
</friction>
<contact>
<ode>
<kp>1e6</kp>
<kd>100</kd>
</ode>
</contact>
</surface>
Typical values:
- Rubber on concrete: mu=0.8-1.0
- Metal on metal: mu=0.3-0.5
- Ice: mu=0.05-0.1
Common Patterns
Indoor Room
<world name="indoor_room">
<model name="wall_north">
<static>true</static>
<pose>0 5 1 0 0 0</pose>
<link name="link">
<collision name="collision">
<geometry><box><size>10 0.2 2</size></box></geometry>
</collision>
<visual name="visual">
<geometry><box><size>10 0.2 2</size></box></geometry>
</visual>
</link>
</model>
<include>
<uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Table</uri>
<pose>2 2 0 0 0 0</pose>
</include>
</world>
Obstacle Course
<world name="obstacle_course">
<include>
<uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone</uri>
<name>cone_1</name>
<pose>3 1 0 0 0 0</pose>
</include>
<include>
<uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone</uri>
<name>cone_2</name>
<pose>5 -2 0 0 0 0</pose>
</include>
<model name="goal">
<static>true</static>
<pose>10 0 0.1 0 0 0</pose>
<link name="link">
<visual name="visual">
<geometry><cylinder><radius>0.5</radius><length>0.2</length></cylinder></geometry>
<material><ambient>0 1 0 1</ambient></material>
</visual>
</link>
</model>
</world>
Checklist
Before finalizing any SDF world:
Integration
This skill is used by:
content-implementer agent when generating Module 2 lessons
- Students learning world building in Chapter 10
- Capstone projects requiring custom environments
Dependencies:
urdf-robot-model - for robots to place in worlds
sensor-simulation - for testing sensors in environments
ros2-gazebo-bridge - for controlling simulations