robosuite

raw JSON →
1.5.2 verified Mon Apr 27 auth: no python

robosuite is a modular simulation framework and benchmark for robot learning powered by MuJoCo physics. Version 1.5.2 (released 2025) adds diverse robot embodiments including humanoids, composite controllers, and photorealistic rendering. The API has undergone major breaking changes at v1.4 (new MuJoCo bindings) and v1.5 (controller restructuring).

pip install robosuite
error ModuleNotFoundError: No module named 'mujoco'
cause Missing new MuJoCo bindings (v1.4+ requirement).
fix
pip install mujoco
error AttributeError: module 'robosuite' has no attribute 'make'
cause Trying to import `make` directly instead of using `robosuite.make()`.
fix
import robosuite as suite; env = suite.make(...)
breaking v1.4 switched from old mujoco-py bindings to DeepMind's mujoco (pip install mujoco). Old environments are incompatible without migration.
fix Reinstall with `pip install robosuite` which now depends on `mujoco>=2.3.0`. Remove any old mujoco-py installation.
breaking v1.5 changed controller configuration. `load_controller_config` moved to `robosuite.controllers`. `OSC_POSE` replaces old OSC controller.
fix Use `from robosuite.controllers import load_controller_config` and specify `default_controller='OSC_POSE'`.
gotcha `env.reset()` returns only observations (no info dict) in most environments. Many users expect a tuple `(obs, info)`.
fix Check documentation: `obs = env.reset()`. Info is only available in some wrappers.
gotcha Rendering requires `has_renderer=True` and a `viewer` installation. On headless systems use `has_offscreen_renderer=True` with `render_camera`.
fix Set `has_renderer=False, has_offscreen_renderer=True` and collect images via `obs['agentview_image']`.

Minimal example creating a Lift environment with a Panda robot and OSC_POSE controller. No rendering.

import robosuite as suite
from robosuite.controllers import load_controller_config

config = load_controller_config(default_controller='OSC_POSE')
env = suite.make(
    'Lift',
    robots='Panda',
    controller_configs=config,
    has_renderer=False,
    has_offscreen_renderer=False,
    use_camera_obs=False,
)
env.reset()
for i in range(10):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)
    if done:
        break
env.close()