Principle:Google deepmind Dm control Arena Definition
| Attribute | Value |
|---|---|
| Principle | Arena Definition |
| Workflow | Composer_Environment_Building |
| Domain | Reinforcement_Learning, Composition |
| Source | dm_control |
| Last Updated | 2026-02-15 00:00 GMT |
Overview
An arena is the top-level spatial container that provides a ground plane, lighting, and global simulation settings into which other entities are placed.
Description
Every physics simulation needs a world: a ground to stand on, lights to illuminate the scene, and global options that govern rendering, gravity, and solver behaviour. The Arena Definition principle factors this responsibility into a dedicated class that serves as the root of the entity hierarchy.
An arena is itself an entity (it subclasses Entity), which means it has its own MJCF model, can define observables, and participates in the same lifecycle callbacks as any other entity. However, it plays a distinguished structural role:
- It is the root entity of the environment -- every other entity is either attached directly to the arena or to something that is attached to the arena.
- It provides a default XML template with a ground plane, ambient and directional lighting, and sensible global compiler and physics options.
- It offers a convenience method for adding free-moving entities -- objects that are placed in the arena with a free joint, allowing full six-degree-of-freedom motion.
By separating the arena from the task and from individual entities, the same arena can be reused across different experiments. For instance, a flat-ground arena works for locomotion, while a table-top arena works for manipulation, and both can host the same robot entity.
Usage
Use the Arena Definition principle when you need to:
- Set up the simulation world: Instantiate the base arena or a custom subclass to establish the ground, lighting, and physics options.
- Place free objects: Call
add_free_entityto drop a prop or robot into the arena with unconstrained motion. - Attach fixed objects: Use the inherited
attachmethod (from Entity) for objects that should be rigidly mounted at a specific location. - Customize the environment: Subclass Arena and override
_buildto supply a custom XML template with different terrain, lighting, or visual properties.
Theoretical Basis
The arena acts as the world frame in the entity composition tree:
Arena (root_entity)
|-- attach(robot) -> rigid attachment at attachment_site
|-- add_free_entity(ball) -> attachment + freejoint (6-DOF)
|-- add_free_entity(box) -> attachment + freejoint (6-DOF)
When add_free_entity is called, two things happen:
- The child entity's MJCF model is attached to the arena's worldbody via
attach, which creates an attachment frame (anmjcf.Frame). - A
freejointelement is added to that frame, granting the child full translational and rotational freedom.
The resulting MJCF tree is later compiled into a single MuJoCo model by mjcf.Physics.from_mjcf_model.
The default arena XML file (arena.xml) bundled with dm_control provides:
- A
groundgeom (plane) for contact. - Directional and ambient lights for rendering.
- Default compiler settings (
angle="radian").