Contributors: Songlin Wei, Zhenhao Ni, Jie Liu, Zhenyu Zhao and more (to appear) ...
SIMPLE stands for SIMulation-based Policy Learning and Evaluation.
It is a simple simulation environment supports:
- multiple agents: (franka arm/aloha bimanual arms/dexmate wheeled robot and unitree g1 humanoid!)
- 1000+ Objaverse assets
- 50+ Habitat HSSD scenes
- 50+ humanoid wholebody loco-manipulation tasks
SIMPLE is built on top of IsaacSim 4.5 and MuJoCo 3.3.
| Component | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 | Ubuntu 22.04 |
| CPU | Intel Core i7 / AMD Ryzen 7 | Intel Core i9 / AMD Ryzen 9 |
| RAM | 32 GB | 64 GB |
| GPU | NVIDIA RTX 2070 (8 GB VRAM) | NVIDIA RTX 3080 Ti / 4090 (16+ GB VRAM) |
| NVIDIA Driver | 535.x | Latest |
| CUDA | 12.x | 12.x |
| Python | 3.10 | 3.10 |
| Storage | 50 GB SSD | 100+ GB NVMe SSD |
An RTX-class NVIDIA GPU is required. GTX and older architectures are not supported.
Clone the project:
git clone git@github.com:physical-superintelligence-lab/SIMPLE.git
Change directory to the project root:
cd SIMPLE
Pull all submodules
git submodule update --init --recursive
We offer three options for setting up SIMPLE:
Install uv if not already done
curl -LsSf https://astral.sh/uv/install.sh | shInstall all dependencies at once
UV_HTTP_TIMEOUT=3000 GIT_LFS_SKIP_SMUDGE=1 uv sync --all-groups --index-strategy unsafe-best-match
Install CuRobo
bash scripts/install_curobo.sh
Activate the environment:
source .venv/bin/activate
Verify the installation by printing the version number
python -c "import simple; print(simple.__version__)"
[Optional] Build the docs.
make live
Open http://127.0.0.1:8000 in a browser to view the documentation.
The document are working in progress. Feel free to raise questions using github issue, we will try to complete the document construction as soon as possible.
We recommend using nix on fresh new linux host, otherwise, if you alread have install NVIDIA driver and CUDA, it will be faster to setup SIMPLE through uv.
Nix is a modern package manager and build system that focuses on reproducibility, isolation, and declarative system configuration.
Instead of installing software directly into your system (like apt or pip), Nix builds everything in isolated environments and stores them in the /nix/store, where each package version is uniquely identified by a hash.
Nix Setup (Recommend on fresh new hosts)
- Install Nix first, for all interactive questions, enter
y:
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon- After Nix installation, open up a new shell to proceed.
If you encounter issues with nix command not found, try
export PATH=/nix/var/nix/profiles/default/bin:$PATH
- Pull git modules recursively
git submodule update --init --recursiveRun the prerequisite check once on a new host:
./scripts/nix/prereq-check.shnix develop auto-bootstraps dependencies on first entry (or when uv.lock / pyproject.toml changes).
Start the dev shell:
nix --extra-experimental-features "nix-command flakes" developOr run a single command inside the dev shell:
env -u LD_LIBRARY_PATH nix --extra-experimental-features "nix-command flakes" develop -c <command>Do not activate the virtual environment directly with source .venv/bin/activate or source .venv-nix/bin/activate.
This repo expects the Nix shell and the Python environment to be used together. The virtual environment alone is not a supported runtime.
If your IDE terminal auto-sources .venv-nix/bin/activate, disable that behavior for this workspace or deactivate before entering through nix develop.
Check if install successfully.
python -c "import simple; print(simple.__version__)"
You should see version number printed.
- If encouter installtion or running issues, please checkout
Troubleshootingsin the Docs
export task=G1WholebodyXMovePickTeleop-v0
hf download USC-PSI-Lab/psi-data simple-eval/$task.zip --local-dir=./data/evals/ --repo-type=dataset
unzip data/evals/simple-eval/$task.zip -d data/evals/simple-evalCLI usage is supported, but it is not the preferred integration surface.
export task=G1WholebodyXMovePickTeleop-v0
export entry=eval_decoupled_wbc
export agent=gr00t_n16_decoupled_wbc
export dr=level-0
env -u LD_LIBRARY_PATH nix --extra-experimental-features 'nix-command flakes' develop -c \
python -m simple.cli.$entry simple/$task $agent $dr \
--data-format lerobot \
--data-dir data/evals/simple-eval/$task/$dr \
--host 127.0.0.1 \
--port 21000 \
--headless TASK_NAME=G1WholebodyXMovePickTeleop-v0 uv run eval-decoupled-wbc simple/G1WholebodyXMovePickTeleop-v0 gr00t_n16_decoupled_wbc train --data-format lerobot --data-dir data/evals/simple-eval/G1WholebodyXMovePickTeleop-v0/level-0 --host 127.0.0.1 --port 21000 --headlessThe Nix runtime is documented in detail in docs/source/nix-runtime.md.
Short version:
- Mutually exclusive with Docker.
- Intended host baseline: Linux with NVIDIA drivers already installed, especially Ubuntu hosts.
- Run
./scripts/nix/prereq-check.shfirst on a new host. - Nix owns userspace; the host only owns the NVIDIA driver boundary.
- The shell fails early on runtime pollution from
LD_LIBRARY_PATH,PYTHONPATH,PYTHONHOME, orLD_PRELOAD. - The default Python environment is
.venv-nix. - Bootstrap entry points are
./scripts/nix/bootstrap-python.sh,./scripts/nix/bootstrap-gpu.sh, and./scripts/nix/bootstrap.sh. - Prefer importing
simpleas a library from inside the dev shell; treat the CLI as a thin convenience layer.
Operational notes:
- Remove a root-owned
.venvleft by older Docker runs withsudo rm -rf .venv. - Use
SIMPLE_AUTO_BOOTSTRAP=0to skip auto-setup, orSIMPLE_FORCE_BOOTSTRAP=1to force re-bootstrap. - If you need to run
nixfrom inside the dev shell, preferenv -u LD_LIBRARY_PATH nix --extra-experimental-features "nix-command flakes" ....
We also support building and running SIMPLE in docker. Please refer to the documents for docker setup.
This is a preliminary benchmark with 6 tasks accompanying the Psi-0 project. Please also checkout Psi-0 for more details of intergrating Psi-0 with SIMPLE.
To rigorously evaluate the robustness and generalization of the learned policies, we design three evaluation levels with progressive out-of-distribution variations applied to the training environment:
The evaluation environments are provided in the huggingface repository USC-PSI-Lab/psi-data.
- Level 0 (Visual & Distractors): Randomizes table materials and the types/initial positions of distractor objects.
- Level 1 (Lighting): Includes Level 0 variations + extreme changes in lighting conditions.
- Level 2 (Spatial pose): Includes Level 1 variations + perturbations to the initial positions of the target objects.
Success rates are reported out of 10 evaluation trials per level (Level 0 | Level 1 | Level 2).
| Baseline / Task | G1Wholebody XMove PickTeleop-v0 |
G1Wholebody BendPickMP-v0 |
G1Wholebody Handover Teleop-v0 |
G1Wholebody Locomotion PickBetweenTables Teleop-v0 |
G1Wholebody Tabletop GraspMP-v0 |
G1Wholebody XMove BendPick Teleop-v0 |
|---|---|---|---|---|---|---|
| Psi0 | 10 | 10 | 6 | 10 | 10 | 10 | 7 | 7 | 10 | 7 | 5 | 6 | 10 | 10 | 8 | 10 | 9 | 9 |
| GR00T N1.6 | 10 | 10 | 7 | 7 | 7 | 6 | 1 | 3 | 3 | 0 | 0 | 0 | 9 | 9 | 7 | 4 | 4 | 1 |
| OpenPi π0.5 | 7 | 5 | 1 | 10 | 10 | 8 | 5 | 4 | 5 | 3 | 3 | 3 | 10 | 10 | 8 | 0 | 0 | 0 |
| InternVLA-M1 | 0 | 0 | 0 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 5 | 7 |
| H-RDT | 0 | 0 | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| DreamZero | - | - | - | - | - | - | - | - | - | - | - | - | 9 | 10 | 10 | - | - | - |
| EgoVLA | 0 | 1 | 2 | 7 | 5 | 8 | 0 | 4 | 3 | 0 | 0 | 0 | 10 | 10 | 7 | 3 | 5 | 4 |
| Diff. Policy | 3 | 3 | 2 | 10 | 8 | 6 | 3 | 2 | 4 | 4 | 0 | 0 | 8 | 9 | 8 | 0 | 0 | 0 |
| ACT | 10 | 10 | 5 | 10 | 9 | 9 | 7 | 7 | 10 | 5 | 5 | 5 | 10 | 10 | 8 | 9 | 10 | 10 |
@misc{wei2026psi0,
title={$\Psi_0$: An Open Foundation Model Towards Universal Humanoid Loco-Manipulation},
author={Songlin Wei and Hongyi Jing and Boqian Li and Zhenyu Zhao and Jiageng Mao and Zhenhao Ni and Sicheng He and Jie Liu and Xiawei Liu and Kaidi Kang and Sheng Zang and Weiduo Yuan and Marco Pavone and Di Huang and Yue Wang},
year={2026},
eprint={2603.12263},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2603.12263},
}
This project is licensed under the MIT.
See the LICENSE file for details.
