SO101-Nexus
Environments

ManiSkillReachSO101-v1

Move the TCP to a target position with the SO-101 arm on the ManiSkill backend.

ManiSkillReachSO101-v1

Move the robot's end-effector (TCP) to a randomly sampled target position using the SO-101 robot arm in ManiSkill.

Overview

PropertyValue
Environment IDManiSkillReachSO101-v1
BackendManiSkill
RobotSO-101
Max episode steps512
Config classReachConfig

Observation Space

Default observation includes only joint positions (configurable via observations parameter):

ComponentClassDimensionsDescription
Joint positionsJointPositions6Current angle of each robot joint

Objects

No graspable objects. The target is a visual-only sphere rendered in the scene.

Success Condition

The episode succeeds when the distance from the TCP to the target is less than success_threshold (default 0.02 m).

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_core.config import ReachConfig
from so101_nexus_core.observations import JointPositions, TargetOffset

# Default (joint positions only)
env = gym.make("ManiSkillReachSO101-v1", obs_mode="state", num_envs=1)

# With custom observations
config = ReachConfig(observations=[JointPositions(), TargetOffset()])
env = gym.make("ManiSkillReachSO101-v1", config=config, obs_mode="state", num_envs=1)

On this page