SO101-Nexus
Concepts

Initial Poses

How to configure the robot's starting configuration for each episode.

Initial Poses

By default, the robot starts each episode in a fixed rest pose with small noise. The pose system lets you configure more diverse starting configurations — useful for training policies that generalize across different initial arm positions.

How Poses Work

A Pose defines 6 joint angles — one per joint. Each joint can be:

  • Fixed (float): the same angle every episode (e.g., shoulder_lift_deg=-90.0)
  • Free (tuple[float, float]): sampled uniformly from a range each episode (e.g., shoulder_pan_deg=(-110.0, 110.0))

This lets you keep some joints in known-good configurations while varying others for diversity.

Built-in Poses

NameDescriptionFree joints
restArm curled up (default rest configuration)shoulder_pan, wrist_roll, gripper
extendedArm stretched forwardshoulder_pan, wrist_roll, gripper

Using Poses

Set a pose in config

from so101_nexus_core import RobotConfig, PickConfig

# Use a built-in pose by name
robot = RobotConfig(init_pose="rest")
config = PickConfig(robot=robot)

Create a custom pose

from so101_nexus_core import Pose, RobotConfig, PickConfig

my_pose = Pose(
    name="looking_left",
    shoulder_pan_deg=90.0,          # fixed: rotated left
    shoulder_lift_deg=-90.0,        # fixed
    elbow_flex_deg=90.0,            # fixed
    wrist_flex_deg=37.8,            # fixed
    wrist_roll_deg=(-157.0, 163.0), # free: full range
    gripper_deg=(-10.0, 100.0),     # free: full range
)

robot = RobotConfig(init_pose=my_pose)
config = PickConfig(robot=robot)

Default behavior (no pose)

When init_pose is None (the default), the robot uses the legacy behavior: rest_qpos_deg plus Gaussian noise scaled by robot_init_qpos_noise. This is fully backward compatible.

Joint Reference

JointIndexDescriptionRange
shoulder_pan0Base rotation-110 to 110
shoulder_lift1Shoulder elevation-100 to 100
elbow_flex2Elbow bend-97 to 97
wrist_flex3Wrist pitch-95 to 95
wrist_roll4Wrist rotation-157 to 163
gripper5Gripper open/close-10 to 100

All angles are in degrees.

On this page