Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:ARISE Initiative Robosuite Door Environment

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, Manipulation
Last Updated 2026-02-15 07:00 GMT

Overview

Concrete tool for simulating a door opening manipulation task provided by robosuite.

Description

The Door class implements a single-arm robot door opening task in the robosuite simulation framework. The environment places a door with a handle on a table workspace and challenges a robot arm to open the door by rotating the hinge past a defined angular threshold. The door can optionally be configured with a spring-loaded latch mechanism that "locks" the door closed, requiring the robot to first rotate the handle before pulling the door open.

The reward function supports both sparse and dense (shaped) modes. In sparse mode, a discrete reward of 1.0 is provided when the door is successfully opened (hinge angle exceeds 0.3 radians). In dense mode, the reward is composed of a reaching component (proportional to the distance between the gripper and the door handle, in [0, 0.25]) and, when the latch is enabled, a rotating component (proportional to the angle the handle has been rotated, in [0, 0.25]). A successfully opened door always yields a reward of 1.0 regardless of reward mode. The final reward is normalized and scaled by the configurable reward_scale parameter.

The environment provides object-based observations including door position, handle position, hinge joint position, and optionally handle joint position (when using the latch). It also computes the distance from each robot end-effector to the door and handle for use in observation vectors. The success criterion is simply that the door hinge angle exceeds 0.3 radians.

Usage

Use this environment for benchmarking and training single-arm manipulation policies on articulated object interaction tasks. The door environment is suitable for evaluating reaching, grasping, and coordinated pulling behaviors. The latch variant adds complexity, making it appropriate for testing multi-step manipulation strategies.

Code Reference

Source Location

Signature

class Door(ManipulationEnv):
    def __init__(
        self,
        robots,
        env_configuration="default",
        controller_configs=None,
        gripper_types="default",
        base_types="default",
        initialization_noise="default",
        use_latch=True,
        use_camera_obs=True,
        use_object_obs=True,
        reward_scale=1.0,
        reward_shaping=False,
        placement_initializer=None,
        has_renderer=False,
        has_offscreen_renderer=True,
        render_camera="frontview",
        render_collision_mesh=False,
        render_visual_mesh=True,
        render_gpu_device_id=-1,
        control_freq=20,
        lite_physics=True,
        horizon=1000,
        ignore_done=False,
        hard_reset=True,
        camera_names="agentview",
        camera_heights=256,
        camera_widths=256,
        camera_depths=False,
        camera_segmentations=None,
        renderer="mjviewer",
        renderer_config=None,
        seed=None,
    ):

Import

from robosuite.environments.manipulation.door import Door

I/O Contract

Inputs

Name Type Required Description
robots str or list of str Yes Specification for a single single-arm robot (e.g., "Sawyer", "Panda")
use_latch bool No If True, uses a spring-loaded handle and latch to lock the door. Default: True
use_object_obs bool No If True, includes object state information in observations. Default: True
reward_scale None or float No Scales the normalized reward. Default: 1.0
reward_shaping bool No If True, uses dense reward shaping. Default: False
placement_initializer ObjectPositionSampler No Custom placement sampler for the door object. Default: UniformRandomSampler
control_freq float No Control signals per second. Default: 20
horizon int No Episode length in timesteps. Default: 1000

Outputs

Name Type Description
door_pos np.array (3,) 3D position of the door body
handle_pos np.array (3,) 3D position of the door handle
hinge_qpos np.array (1,) Angular position of the door hinge joint
handle_qpos np.array (1,) Angular position of the handle joint (only when use_latch=True)
door_to_{arm}eef_pos np.array (3,) Vector from each arm's end-effector to the door
handle_to_{arm}eef_pos np.array (3,) Vector from each arm's end-effector to the handle
reward float Scalar reward value per step

Usage Examples

import robosuite as suite
import numpy as np

# Create a Door environment with a Panda robot
env = suite.make(
    env_name="Door",
    robots="Panda",
    has_renderer=False,
    has_offscreen_renderer=False,
    use_camera_obs=False,
    use_object_obs=True,
    use_latch=True,
    reward_shaping=True,
    horizon=500,
)

# Reset the environment
obs = env.reset()

# Run a simple control loop
for i in range(500):
    action = np.random.randn(env.action_dim)
    obs, reward, done, info = env.step(action)
    if done:
        break

env.close()

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment