Implementation:Haosulab ManiSkill PickClutterYCB
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Tabletop_Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete implementation of the pick-from-clutter task environment using YCB objects in ManiSkill.
Description
The PickClutterYCBEnv extends PickClutterEnv to use objects from the YCB dataset in cluttered arrangements. The robot must pick up a target object from a cluttered table and move it to a goal position.
Registered as PickClutterYCB-v1 with max_episode_steps=100 and asset_download_ids=["ycb", "pick_clutter_ycb_configs"]. Supported robots are panda and fetch. The reward mode is "none" only.
Clutter configurations are loaded from JSON episode files (default: ycb_train_5k.json.gz). Multiple objects are placed on the table per configuration, and a visible target object is randomly selected. The goal position is randomized in a 3D region above the table.
Usage
Use this environment for cluttered scene manipulation research. It tests the ability to identify and extract a specific object from among multiple objects on a table.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/envs/tasks/tabletop/pick_clutter_ycb.py
Signature
@register_env(
"PickClutterYCB-v1",
asset_download_ids=["ycb", "pick_clutter_ycb_configs"],
max_episode_steps=100,
)
class PickClutterYCBEnv(PickClutterEnv):
DEFAULT_EPISODE_JSON = f"{ASSET_DIR}/tasks/pick_clutter/ycb_train_5k.json.gz"
Import
import gymnasium as gym
import mani_skill.envs
env = gym.make("PickClutterYCB-v1")
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| obs_mode | str | No | Observation mode |
| reward_mode | str | No | Reward mode: "none" |
| control_mode | str | No | Control mode for the robot |
Outputs
| Name | Type | Description |
|---|---|---|
| obs | dict/array | Observation based on obs_mode |
| reward | float | No reward (none mode only) |
| terminated | bool | Whether episode ended |
| truncated | bool | Whether episode hit max steps (100) |
| info | dict | Contains success, fail flags |
Usage Examples
Basic Usage
import gymnasium as gym
import mani_skill.envs
env = gym.make("PickClutterYCB-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()