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.2.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.2-py3-none-any.whl (12.9 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: so101_nexus-0.4.2.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.2.tar.gz
Algorithm Hash digest
SHA256 0493c276d74391bc26bea73c05b37a7fe905cbcbc9aee9b10c252260ed8b6b75
MD5 79782d6c0d5a39bb929e4bcff55e47aa
BLAKE2b-256 1631d1737ea5207c7f15e7f74c93caa291cfbe49ec7d50497c6862b6e7fa691d

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: so101_nexus-0.4.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e14e738a8defcd6c4e607c69c88691400f7109825ab0493c719c55448d249fe3
MD5 2d8d832ebd8eb30ddddec1d0d112e507
BLAKE2b-256 2e7e02941439e6a355b40a97c47d29f2729bc6aee28c51f9010b7cc23e7a59bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for so101_nexus-0.4.2-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