Skip to content

Gazebo control GUI

Control simulation GUI

Gazebo world sdf contain <gui> section that control the gui layout and gui plugins that loaded, by default it use the defination in gui.config locate in ~/.gz/sim/8 and no need to add the <gui> tag.

name usage
MinimalScene Creates the render scene
GzSceneManager GzSceneManager is the backend that manages the 3D scene
CameraTracking makes the 3D camera automatically follow an entity (model or link) in the scene.
WorldControl
WorldStats
ComponentInspector
EntityTree

Demo: Empty world

  • Minimal world with <gui> section
world
<?xml version="1.0" ?>

<sdf version="1.6">
  <world name="empty">
    <physics name="1ms" type="ignored">
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1.0</real_time_factor>
    </physics>

    <!-- gui -->
        <gui fullscreen="0">

            <!-- 3D scene -->
            <plugin filename="MinimalScene" name="3D View">
                <gz-gui>
                    <title>3D View</title>
                    <property type="bool" key="showTitleBar">false</property>
                    <property type="string" key="state">docked</property>
                </gz-gui>

                <engine>ogre2</engine>
                <scene>scene</scene>
                <ambient_light>1.0 1.0 1.0</ambient_light>
                <background_color>0.8 0.8 0.8</background_color>
                <camera_pose>-6 0 6 0 0.5 0</camera_pose>
            </plugin>

            <!-- Plugins that add functionality to the scene -->
            <!-- <plugin
                filename="EntityContextMenuPlugin" name="Entity context menu">
                <gz-gui>
                    <property key="state" type="string">floating</property>
                    <property key="width" type="double">5</property>
                    <property key="height" type="double">5</property>
                    <property key="showTitleBar" type="bool">false</property>
                </gz-gui>
            </plugin> -->
            <plugin
                filename="GzSceneManager" name="Scene Manager">
                <gz-gui>
                    <property key="resizable" type="bool">false</property>
                    <property key="width" type="double">5</property>
                    <property key="height" type="double">5</property>
                    <property key="state" type="string">floating</property>
                    <property key="showTitleBar" type="bool">false</property>
                </gz-gui>
            </plugin>
            <plugin
                filename="InteractiveViewControl" name="Interactive view control">
                <gz-gui>
                    <property key="resizable" type="bool">false</property>
                    <property key="width" type="double">5</property>
                    <property key="height" type="double">5</property>
                    <property key="state" type="string">floating</property>
                    <property key="showTitleBar" type="bool">false</property>
                </gz-gui>
            </plugin>
            <plugin
                filename="CameraTracking" name="Camera Tracking">
                <gz-gui>
                    <property key="resizable" type="bool">false</property>
                    <property key="width" type="double">5</property>
                    <property key="height" type="double">5</property>
                    <property key="state" type="string">floating</property>
                    <property key="showTitleBar" type="bool">false</property>
                </gz-gui>
            </plugin>

            <!-- World control -->
            <plugin
                filename="WorldControl" name="World control">
                <gz-gui>
                    <title>World control</title>
                    <property type="bool" key="showTitleBar">false</property>
                    <property type="bool" key="resizable">false</property>
                    <property type="double" key="height">72</property>
                    <property type="double" key="z">1</property>

                    <property type="string" key="state">floating</property>
                    <anchors target="3D View">
                        <line own="left" target="left" />
                        <line own="bottom" target="bottom" />
                    </anchors>
                </gz-gui>

                <play_pause>true</play_pause>
                <step>true</step>
                <start_paused>true</start_paused>
                <use_event>true</use_event>

            </plugin>

            <!-- World statistics -->
            <plugin filename="WorldStats"
                name="World stats">
                <gz-gui>
                    <title>World stats</title>
                    <property type="bool" key="showTitleBar">false</property>
                    <property type="bool" key="resizable">false</property>
                    <property type="double" key="height">110</property>
                    <property type="double" key="width">290</property>
                    <property type="double" key="z">1</property>

                    <property type="string" key="state">floating</property>
                    <anchors target="3D View">
                        <line own="right" target="right" />
                        <line own="bottom" target="bottom" />
                    </anchors>
                </gz-gui>

                <sim_time>true</sim_time>
                <real_time>true</real_time>
                <real_time_factor>true</real_time_factor>
                <iterations>true</iterations>
            </plugin>


            <!-- Inspector -->
            <plugin
                filename="ComponentInspector" name="Component inspector">
                <gz-gui>
                    <property type="bool" key="showTitleBar">false</property>
                    <property type="string" key="state">docked</property>
                </gz-gui>
            </plugin>

            <!-- Entity tree -->
            <plugin
                filename="EntityTree" name="Entity tree">
                <gz-gui>
                    <property type="bool" key="showTitleBar">false</property>
                    <property type="string" key="state">docked</property>
                </gz-gui>
            </plugin>

        </gui>

    <plugin
      filename="gz-sim-physics-system"
      name="gz::sim::systems::Physics">
    </plugin>
    <plugin
      filename="gz-sim-user-commands-system"
      name="gz::sim::systems::UserCommands">
    </plugin>
    <plugin
      filename="gz-sim-scene-broadcaster-system"
      name="gz::sim::systems::SceneBroadcaster">
    </plugin>


    <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>
      <specular>0.2 0.2 0.2 1</specular>
      <attenuation>
        <range>1000</range>
        <constant>0.9</constant>
        <linear>0.01</linear>
        <quadratic>0.001</quadratic>
      </attenuation>
      <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>
              <size>100 100</size>
            </plane>
          </geometry>
        </collision>
        <visual name="visual">
          <geometry>
            <plane>
              <normal>0 0 1</normal>
              <size>100 100</size>
            </plane>
          </geometry>
          <material>
            <ambient>0.8 0.8 0.8 1</ambient>
            <diffuse>0.8 0.8 0.8 1</diffuse>
            <specular>0.8 0.8 0.8 1</specular>
          </material>
        </visual>
      </link>
    </model>

  </world>
</sdf>