Implementation:ARISE Initiative Robosuite Door Environment
| 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
- Repository: ARISE_Initiative_Robosuite
- File: robosuite/environments/manipulation/door.py
- Lines: 1-477
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()