The AY-Robots arena leaderboard: a sortable table of 85 vision-language-action models with 332 benchmark results, each value linked to its source
robot benchmarksLIBEROSimplerEnvVLA evaluationrobot learning

LIBERO, SimplerEnv and Robot Benchmarks Explained

AY-Robots ResearchAugust 23, 202623 min read

LIBERO, SimplerEnv and Meta-World numbers appear in every VLA paper. What each one measures, why two 97 percent scores are not comparable, and what they miss about your arm.

Open almost any vision-language-action paper from the last two years and you meet the same table: four columns labelled Spatial, Object, Goal and Long, one row per model, a number between 70 and 99 in every cell. That is LIBERO. In the NVIDIA Isaac-GR00T examples a second table sits next to it with rows named google_robot_pick_coke_can and widowx_spoon_on_towel. That is SimplerEnv. The two tables look like they belong on the same axis, and neither of them says anything directly about what an SO-100 will do on your desk.

This page walks through what LIBERO, SimplerEnv and Meta-World actually measure, which knobs move a published score without touching the policy at all, and how to check a benchmark claim instead of taking it on faith. Every number below was read out of the paper, the repository or the evaluation script it comes from, and dated, because these benchmarks change while keeping the same name. If you want the shorter version of the model landscape first, the VLA overview covers the models themselves.

What these numbers actually are

  • LIBERO is 130 simulated tasks on a Panda arm inside robosuite, grouped into four suites. The four-suite average is the number most VLA papers headline.
  • The word LIBERO covers at least two different datasets. OpenVLA regenerated the demonstrations at 256x256, dropped no-op actions and failed demos, and rotated the images 180 degrees. Most scores published since late 2024 sit on that version, not the original.
  • Episode budgets differ per suite and per harness: 220 steps for LIBERO-Spatial and 520 for LIBERO-Long in the OpenVLA script, 720 steps in the documented Isaac-GR00T LIBERO command.
  • SimplerEnv answers a different question: does a simulated score rank policies the way a real robot does. Its Visual Matching setup reached Pearson r 0.924 against real Google Robot evaluations; ranking the same checkpoints by validation MSE reached 0.308.
  • Success rates are binomial. An observed 90 percent over 70 rollouts has a 95 percent Clopper-Pearson interval of 80.5 to 95.9 percent.
  • No mainstream benchmark contains a low-cost 5-joint arm. A LIBERO score is not a prediction about your table, your lighting or your gripper.

What a benchmark number is made of

A manipulation success rate is not a measurement the way a mass or an inference latency is. It is the output of a pipeline: a task suite, a demonstration dataset, a training recipe, an evaluation harness, an episode budget, a seed, and a rule for choosing which checkpoint gets evaluated at all. Change any stage and the number moves. Most stages are documented somewhere in a repository. Almost none of them appear in the results table.

StageA real exampleWhat happens if it changes
Task suiteLIBERO-Spatial, 10 tasksSuites test different things; a four-suite average hides which one the model is weak at
Demonstration data50 human demos per task in the original releaseFiltered or re-rendered data raises the achievable ceiling for every method
Trials per task50 in the OpenVLA harness, so 500 per suiteFewer trials means a wider confidence interval, not a different policy
Episode step budget220 for Spatial, 520 for LongA slow but correct policy fails on a short budget and passes on a long one
Action chunk executionreplan every 5 steps in the openpi LIBERO harnessLonger open-loop chunks mean less feedback and more drift
Seed7 in both the OpenVLA and openpi scriptsChanges object placement and rollout order
Checkpoint selectionthe original paper picks the best-scoring checkpointSelecting on the same rollouts you report inflates the reported score

None of that is dishonest. Two groups can each report LIBERO-Spatial correctly and still be measuring different things. The useful reflex is not distrust, it is reading one layer deeper before you put two numbers in the same row.

LIBERO: the number in almost every VLA paper

LIBERO was published as Benchmarking Knowledge Transfer for Lifelong Robot Learning by Liu, Zhu, Gao, Feng, Liu, Zhu and Stone, first posted 5 June 2023 with a v2 on 14 October 2023. It is built on robosuite and MuJoCo, uses a Panda arm (the repository registers MountedPanda and OnTheGroundPanda), and specifies each task goal as a conjunction of PDDL predicates such as On(A, B). The simulation terminates when every predicate is true, and the reward is sparse: plus one on completion, nothing otherwise. That last detail is why LIBERO is used almost entirely for imitation learning rather than reinforcement learning.

SuiteTasksWhat is held constantWhat varies across tasks
LIBERO-Spatial10same object set, same goal (bowl onto plate)which of two identical bowls, given by its spatial relation
LIBERO-Object10same pick-and-place motionthe unique object being moved
LIBERO-Goal10same objects, same fixed layoutthe goal predicate, so the required motion
LIBERO-9090nothing in particulardiverse tasks, intended as a pretraining source
LIBERO-Long (libero_10)10nothing in particularlong-horizon, multi-step tasks

LIBERO-90 and LIBERO-Long together form LIBERO-100, which is why the paper says four suites and 130 tasks. The original protocol is not what a modern VLA paper runs: the paper trains a small policy for 50 epochs on 50 demonstrations per task, evaluates every 5 epochs over 20 rollouts capped at 600 steps, uses Adam with batch size 32 and a cosine schedule from 1e-4 to 1e-5, repeats everything over seeds 100, 200 and 300, and reports forward transfer (FWT), negative backward transfer (NBT) and area under the success curve (AUC). Modern papers throw away the lifelong-learning framing entirely and report a single per-suite success rate after fine-tuning one model per suite.

python
import os
from libero.libero import benchmark, get_libero_path
from libero.libero.envs import OffScreenRenderEnv

benchmark_dict = benchmark.get_benchmark_dict()
task_suite = benchmark_dict["libero_10"]()   # or libero_spatial / libero_object / libero_goal
task = task_suite.get_task(0)
print(task.language)   # the instruction the policy is conditioned on

bddl = os.path.join(get_libero_path("bddl_files"), task.problem_folder, task.bddl_file)
env = OffScreenRenderEnv(
    bddl_file_name=bddl,
    camera_heights=128,   # the default in the LIBERO README example
    camera_widths=128,
)
env.seed(0)
env.reset()

# fixed initial states, so every method starts from the same scene
init_states = task_suite.get_task_init_states(0)
env.set_init_state(init_states[0])

obs, reward, done, info = env.step([0.0] * 7)   # 7-dim action, last element is the gripper
The shape of a LIBERO rollout, following the repository README. Note the 128 pixel default.
Three names, one suite

LIBERO-Long, LIBERO-10 and the CLI value libero_10 are the same 10 long-horizon tasks. The training benchmark constants are LIBERO_SPATIAL, LIBERO_OBJECT, LIBERO_GOAL, LIBERO_90 and LIBERO_10. When a table says Long and a script says libero_10, nothing is inconsistent.

The word LIBERO covers at least two different datasets

The OpenVLA paper (arXiv 2406.09246, LIBERO added in the v2 revision of September 2024) did not train on the demonstrations that ship with LIBERO. It regenerated them by replaying every demonstration in the environment. The header comment of regenerate_libero_dataset.py lists exactly what changed.

  • Images are saved at 256x256 instead of 128x128.
  • Transitions with no-op actions are removed. A no-op is defined as all non-gripper dimensions near zero and the gripper command unchanged from the previous step.
  • Unsuccessful demonstrations are dropped entirely.
  • In the HDF5 to RLDS conversion the images are rotated 180 degrees, because the environments returned them upside down on that platform.
bash
# regenerate one suite into the "no_noops" form used by most published numbers
python experiments/robot/libero/regenerate_libero_dataset.py \
    --libero_task_suite libero_spatial \
    --libero_raw_data_dir ./LIBERO/libero/datasets/libero_spatial \
    --libero_target_dir ./LIBERO/libero/datasets/libero_spatial_no_noops

# or take the pre-converted RLDS version (about 10 GB for all four suites)
git clone git@hf.co:datasets/openvla/modified_libero_rlds
The step between the LIBERO release and the numbers most 2025 and 2026 papers report.

That regenerated form is now the de facto standard. The openpi LIBERO example points at it, and the Isaac-GR00T LIBERO example downloads IPEC-COMMUNITY/libero_spatial_no_noops_1.0.0_lerobot and friends, which are the same data converted to LeRobot dataset format. So a 2023 number and a 2025 number under the same suite name were produced from different pixels, at different resolution, with a different number of episodes and a different image orientation. The 2025 number is on the easier data, and the OpenVLA README says so plainly: the modification was made to improve the performance of all methods.

The mismatch that eats a day

Every one of these harnesses applies preprocessing at evaluation time that must match training. OpenVLA's eval flips the image with img[::-1, ::-1] to match the rotated training data, and its README states that --center_crop True is required because fine-tuning used random 90 percent crops. Get either wrong and the policy loads, runs, moves, and scores near zero. There is no error message. If your own policy behaves like that on real hardware, the same class of bug is described on loss falls but the policy does nothing.

The harness moves the score as much as the policy does

Three widely used LIBERO harnesses disagree on almost every evaluation setting. None of them is wrong. They simply produce numbers that should not be compared to the second decimal place.

SettingOpenVLA run_libero_eval.pyopenpi examples/libero/main.pyIsaac-GR00T LIBERO example
Rollouts per suite500 (10 tasks x 50 trials)500 (10 tasks x 50 trials)200, per the published results table
Max steps, Spatial / Object / Goal / Long220 / 280 / 300 / 520220 / 280 / 300 / 520720 in the documented Long command
Warm-up steps before the policy acts1010not documented in the example
Seed7 by default, 3 seeds in the paper7 by defaultthe fine-tune CLI exposes no seed
Render resolution256256LeRobot no_noops datasets
Open-loop chunk lengthmodel dependentreplan_steps 5--n-action-steps 8
Reported byarXiv 2406.09246 v2examples/libero/README.mdexamples/LIBERO/README.md

The episode budget row is the one that matters most. A VLA that hesitates, retries a grasp and eventually succeeds scores as a failure at 520 steps and a success at 720. The openpi script carries a comment worth quoting for a different reason: the seed appears to affect object positions even when a fixed initial state is set. That is the kind of detail that decides whether a reproduction attempt matches to within a point or misses by five.

The AY-Robots glossary entry for the LeRobot dataset format, showing the episode and camera stream structure
The LIBERO suites are redistributed as LeRobot datasets, which is the same format the desktop client writes when you record your own episodes.
Model and sourceSpatialObjectGoalLongAverage
Diffusion Policy from scratch, OpenVLA paper78.392.568.350.572.4
Octo fine-tuned, OpenVLA paper78.985.784.651.175.1
OpenVLA fine-tuned, OpenVLA paper84.788.479.253.776.5
OpenVLA-OFT, LIBERO.mdnot broken out there---97.1
Pi0.5 at 30k steps, openpi README98.898.298.092.496.85
GR00T N1.7, Isaac-GR00T example97.6598.4597.594.3596.99 (mean computed here)

Two things stand out. First, the field went from 76.5 in the OpenVLA v2 table of September 2024 to roughly 97 by the OpenVLA-OFT release of February 2025, which means LIBERO is close to saturated: the remaining headroom on three of the four suites is one or two percentage points, well inside the noise band you get from 200 to 500 rollouts. Second, the GR00T table reports Spatial as 195/200 (97.65%) in the same cell, and 195 out of 200 is 97.5 percent, not 97.65. It is a small inconsistency in a vendor README, and it is exactly why you check a number at its source before you build a comparison on it. If you want the per-model view rather than the per-benchmark view, the policy comparison page and the head-to-head GR00T N1.7 against Pi0.5 page use the same figures from the same vendor sources.

SimplerEnv: the benchmark that measures the benchmark

Evaluating Real-World Robot Manipulation Policies in Simulation (Li, Hsu, Gu and colleagues, 9 May 2024) starts from a different premise. Its goal is not to be a hard task set. Its goal is to be a simulated evaluation whose ranking of policies agrees with the ranking a real robot would produce. The paper reports a comparison across roughly 1500 evaluation episodes on two embodiments, a Google Robot and a WidowX from the BridgeData setup.

The authors name two gaps and attack them separately. The control gap is closed by offline system identification against real trajectories. The visual gap is closed by Visual Matching: green-screening real backgrounds behind the simulated scene and baking real textures onto the assets. An alternative, Variant Aggregation, instead randomises backgrounds, lighting, distractors and table textures and averages across the variants. The runtime is SAPIEN with the CPU-based ManiSkill2; the Bridge environments were also ported to ManiSkill3, which the SimplerEnv repository reports as 10 to 15 times faster. If you are choosing a simulator to build in rather than reading someone else's score, Isaac Lab is the other end of that decision.

Ranking protocolMMRV, lower is betterPearson r, higher is better
Validation MSE on held-out episodes0.3750.308
SIMPLER with Variant Aggregation0.1430.778
SIMPLER with Visual Matching0.0560.924

Those are the averages from Table I of the paper, over three tasks (Pick Coke Can, Move Near, Drawer) and six open-source checkpoints: three RT-1 checkpoints, RT-1-X, RT-2-X and Octo-Base. MMRV is Mean Maximum Rank Violation, a metric the paper introduces because Pearson correlation alone rewards a linear fit and can be dragged around by noise when two policies perform almost identically in the real world. MMRV asks a narrower question: when the simulated ranking disagrees with the real ranking, how large was the real-world gap it got backwards.

Validation loss ranks policies badly

The most transferable result in that table has nothing to do with simulation. Ranking six real checkpoints by validation MSE on held-out episodes produced an average Pearson correlation of 0.308 against real success rates. Action-space regression error is a weak proxy for whether a robot finishes the task. That is the same reason a falling training loss on your own run tells you almost nothing, and why checkpoint choice on a real arm still comes down to driving the arm.

SimplerEnv also shows why averages are dangerous. The Isaac-GR00T SimplerEnv example publishes per-task results for GR00T N1.6 and N1.7 on the Bridge suite. The average rose from 56.6 to 62.3 percent. Inside that average, widowx_stack_cube went from 5 to 48 percent and widowx_open_drawer from 95 to 100, while widowx_put_eggplant_in_basket fell from 89 to 53 and widowx_put_eggplant_in_sink fell from 33 to 2. If your task looks like the eggplant, the headline improvement is a regression.

Simulated benchmarks as a decision tool
What they give you
  • Reproducible: fixed initial states, fixed seeds, no operator fatigue and no gradual wear on a physical arm.
  • Cheap enough to run hundreds of rollouts, which is the only way to get a usable confidence interval.
  • Controlled ablations: SimplerEnv can vary background, lighting and distractors one at a time, which no real lab does consistently.
  • Comparable across labs, if and only if everyone pins the same suite, dataset version, harness and step budget.
What they cost you
  • Embodiment is fixed and is not yours. LIBERO is a Panda, SimplerEnv is a Google Robot or a WidowX, Meta-World is a Sawyer.
  • Saturation. Once several models sit above 96 percent on three of four suites, the benchmark stops separating them.
  • Optimisation pressure. A benchmark that everyone tunes against slowly stops measuring generalisation and starts measuring familiarity.
  • Contact-rich physics, cable drag, servo backlash and camera exposure changes are the failure modes on a real desk, and simulation models none of them well.

Meta-World, and what six years does to a benchmark

Meta-World (Yu, Quillen, He and colleagues, first posted 24 October 2019, v2 on 14 June 2021) is older and aimed at multi-task and meta reinforcement learning rather than imitation. It is 50 simulated manipulation tasks on a Sawyer arm, with a deliberately small action space: Box(-1.0, 1.0, (4,), float32), three Cartesian end-effector displacements and one gripper command. The benchmark splits are MT1, MT10 and MT50 for multi-task learning and ML1, ML10 and ML45 for meta learning, where ML10 gives 10 training tasks and 5 held-out test tasks and ML45 gives 45 and 5.

python
# pip install metaworld   (Farama build, Python 3.10 to 3.13, Gymnasium API)
import gymnasium as gym
import metaworld

env = gym.make("Meta-World/MT1", env_name="reach-v3")
observation, info = env.reset()
for _ in range(500):
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
env.close()
Note the -v3 suffix. Published Meta-World results exist against -v1 and -v2 environments as well.

That version suffix is the whole story. In May 2025 a group including several of the original authors published Meta-World+: An Improved, Standardized, RL Benchmark, whose abstract states that since Meta-World's introduction there have been numerous undocumented changes which inhibit a fair comparison of algorithms. A benchmark that existed for six years drifted far enough that the community needed a paper to work out which published numbers were comparable to which.

Benchmarks change silently under a stable name

This is not unique to Meta-World. The CALVIN repository changelog records a major bug on 16 September 2022: wrong language annotations and a wrong scene_info.npy in the ABC and ABCD datasets, with a further scene_info.npy fix for the D dataset on 24 February 2023. Results published before and after those dates are not on the same benchmark. Always record the benchmark version, the dataset checksum and the commit hash next to any success rate you report, including your own.

How many trials before a number means anything

A success rate over N rollouts is a binomial proportion, and binomial proportions from small N are much less precise than they look. An NVIDIA developer article published on 11 July 2026 works the arithmetic with the exact Clopper-Pearson interval and states plainly that most published benchmarks do not run enough rollouts to reach statistical significance when comparing two policies.

Observed success rateRollouts95 percent Clopper-Pearson intervalInterval width
90 percent7080.5 to 95.9 percent15.4 points
90 percent103088.0 to 91.8 percentabout 2 points either side

Narrowing that interval from 15.4 points wide to about 4 points wide costs roughly 15 times more rollouts. Put that next to the LIBERO harnesses: 500 rollouts per suite is respectable, 200 is thinner, and a real-robot evaluation of 20 trials, which is what most hardware papers can afford, carries an interval wide enough to swallow the difference between two models entirely. Snyder and colleagues make the same point from the other direction in Is Your Imitation Learning Policy Better than Mine? (14 March 2025): policy comparison is fundamentally constrained by feasible sample sizes on the order of 10 or 50, and their sequential stopping rule cuts the required trials by up to 32 percent rather than pretending the problem away.

What none of it tells you about your own arm

BenchmarkEmbodimentAction spaceObservations
LIBEROPanda in robosuite / MuJoCo7-dim delta pose plus gripperagentview_image and robot0_eye_in_hand_image, 128 px by default, 256 px in the regenerated data
SimplerEnvGoogle Robot and WidowX in SAPIENend-effector control at 3 Hz (Google Robot) and 5 Hz (Bridge)third-person camera, green-screened for Visual Matching
Meta-WorldSawyer in MuJoCoBox(-1, 1, (4,)): dx, dy, dz, gripperstate vector or rendered pixels
CALVINFranka in PyBulletcontinuous control at 30 Hzstatic camera 200x200, gripper camera 84x84
Your SO-1005 joints plus a gripper, Feetech STS3215 servosjoint positionswhatever cameras you mounted

The gap is not subtle. LIBERO's Panda has a wrist that can reach a pose from many directions; an SO-100 has five joints, so whole classes of approach angle simply do not exist for it. Read the degrees of freedom entry once and the difference stops being abstract. A model that scores 98 percent on LIBERO-Object has demonstrated that a 3 B parameter network can fit a fixed simulated pick-and-place; it has not demonstrated that it will find your particular cube under your particular lamp with your particular gripper.

The AY-Robots policies page comparing GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA and ACT by parameters, GPU tier, inference latency and minimum episodes
For a real arm, the numbers that decide a project are on the right of this table: control-loop latency and how many episodes you have to record before the policy is usable.

For deployment the deciding numbers are different ones. On this platform ACT runs an action step in 20 ms and GR00T N1.7 in 152 ms, while Pi0.5 needs 485 ms. Minimum useful dataset size is 30 recorded episodes for SmolVLA and 50 for the others. Neither of those appears in any LIBERO table, and both will decide whether your task works long before model quality does.

Two ways to get an evaluation number you trust

Reproducing a published LIBERO number is genuinely doable on one GPU, and doing it once is the fastest way to stop over-reading benchmark tables. The OpenVLA-OFT repository README states that its LIBERO evaluation needs a single GPU with roughly 16 GB of VRAM.

  1. 1
    Install LIBERO

    Python 3.8.13 and a pinned CUDA 11.3 torch build, per the repository README. Deviating from these pins is the most common source of MuJoCo rendering failures.

    bash
    conda create -n libero python=3.8.13
    conda activate libero
    git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
    cd LIBERO
    pip install -r requirements.txt
    pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 \
      --extra-index-url https://download.pytorch.org/whl/cu113
    pip install -e .
  2. 2
    Get the right dataset version

    Decide explicitly whether you want the original release or the regenerated no-op-filtered version, and write down which one. Almost every recent published number uses the second.

    bash
    # original release (the script's own default links may expire, so take the HF mirror)
    python benchmark_scripts/download_libero_datasets.py --datasets libero_spatial --use-huggingface
    
    # the version most 2025 and 2026 papers train on
    git clone git@hf.co:datasets/openvla/modified_libero_rlds
  3. 3
    Run the published evaluation, unmodified

    Run the vendor's own script against the vendor's own checkpoint first. If you cannot reproduce their number with their code, your later comparison means nothing.

    bash
    python experiments/robot/libero/run_libero_eval.py \
      --model_family openvla \
      --pretrained_checkpoint openvla/openvla-7b-finetuned-libero-spatial \
      --task_suite_name libero_spatial \
      --center_crop True
  4. 4
    Record the settings that moved the number

    Suite, dataset variant, rollouts per task, the per-suite step cap, the seed, and the exact package versions. The OpenVLA README pins Python 3.10.13, PyTorch 2.2.0, transformers 4.40.1 and flash-attn 2.5.5 on an A100, and warns that a different GPU can shift results because of nondeterminism in large models.

    bash
    python - <<'EOF'
    import json, subprocess, torch, transformers
    print(json.dumps({
      "torch": torch.__version__,
      "transformers": transformers.__version__,
      "cuda": torch.version.cuda,
      "gpu": torch.cuda.get_device_name(0),
      "commit": subprocess.check_output(["git","rev-parse","HEAD"]).decode().strip(),
    }, indent=2))
    EOF
Budget the time honestly

500 rollouts per suite with a multi-billion parameter VLA in the loop is hours of GPU time per suite, not minutes, and that is before any fine-tuning. Reproducing all four suites for one model is a weekend, not an afternoon.

Checking a benchmark claim in ten minutes

  1. 1
    Pin the suite and the trial count

    Find the exact suite name and how many rollouts per task produced the figure. If the source does not say, treat the number as an anecdote rather than a measurement.

  2. 2
    Find out which dataset version it was trained on

    Search the repository for the string that gives it away. A hit on no_noops means the regenerated 256 pixel data, not the original release.

    bash
    git clone --depth 1 https://github.com/NVIDIA/Isaac-GR00T
    grep -rn "no_noops\|modified_libero\|libero_spatial" Isaac-GR00T/examples | head
  3. 3
    Find the episode budget

    The step cap is usually a hard-coded ladder in the evaluation script rather than a documented flag.

    bash
    grep -n "max_steps\|max-episode-steps\|num_trials_per_task\|replan_steps" \
      experiments/robot/libero/run_libero_eval.py examples/libero/main.py
  4. 4
    Put a confidence interval on it

    Clopper-Pearson takes four lines. Do this before you claim one model beats another by two points.

    python
    from scipy.stats import beta
    
    def clopper_pearson(k, n, alpha=0.05):
        lo = beta.ppf(alpha / 2, k, n - k + 1) if k > 0 else 0.0
        hi = beta.ppf(1 - alpha / 2, k + 1, n - k) if k < n else 1.0
        return lo, hi
    
    for k, n in [(63, 70), (927, 1030), (195, 200), (424, 500)]:
        lo, hi = clopper_pearson(k, n)
        print(f"{k}/{n} = {k/n:6.1%}   95% CI [{lo:.1%}, {hi:.1%}]")
  5. 5
    Ask whether the embodiment resembles yours

    A Panda score transfers to your SO-100 as a rough prior on model family, nothing more. If the model has no matching embodiment tag for your arm at all, the benchmark number is not the constraint you will hit first.

The AY-Robots arena leaderboard, a sortable table of 85 vision-language-action models with 332 benchmark results, each value linked to its source
Every value in the arena links back to the paper or model card it was taken from, which is what makes step one and step two above take minutes rather than an afternoon.
The evaluation that does predict your robot

It is the boring one: 20 to 50 rollouts of your own task, on your own arm, with the scene reset the same way every time, scored by a rule you wrote down before you started. Log the seed, the checkpoint step and the confidence interval. That protocol beats any published simulated score as a predictor of your Tuesday. The run your first policy walkthrough sets up the loop, and policy only works in one setup covers the first thing it usually reveals.

Where robot evaluation is heading

The field knows this. RoboArena (Atreya, Pertsch and colleagues, 22 June 2025, revised 29 November 2025) skips standardised task sets entirely: evaluators at seven academic institutions run double-blind pairwise comparisons of policies on their own DROID setups and on tasks of their own choosing, and the preferences are aggregated into a ranking. The reported scale is over 600 pairwise real-robot evaluation episodes across seven generalist policies. It is a different bet from LIBERO: give up on controlling the environment, and buy back validity by evaluating in many uncontrolled ones.

Until something like that becomes standard, treat LIBERO and SimplerEnv as what they are. They are useful screens for excluding a model family, they are reproducible in a way real hardware is not, and they are close to saturated at the top. They are not a forecast of your success rate. That number you have to measure yourself, on your table, with the episodes you recorded, and with enough rollouts that the interval is narrower than the difference you care about.

85 models, 332 benchmark results, every value sourced

The arena collects the published LIBERO, SimplerEnv and real-robot numbers for 85 vision-language-action models, with each figure linked back to the paper or model card it came from. Sort it, compare two models side by side, and click straight through to the primary source.

Open the arena
Which benchmark should I look at when picking a VLA for a real arm?

Look at the real-robot numbers first if the vendor published any, then at SimplerEnv, then at LIBERO. SimplerEnv was explicitly designed so that its ranking correlates with real evaluations, reaching Pearson r 0.924 with the Visual Matching setup against real Google Robot results, whereas LIBERO makes no such claim. In practice the decision is usually made by inference latency and minimum dataset size rather than by any benchmark score, which is why the policy comparison page leads with those.

Why do two papers report different LIBERO numbers for the same model?

Most often because they trained on different data under the same name. The OpenVLA regeneration renders at 256x256 instead of 128x128, removes no-op actions, removes failed demonstrations and rotates the images 180 degrees. Beyond that, rollouts per suite differ (500 in the OpenVLA and openpi harnesses, 200 in the published Isaac-GR00T table), the per-suite step cap differs, and the number of open-loop action steps executed per inference differs.

Is LIBERO saturated?

On three of the four suites, close to it. OpenVLA fine-tuned reported a 76.5 percent four-suite average in 2024; OpenVLA-OFT documents 97.1 percent, openpi documents 96.85 percent for Pi0.5 at 30k steps, and the Isaac-GR00T example reports per-suite figures averaging about 97 percent. Differences of one or two points at that level are inside the binomial noise of 200 to 500 rollouts. LIBERO-Long, at 92 to 94 percent, still has some separating power.

Can I run LIBERO or SimplerEnv on AY-Robots?

No. This platform trains policies on your own recorded LeRobot datasets and runs them on real SO-100 class hardware; it does not host the simulated benchmark suites. The arena collects published benchmark results from 85 models with links to their sources, but it reports what vendors published rather than re-running the evaluations.

How many rollouts do I need for my own evaluation?

It depends on the difference you want to detect. With an exact Clopper-Pearson interval, an observed 90 percent over 70 rollouts spans 80.5 to 95.9 percent, while 1030 rollouts narrows it to 88.0 to 91.8 percent. If you want to tell a 90 percent policy from an 85 percent policy, tens of trials will not do it. If you only want to tell a working policy from a broken one, 20 will.

What is MMRV and why not just use correlation?

MMRV is Mean Maximum Rank Violation, introduced in the SimplerEnv paper. Pearson correlation measures linear agreement, so it can be penalised by a perfectly ordered but nonlinear relationship, and it can be dragged around by noise when two policies perform almost identically in the real world. MMRV instead measures whether the simulated evaluation gets the ordering wrong, weighted by how large the real-world gap was that it inverted. Both are reported together in the paper.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started