Skip to content
LeRobot — Model repository updates· lerobot·· 13 days agoSignalEditorial score85

LeRobot Releases SO-101 Tabletop MuJoCo Environment

lerobot/so101-tabletop-mujoco

Summary

LeRobot has released an open-source MuJoCo simulation environment for the SO-101 robotic arm, enabling tabletop manipulation tasks like placing cubes into a box. The environment includes front and wrist camera observations, joint position controls, and is compatible with both MuJoCo and Isaac Sim. It is available under an Apache-2.0 license.

Editorial context

The release introduces a MuJoCo simulation environment for the SO-101 robotic arm, designed for tabletop manipulation tasks such as placing cubes into a box. The environment supports both MuJoCo and Isaac Sim, with detailed observation and action specifications, and is available under an Apache-2.0 license.

Source: LeRobot — Model repository updates · Read original article ↗

Article text · Original source · English

On this page

SO-101 tabletop (MuJoCo)

A LeRobot EnvHub environment: an SO-101 arm in the turquoise of the LeRobot kits, four painted wooden 3 cm cubes (red, green, blue, yellow) and a green open box on a table in a simple room, simulated with MuJoCo. Each reset places the cubes, the box and the front camera with seeded offsets.

Front and wrist cameras

An Isaac Sim version with the same layout, cameras, observations and actions is lerobot/so101-tabletop-isaac: the same policies and commands run against both.

Observation pixels: front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos: 6 joint positions
Action 6 absolute joint position targets: shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True)
Control rate 30 fps
Task "Put all the cubes in the green box."
Reward the fraction of cubes in the box at each step (0, 0.25, ... 1); info["cubes_in_box"] gives the count
Episode end success (terminated) when all four cubes are in the box; truncated after 3600 steps (2 minutes), set with episode_length
Reset seeded cube and box poses, front camera jitter, joint noise

With the LeRobot simulator server

From a LeRobot checkout, start the server. The image installs requirements.txt, and env.py declares the control rate and joint names in LEROBOT_SIM:

uv run scripts/run_sim.py --envhub lerobot/so101-tabletop-mujoco

Then run a policy against it, for example:

lerobot-rollout --robot.type=remote --robot.endpoint=tcp/127.0.0.1:7448 \
  --robot.deployment=envhub --robot.task=so101_tabletop \
  --policy.path=<your SO-101 checkpoint> --fps=30

Observations reach policies as observation.images.front, observation.images.wrist and observation.state; use --rename_map if your checkpoint names its cameras differently.

In-process

from lerobot.envs.factory import make_env

envs = make_env("lerobot/so101-tabletop-mujoco", n_envs=1, trust_remote_code=True)

make_env keyword arguments override the defaults of SO101Env in env.py (episode length, image size, cameras, initial joints, reset randomization). Headless machines need MUJOCO_GL=egl.

Files

File Content
env.py the EnvHub entry point (make_env), the Gymnasium env and LEROBOT_SIM
so101_tabletop.xml the scene: room, table, cubes, box, lights, front camera and the arm's mount site
robotstudio_so101/ MuJoCo Menagerie's SO-101 model, attached at the mount site (env.py recolors its printed parts)
textures/wood.png a seamless wood grain, tinted per cube

Licenses

  • This environment is Apache-2.0, including textures/wood.png (generated procedurally for it).
  • robotstudio_so101/ is MuJoCo Menagerie's SO-101 model (commit 0059d4335f8156206f63a35662313385f7ad6d74), derived from TheRobotStudio's SO-ARM100, under the Apache-2.0 license in that folder.

What the source reports

Publisher-reported claims, with original evidence. These results have not been independently verified by RoboSignal.

Environment
SimulationOpen source S2

Reported numbers

  • observation pixels

    480

    View original evidence
    isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the
    Open source S3
  • observation pixels

    640

    View original evidence
    isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the
    Open source S3
  • joint positions

    6

    View original evidence
    isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the
    Open source S3
  • gripper position

    0–100

    View original evidence
    isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the
    Open source S3
  • control rate

    30

    View original evidence
    isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the
    Open source S3
  • episode length

    3,600

    View original evidence
    green box." Reward the fraction of cubes in the box at each step (0, 0.25, ... 1); info["cubes_in_box"] gives the count Episode end success (terminated) when all four cubes are in the box; truncated after 3600 steps (2 minutes), set with episode_length Reset seeded cube and box poses, front camera jitter, joint noise With the LeRobot simulator server From a LeRobot checkout, start the server. The image installs requi
    Open source S4
  • number of cubes

    4

    View original evidence
    green box." Reward the fraction of cubes in the box at each step (0, 0.25, ... 1); info["cubes_in_box"] gives the count Episode end success (terminated) when all four cubes are in the box; truncated after 3600 steps (2 minutes), set with episode_length Reset seeded cube and box poses, front camera jitter, joint noise With the LeRobot simulator server From a LeRobot checkout, start the server. The image installs requi
    Open source S4
  • code: not_reported
  • weights: not_reported
  • dataset: not_reported
  • paper: not_reported
Source excerpts and review record

Automatically extracted; no manual editorial approval recorded.

SO-101 tabletop (MuJoCo) A LeRobot EnvHub environment: an SO-101 arm in the turquoise of the LeRobot kits, four painted wooden 3 cm cubes (red, green, blue, yellow) and a green open box on a table in a simple room, simulated with MuJoCo. Each reset places the cubes, the box and the front camera with seeded offsets. An Isaac Sim version with the same layout, cameras, observations and actions is lerobot/so101-tabletop-

Open source S2

isaac : the same policies and commands run against both. Observation pixels : front (scene camera) and wrist (gripper camera), 480×640 RGB; agent_pos : 6 joint positions Action 6 absolute joint position targets: shoulder_pan , shoulder_lift , elbow_flex , wrist_flex , wrist_roll in degrees, gripper 0-100 (the units of LeRobot's so101_follower with use_degrees=True ) Control rate 30 fps Task "Put all the cubes in the

Open source S3

green box." Reward the fraction of cubes in the box at each step (0, 0.25, ... 1); info["cubes_in_box"] gives the count Episode end success (terminated) when all four cubes are in the box; truncated after 3600 steps (2 minutes), set with episode_length Reset seeded cube and box poses, front camera jitter, joint noise With the LeRobot simulator server From a LeRobot checkout, start the server. The image installs requi

Open source S4

Source:LeRobot — Model repository updates · huggingface.co

Timezone · UTC

Article dates follow your selected timezone. Briefing editions use Hong Kong time (UTC+8).