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:Haosulab ManiSkill OpenCabinetDrawer

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

Overview

Concrete implementation of the cabinet drawer opening task for the Fetch mobile manipulation robot in ManiSkill.

Description

The OpenCabinetDrawerEnv requires the Fetch mobile robot to navigate toward a target cabinet and open a specific drawer. Cabinets are sourced from the PartNet-Mobility dataset.

Registered as OpenCabinetDrawer-v1 with max_episode_steps=100 and asset_download_ids=["partnet_mobility_cabinet"]. The supported robot is fetch.

Randomizations include: robot initialization 1.6-1.8m from the cabinet facing it, base orientation randomized by -9 to 9 degrees, random cabinet selection from PartNet-Mobility cabinets with drawers, and random drawer selection. Success requires the drawer to be open at least 90% (configurable via min_open_frac=0.75) with small angular/linear velocities.

Reward modes include "sparse" and "none".

Usage

Use this environment for mobile manipulation research involving navigation and articulated object manipulation. It tests the ability of a mobile robot to approach and interact with household furniture.

Code Reference

Source Location

Signature

@register_env(
    "OpenCabinetDrawer-v1",
    asset_download_ids=["partnet_mobility_cabinet"],
    max_episode_steps=100,
)
class OpenCabinetDrawerEnv(BaseEnv):
    SUPPORTED_ROBOTS = ["fetch"]
    agent: Union[Fetch]
    handle_types = ["prismatic"]
    min_open_frac = 0.75

Import

import gymnasium as gym
import mani_skill.envs
env = gym.make("OpenCabinetDrawer-v1")

I/O Contract

Inputs

Name Type Required Description
obs_mode str No Observation mode
reward_mode str No Reward mode: "sparse", "none"
control_mode str No Control mode for Fetch robot

Outputs

Name Type Description
obs dict/array Observation including robot state, cabinet state, handle position
reward float Sparse reward based on drawer open fraction
terminated bool Whether episode ended by success/failure
truncated bool Whether episode hit max steps (100)
info dict Contains success flag, open fraction

Usage Examples

Basic Usage

import gymnasium as gym
import mani_skill.envs

env = gym.make("OpenCabinetDrawer-v1", obs_mode="state", render_mode="rgb_array")
obs, info = env.reset()
for _ in range(100):
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        obs, info = env.reset()
env.close()

Related Pages

Page Connections

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