Worlds & Robot Placement

ARMOR World editor panel showing Gravity (0,0,-9.80665), Ground Plane On, Robot Placement, World Objects count, and MuJoCo Solver

A World in ARMOR is the simulation environment that wraps your robot: it defines gravity, the physics timestep, a ground plane, and any obstacle objects you want to include. Together these settings drive what MuJoCo simulates when you hit Play.

What a World Contains

Element Description
Gravity Magnitude and direction, defaulting to Earth gravity (−9.81 m/s² in Z).
Timestep MuJoCo integration step size. Smaller values increase accuracy at the cost of speed.
Ground plane An optional infinite contact plane — toggleable and fully configurable. See Ground Plane.
Obstacles Box, sphere, cylinder, and mesh objects placed in the scene. See World Objects.
Robot instances One or more robots, each with its own pose and base type. See Multi-Robot Worlds.

Robot Instances & Multi-Robot Worlds

A world can contain one or more robot instances. Each instance has its own initial pose and base type. Free projects support a single robot; ARMOR Premium unlocks placing as many robots as your scene needs.

See Multi-Robot Worlds for full details on adding, duplicating, and removing robot instances.

Robot Base Type

When you place a robot in a world you choose how its base behaves in simulation:

You can change the base type at any time in the World editor.

Initial Pose

The robot’s starting position and orientation are set as a pose (X, Y, Z + Roll, Pitch, Yaw) in the World editor. This is the state the robot returns to when you tap Reset.

You can also choose or adjust the pose during import — ARMOR shows a placement picker when you load a new URDF into an existing world.

World File Format

Worlds are stored in an SDF 1.7–subset XML file alongside your project. Roboticists familiar with Gazebo or Drake will recognise the structure immediately. ARMOR-specific metadata (base type, display preferences, premium settings) lives inside a <plugin name="armor"> block, which standard SDF parsers silently ignore — so the file remains loadable by other SDF-aware tools.

<sdf version="1.7">
  <world name="my_world">
    <gravity>0 0 -9.81</gravity>
    <physics>
      <max_step_size>0.002</max_step_size>
    </physics>
    <!-- Ground plane, obstacles, and robot placement defined here -->
    <plugin name="armor">
      <!-- ARMOR-specific metadata ignored by standard SDF parsers -->
    </plugin>
  </world>
</sdf>

Simulation Fidelity

The same pipeline that powers the in-app MuJoCo simulation also produces the exported MJCF. The world context — ground plane, obstacles, initial pose, and base type — is embedded in the MJCF, so the model behaves identically whether you are running it on-device or loading the exported file into desktop MuJoCo.

Next Steps