REALM: A Real-to-Sim Validated Benchmark for Generalization in Robotic Manipulation

March 29, 2026 ยท View on GitHub

Project Page arXiv Documentation Issues Discussions

REALM is a large-scale realistic simulation environment and benchmark for generalization in robotic manipulation. It supports 7 distinct manipulation skills and stress-tests them against 15 perturbations. Through empirical validation, we show that evaluation results in simulation are strongly correlated to real-world performance.

Installation ๐Ÿ› ๏ธ

  1. Clone the project repository:
git clone https://github.com/martin-sedlacek/REALM.git
cd REALM
  1. Run the setup script:
# [RECOMMENDED] Docker:
./setup.sh --docker --dataset

# w/ custom dataset path:
./setup.sh --docker --dataset --data-path /path/to/dataset

# Apptainer (HPC clusters, less stable):
./setup.sh --apptainer --dataset

โ— Please note that running with apptainer is currently not stable. We noticed that the apptainer can crash inexplicably on some systems. It is recommended to use the stable Docker container if possible.

Quick Start (Pi0.5 evaluation)

  1. Start a model server (e.g., openpi):
git clone https://github.com/Physical-Intelligence/openpi.git
cd openpi
uv sync
XLA_PYTHON_CLIENT_MEM_FRACTION=0.5 uv run scripts/serve_policy.py policy:checkpoint \
    --policy.config=pi05_full_droid_finetune \
    --policy.dir=gs://openpi-assets/checkpoints/pi05_droid_jointpos
  1. Open the containerized environment:
cd $REALM_ROOT
source ./scripts/run_docker.sh
  1. Run an evaluation inside the container:
OMNIGIBSON_HEADLESS=1 python /app/examples/01_pi0_eval.py
  1. View results in the REALM viewer:
# !!! Set this to point to your local REALM logs folder:
export REALM_LOGS=</path/to/REALM/logs> # e.g., /home/my_user/projects/REALM/logs

git clone https://github.com/martin-sedlacek/REALM_toolkit.git
cd REALM_toolkit
uv sync
uv run streamlit run realm_viewer/dashboard.py

This will open a web UI where you can view results from the experiments. Navigate to the experiment created from step 3 and scroll to the bottom. Click on the "unpack video parquet" and view the video of your simulated rollout.

Full benchmark evaluation:

# Example:
examples/02_evaluate.py \
    --perturbation_id <0-15> \
    --task_id <0-9> \
    --repeats 25 \
    --max_steps 800 \
    --model_name pi05 \
    --model_type openpi \
    --port 8000 \
    --experiment_name my_full_eval

Resume Functionality

If a run is interrupted, resume from where it left off by providing the --resume flag and the --run_id of the previous run (the timestamp folder in your logs directory):

OMNIGIBSON_HEADLESS=1 python /app/examples/02_evaluate.py \
    ... (same args as original) ... \
    --run_id 20240101_120000 --resume

Completed repeats are skipped. Ensure all arguments match the original run.

Tasks and Perturbations

PERTURBATION_IDPerturbationDescriptionCategory
0DefaultTesting a skill under no specific perturbations.General
1V-AUGRandomize blur and contrast.Visual
2V-VIEWRandom shifts to external camera pose.Visual
3V-SCRandomly spawn new distractors in the scene.Visual
4V-LIGHTRandomize illumination color and intensity.Visual
5S-PROPReference objects based on their properties.Semantic
6S-LANGReference similar verbs and remove articles.Semantic
7S-MOReference spatial relationships in the scene.Semantic
8S-AFFReference human needs and use cases.Semantic
9S-INTReference facts about the world that typically require knowledge from Internet-scale text data.Semantic
10B-HOBJRandomize manipulated object mass.Behavioral
11SB-NOUNReference another known object in the scene.Semantic + Behavioral
12SB-VRBChange the tested skill for another compatible one.Semantic + Behavioral
13VB-POSERandomize manipulated object pose.Visual + Behavioral
14VB-MOBJRandomize object size and shape.Visual + Behavioral
15VSB-NOBJSample a new unseen manipulated object.Visual + Semantic + Behavioral
TASK_IDTask
0put_green_block_in_bowl
1put_banana_into_box
2rotate_marker
3rotate_mug
4pick_spoon
5pick_water_bottle
6stack_cubes
7push_switch
8open_drawer
9close_drawer

In our paper, we evaluated three models on each of the 10 tasks, under all 16 perturbation settings with a sample size of 25 rollouts at 800 time-steps. Each number in the table below is then obtained by averaging the results over these 10 tasks per perturbation.

Tabular results for the tested VLA models:

Perturbationฯ€0\pi_0ฯ€0\pi_0-FASTGR00T N1.5
Default0.440.610.19
V-AUG0.42 (-0.02 โ†“\downarrow)0.64 (+0.03 โ†‘\uparrow)0.19 (-0.00 -)
V-VIEW0.52 (+0.08 โ†‘\uparrow)0.70 (+0.09 โ†‘\uparrow)0.19 (-0.00 -)
V-SC0.43 (-0.01 โ†“\downarrow)0.60 (-0.02 โ†“\downarrow)0.21 (+0.02 โ†‘\uparrow)
V-LIGHT0.37 (-0.07 โ†“\downarrow)0.54 (-0.07 โ†“\downarrow)0.16 (-0.03 โ†“\downarrow)
S-PROP0.29 (-0.15 โ†“\downarrow)0.53 (-0.08 โ†“\downarrow)0.21 (+0.02 โ†‘\uparrow)
S-LANG0.36 (-0.08 โ†“\downarrow)0.61 (-0.01 โ†“\downarrow)0.21 (+0.02 โ†‘\uparrow)
S-MO0.35 (-0.09 โ†“\downarrow)0.55 (-0.06 โ†“\downarrow)0.20 (+0.01 โ†‘\uparrow)
S-AFF0.30 (-0.14 โ†“\downarrow)0.55 (-0.06 โ†“\downarrow)0.21 (+0.01 โ†‘\uparrow)
S-INT0.29 (-0.15 โ†“\downarrow)0.54 (-0.07 โ†“\downarrow)0.20 (+0.01 โ†‘\uparrow)
B-HOBJ0.32 (-0.12 โ†“\downarrow)0.38 (-0.23 โ†“\downarrow)0.16 (-0.03 โ†“\downarrow)
SB-NOUN0.28 (-0.16 โ†“\downarrow)0.39 (-0.22 โ†“\downarrow)0.17 (-0.02 โ†“\downarrow)
SB-VRB0.36 (-0.08 โ†“\downarrow)0.57 (-0.04 โ†“\downarrow)0.21 (+0.02 โ†‘\uparrow)
VB-POSE0.32 (-0.12 โ†“\downarrow)0.49 (-0.12 โ†“\downarrow)0.07 (-0.12 โ†“\downarrow)
VB-MOBJ0.38 (-0.06 โ†“\downarrow)0.53 (-0.09 โ†“\downarrow)0.09 (-0.10 โ†“\downarrow)
VSB-NOBJ0.16 (-0.28 โ†“\downarrow)0.26 (-0.35 โ†“\downarrow)0.09 (-0.10 โ†“\downarrow)
V-Avg.0.37 (-0.07 โ†“\downarrow)0.54 (-0.08 โ†“\downarrow)0.14 (-0.05 โ†“\downarrow)
S-Avg.0.30 (-0.14 โ†“\downarrow)0.50 (-0.11 โ†“\downarrow)0.19 (-0.00 -)
B-Avg.0.30 (-0.13 โ†“\downarrow)0.44 (-0.17 โ†“\downarrow)0.13 (-0.06 โ†“\downarrow)

Roadmap ๐Ÿšง

  • Streamlined installation
  • Example scripts for getting started
  • Improved benchmarking UX:
    • End-to-end scripts for producing result plots and tables
  • Extended documentation
  • Performance:
    • Support vectorized environments
    • Improve parallelism and overall execution speed

Acknowledgments and Licensing

We build on top of essential simulation tooling and the dataset from BEHAVIOR-1K and adhere to their licensing and terms of usage. For more information, please see https://behavior.stanford.edu/.

This work was supported by the European Union's Horizon Europe projects AGIMUS (No. 101070165), euROBIN (No. 101070596), ERC FRONTIER (No. 101097822), and ELLIOT (No. 101214398). Pavlo Yefanov (PY) and Georgy Ponimatkin (GP) were also partly supported by Grant Agency of the Czech Technical University in Prague under allocations SGS25/158/OHK3/3T/13 (PY) and SGS25/156/OHK3/3T/13 (GP). Martin Sedlacek was partly supported by the ELLIS Unit Amsterdam as part of the MSc Honours Programme. Compute resources and infrastructure were supported by the Ministry of Education, Youth and Sports of the Czech Republic through the e-INFRA CZ (ID:90254) and by the European Union's Horizon Europe project CLARA (No. 101136607).

Citation

If you use REALM or found our results useful for your research, please consider citing this work:

@article{sedlacek2025realm,
         title={REALM: A Real-to-Sim Validated Benchmark for Generalization in Robotic Manipulation},
         author={Martin Sedlacek and Pavlo Yefanov and Georgy Ponimatkin and Jai Bardhan and Simon Pilc and Mederic Fourmy and Evangelos Kazakos and Cees G. M. Snoek and Josef Sivic and Vladimir Petrik},
         journal = {arXiv preprint arXiv:2512.19562},
         year={2025}
}