feat(envs): add LIBERO-plus robustness benchmark#3313
Open
Conversation
35f18d4 to
566a77b
Compare
7199137 to
9fe9008
Compare
1c82840 to
5df5008
Compare
|
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
5df5008 to
0fa55f5
Compare
6562146 to
542fb80
Compare
- LiberoPlusEnv config (subclass of LiberoEnv, same gym interface) - Docker image installing LIBERO-plus fork via PYTHONPATH - CI workflow: 1-episode smoke eval with pepijn223/smolvla_libero_plus - pyproject.toml: libero_plus extra Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
842a948 to
dab97dc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
feat(envs): add LIBERO-plus robustness benchmark
Type / Scope
src/lerobot/envs/,pyproject.toml,docker/,docs/Summary / Motivation
LIBERO-plus is a robustness benchmark for VLA models that extends LIBERO with 7 perturbation dimensions (camera viewpoints, object layouts, robot initial states, language instructions, lighting, background textures, sensor noise), producing ~10 000 task variants across the standard LIBERO suites.
Because LIBERO-plus keeps the same Python gym interface as the original LIBERO, the integration is minimal: a one-line config subclass, an import fallback for the different package nesting, and a new pip extras group.
Related issues
feat/async-vector-env)What changed
src/lerobot/envs/libero.py— wraps the top-level LIBERO imports intry/exceptto handle the extra module nesting level that LIBERO-plus ships withsrc/lerobot/envs/configs.py— addsLiberoPlusEnvconfig (@EnvConfig.register_subclass("libero_plus")), a thin subclass ofLiberoEnvwithtask="libero_spatial"as default; fully inheritscreate_envsandget_env_processorspyproject.toml— addslibero_plusoptional dep group and includes it inalldocs/source/libero_plus.mdx— new benchmark doc: perturbation dimensions, task suites, install instructions, eval commands, camera name mapping, dataset referencedocs/source/_toctree.yml— registers new doc pagedocker/Dockerfile.benchmark.libero_plus— isolated CI image (addslibexpat1 libfontconfig1-dev libmagickwand-devsystem deps required by LIBERO-plus).github/workflows/benchmark_tests.yml— addslibero-plus-integration-testjob (build image + 1-episode smoke eval onaws-g6-4xlarge-plus)No breaking changes.
env.type=liberocontinues to work unchanged.Dataset note
pepijn223/libero_plus_lerobotis already LeRobot v3.0 format — no conversion needed.Dataset card (README) is missing on the Hub and should be added in a follow-up.
Camera keys:
observation.images.front/observation.images.wrist.How was this tested (or how to run locally)
pre-commit run -apasses on all changed fileslerobot-eval \ --policy.path=pepijn223/smolvla_libero \ --env.type=libero_plus \ --env.task=libero_spatial \ --eval.batch_size=1 --eval.n_episodes=1 \ --eval.use_async_envs=false --policy.device=cuda \ '--env.camera_name_mapping={"agentview_image": "camera1", "robot0_eye_in_hand_image": "camera2"}' \ --policy.empty_cameras=1aws-g6-4xlarge-plus.Checklist (required before merge)
pre-commit run -a)pytest) — LIBERO-plus requires Linux, validated via CIdocs/source/libero_plus.mdx)Reviewer notes
libero.pyis the only change touching existing code paths. Thetrybranch runs forhf-libero; theexceptbranch for LIBERO-plus. Transparent to callers.LiberoPlusEnvis intentionally a minimal subclass — no duplicated logic.uv sync --extra libero_plus --no-cache(no--locked) because the GitHub-sourced package is not inuv.lock. Pin a commit SHA in the dep once LIBERO-plus stabilizes.