Skip to content

Environments

StableTested and in active use. Breaking changes will be called out. DeepMind Control, the robot ports and LIBERO are parity-gated against MuJoCo but newer to training — see their pages.

Thirteen families, from a 5×5 grid to dm_control’s dog. Everything except the Gymnasium wrappers is Mojo: the tabular grids, the classic-control dynamics, the 2D and 3D physics, the robot and LIBERO scenes, the arcade engines and the Atari 2600 emulator. That is what lets an environment step inside the same GPU pipeline that trains on its output.

HalfCheetahSAC · physics3d
HumanoidSAC · physics3d
LunarLanderPPO · physics2d
CarRacingRainbow · physics2d
Antphysics3d
Pongnative GPU engine
FamilyEnvironmentsEngineGPU batch
TabularGridWorld · FrozenLake · CliffWalking · Taxigrid—
Classic controlCartPole · MountainCar · Acrobot · PendulumGymnasium-matchingpartial
2D physicsLunarLander · BipedalWalker · CarRacingphysics2dyes
3D locomotionHalfCheetah · Hopper · Walker2d · Ant · Swimmer · Humanoid · pendulaphysics3dyes
3D manipulationReacher · Pusher · Sawyerphysics3dyes
DeepMind Control18 suite domains, 49 tasks · 13 manipulation tasksphysics3d15 domains
RobotsSO-ARM100 · SO-ARM101 · Unitree G1 · Franka Pandaphysics3dyes (G1: NVIDIA only)
LIBERO23 task families on the Pandaphysics3dyes
ArcadePong · Breakout · Space Invadersnative GPUyes
Atari 2600103 ROMs6502 emulationCPU only
Board gamesTic-Tac-Toe · Connect Four · Go · Chess—yes
Procgen & Craftax16 Procgen games · Craftax Classic and fullnativeyes
Gymnasium20+ wrappersPython interop—

The SO-101 and LIBERO scenes are also where the task layer lives: families of scenes with goals, placement rules and resets, rather than one hand-written environment per task.

Dimensions below are read from the source, not from the Gymnasium documentation. Where noeira differs from Gymnasium’s defaults, it is noted.

EnvironmentStatesActionsReward
GridWorld25 (5×5)4−1/step, +10 goal
FrozenLake16 (4×4)4+1 goal (sparse)
CliffWalking48 (4×12)4−1/step, −100 cliff
Taxi5006+20 dropoff, −10 illegal
EnvironmentObsActionsNotes
CartPole42 discreteGPU batch
MountainCar23 discretetile-coding friendly
Acrobot63 discreteRK4 integration
Pendulum31 continuousV1 CPU · V2 GPU batch
EnvironmentObsActionsNotes
LunarLander84 discrete or 2 continuousterrain + flame particles
BipedalWalker244 continuousrevolute joints, 10-ray LIDAR
CarRacing13 clean or pixels3 continuous or 5 discreteslip-based tire model
EnvironmentObsActionsFrame skip
HalfCheetah1765
Hopper1134
Walker2d1764
Ant2785
Swimmer824
Humanoid45175
HumanoidStandup45175
InvertedPendulum412
InvertedDoublePendulum915
Reacher1022
Pusher2375
EnvironmentObsActionsEpisode
dm_control suite (walker, cheetah, humanoid, dog, …)per taskper task1000 steps, reward in [0, 1] per step
dm_control manipulation (Jaco arm and hand, bricks)per task9 actuators250 steps
SO-ARM100 / SO-ARM101 reach276 joint position targets, in [−1, 1] per joint500 steps
Unitree G164 proprioceptive + 463 privileged29 PD targets500 steps at 50 Hz

See DeepMind Control and Robots for the per-task tables.

Two observation modes each: a compact game-state vector (OBS_MODE=0) or a 4×84×84 grayscale frame stack (OBS_MODE=1).

EnvironmentClean obsActions
Pong63
Breakout74
Space Invaders84

A recurring source of confusion, so worth stating plainly: for the physics3d environments the dimensions are on the model, not the config.

comptime OBS_DIM = HumanoidModel.OBS_DIM # 45
comptime ACT_DIM = HumanoidModel.ACTION_DIM # 17

HalfCheetah and Ant additionally expose them on their config (HalfCheetahConfig.OBS_DIM), which is what the older examples use. Both resolve to the same compile-time constant. If one does not exist, try the other.

Learning the framework — GridWorld or CartPole. No GPU, seconds to run, obvious correct behaviour.

Testing a continuous-control algorithm — Pendulum first (3 dimensions, fast), then HalfCheetah (no early termination, so returns are smooth and easy to compare).

Testing exploration — MountainCar or FrozenLake. Both have sparse or deceptive reward that punishes greedy agents.

Stressing the physics engine — Humanoid. 45 observations, 17 actuators, and contact-rich dynamics that expose solver problems immediately.

Comparing against published continuous-control numbers — the DeepMind Control ports, whose returns are bounded by 1000 and comparable across tasks. They are parity-gated against MuJoCo but none has a training result documented yet.

A robot you can own — SO-ARM101, which has a real-hardware path.

Pixel-based agents — the arcade engines in OBS_MODE=1. Native and GPU-batched, so they are far faster than the Atari emulator for training; the emulator exists to validate them.