Skip to main content

End-to-end simulation and training stack for the SO-101 arm: record demonstrations, clone behavior, and reinforce with GPU-parallel MuJoCo / MuJoCo Warp environments, built on LeRobot

Project description

SO-101 Arm

SO101-Nexus: SO-101 robot learning, from demos to policies

License Python Docs Tests GitHub release

Beta: APIs may change between releases. Feedback and bug reports are welcome.

SO101-Nexus is an end-to-end Python library for taking an SO-101 robot from demonstrations to a trained policy. It combines physical leader-arm teleoperation, LeRobot-compatible dataset recording, Gymnasium/MuJoCo manipulation environments, and training/evaluation hooks in one installable package.

For full documentation, visit so101-nexus.com/docs.

Demo Rollouts

Recorded MuJoCo teleoperation datasets are available on Hugging Face:

Task Dataset Episode viewer
PickLift johnsutor/MuJoCoPickLift episode 0
PickAndPlace johnsutor/MuJoCoPickAndPlace episode 0

Why

There are useful SO-101 tools, but few packages connect teleoperation, LeRobot datasets, environments, and training loops in one workflow, all using simulations. SO101-Nexus is built around the record -> clone -> reinforce path: collect demonstrations, replay and evaluate in matching SO-101 environments, bootstrap with imitation learning, then fine-tune with RL.

MuJoCo is the default backend. An optional MuJoCo Warp backend (so101-nexus[warp]) adds GPU-parallel, batched environments for large-scale RL.

What You Get

  • Teleoperation recorder: drive a simulated follower with a physical SO-100 or SO-101 leader arm.
  • LeRobot dataset output: save demonstrations with SO follower state/action units and wrist/overhead camera fields.
  • Gymnasium environments: run SO-101 MuJoCo tasks for touch, look-at, move, pick-lift, and pick-and-place.
  • Configurable curricula: swap objects, add distractors, randomize colors, tune rewards, and choose observation components.
  • Training and evaluation hooks: start with the PPO baseline, LeRobot processors, and policy adapters for real-policy evaluation.
  • GPU-parallel Warp backend (optional): batched Warp*-v1 vector environments for large-scale RL, installed with so101-nexus[warp].

Installation

pip install so101-nexus

From source

git clone https://github.com/johnsutor/so101-nexus.git
cd so101-nexus
uv sync

Start with the Workflow

Record demonstrations

uvx --from "so101-nexus[teleop]" so101-nexus teleop \
    --leader-port /dev/ttyACM0

See the teleoperation docs for hardware setup, camera fields, environment customization, and Hub upload.

Run an environment

import gymnasium as gym
import so101_nexus.mujoco  # noqa: F401

env = gym.make("MuJoCoPickLift-v1", render_mode="rgb_array")
obs, info = env.reset()

for _ in range(256):
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        obs, info = env.reset()

env.close()

See the environment reference for all task IDs.

Run the GPU-parallel Warp backend

Install the optional extra and create a batched vector environment:

pip install "so101-nexus[warp]"
import gymnasium as gym
import so101_nexus.warp  # noqa: F401

envs = gym.make_vec("WarpTouch-v1", num_envs=4096, device="cuda")
obs, info = envs.reset(seed=0)
obs, reward, terminated, truncated, info = envs.step(envs.action_space.sample())
envs.close()

Train a baseline

SO101-Nexus includes a CleanRL-style PPO baseline for Gymnasium environments. See Training with PPO for the command-line workflow and tuning notes.

Roadmap

  • MuJoCo environments for the SO-101 arm
  • SO-101 tasks: Touch, LookAt, Move, PickLift, PickAndPlace
  • Physical leader-arm teleop recorder for LeRobot datasets
  • MuJoCo Warp backend for GPU-parallel throughput
  • Stronger training baselines and exemplars for every environment
  • Integration with the LeRobot Hub

Development

git clone https://github.com/johnsutor/so101-nexus.git
cd so101-nexus
uv sync

make test       # run all tests
make format     # format code
make lint       # lint code

License

This repository's source code is available under the Apache-2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

so101_nexus-0.4.1.tar.gz (13.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

so101_nexus-0.4.1-py3-none-any.whl (12.9 MB view details)

Uploaded Python 3

File details

Details for the file so101_nexus-0.4.1.tar.gz.

File metadata

  • Download URL: so101_nexus-0.4.1.tar.gz
  • Upload date:
  • Size: 13.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for so101_nexus-0.4.1.tar.gz
Algorithm Hash digest
SHA256 e170bd8ffc693cf39aac436f63815e4fce9b49ef2c4da5e85a86c2e595a43543
MD5 54a8096dc68c0b2dc5235bfada00bfc5
BLAKE2b-256 d8092a8e87373b70d691ec04040dde49b53dd3283e58db853fab40d86e4b33bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.1.tar.gz:

Publisher: publish.yml on johnsutor/so101-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file so101_nexus-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: so101_nexus-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 12.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for so101_nexus-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 411ce746436e1c57724f463d64ef72d120a18488dd4a7adbfe101945fde64bd3
MD5 251ee9bd3087ce79a2d591818482d900
BLAKE2b-256 ce6249c13f5957a8bda3a9b5e20f9206cb7784ed25c3ea9d756abe7a486af209

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.1-py3-none-any.whl:

Publisher: publish.yml on johnsutor/so101-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page