Environments
ManiSkillPickAndPlaceSO101-v1
Pick and place a cube on a target with the SO-101 arm on the ManiSkill backend.
ManiSkillPickAndPlaceSO101-v1
Pick up a cube and place it on a target disc using the SO-101 robot arm in ManiSkill.
Overview
| Property | Value |
|---|---|
| Environment ID | ManiSkillPickAndPlaceSO101-v1 |
| Backend | ManiSkill |
| Robot | SO-101 |
| Max episode steps | 1024 |
| Config class | PickAndPlaceConfig |
Observation Space
| Component | Description |
|---|---|
tcp_pose | TCP position and orientation |
is_grasped | Whether the cube is currently grasped |
target_pos | Target disc position |
obj_pose | Cube position and orientation |
tcp_to_obj_pos | Vector from TCP to cube position |
obj_to_target_pos | Vector from cube to target position |
Success Condition
The episode succeeds when both conditions are met:
- The cube is placed at the target location (
is_obj_placed). - The robot is static (
is_robot_static).
Registration
This environment is registered through ManiSkill's @register_env decorator rather than the core all_registered_env_ids() list. It is available after importing so101_nexus_maniskill.
Vectorized Simulation
ManiSkill supports running multiple environment instances in parallel via the num_envs argument.
Example
import gymnasium as gym
import so101_nexus_maniskill
from so101_nexus_maniskill.config import PickAndPlaceConfig
# Single environment
env = gym.make(
"ManiSkillPickAndPlaceSO101-v1",
render_mode="human",
config=PickAndPlaceConfig(),
)
obs, info = env.reset()
for _ in range(1024):
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
obs, info = env.reset()
env.close()# Vectorized (multiple parallel environments)
env = gym.make(
"ManiSkillPickAndPlaceSO101-v1",
num_envs=16,
config=PickAndPlaceConfig(),
)