LeRobot Releases SO-101 Tabletop MuJoCo Environment
lerobot/so101-tabletop-mujoco
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.
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.
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 (commit0059d4335f8156206f63a35662313385f7ad6d74), 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 S3observation 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 S3joint 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 S3gripper 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 S3control 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 S3episode 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 S4number 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
