hylo-env-libero¶
Hylo LIBERO environment adapter (runs out of process in its own venv) and LIBERO benchmarks
Repository hylo-bench, adapters/hylo-env-libero. Licence: Apache-2.0. Depends on: hylo-core.
Registered entry points
| Group | Name | Object |
|---|---|---|
| benchmarks | libero |
hylo.envs.libero.suites:libero_benchmark |
| envs | libero |
hylo.envs.libero.env:LiberoEnv |
| Module | Summary |
|---|---|
hylo.envs.libero |
LIBERO (Liu et al. 2023) for Hylo: environment adapter and benchmark suites |
hylo.envs.libero.env |
LIBERO Environment adapter. Runs inside the simulator venv (hf-libero, robosuite 1.4) behind an |
hylo.envs.libero.suites |
LIBERO benchmarks as Hylo Benchmarks, built from a bundled task index (suites.json) so the |
hylo.envs.libero¶
LIBERO (Liu et al. 2023) for Hylo: environment adapter and benchmark suites.
META
module-attribute
¶
META = {'contracts': {'envs': 'hylo.env/v0.1', 'benchmarks': 'hylo.benchmark/v0.1'}, 'maturity': 'implemented', 'plugins': {'envs/libero': {'notes': 'LIBERO (MIT); assets from lerobot/libero-assets'}, 'benchmarks/libero': {'notes': 'LIBERO (MIT)'}}}
hylo.envs.libero.env¶
LIBERO Environment adapter. Runs inside the simulator venv (hf-libero, robosuite 1.4) behind an EnvServer; the main process never imports LIBERO.
Conventions match LeRobot's LIBERO integration so LeRobot-trained policies see what they saw in training: - images: agentview and wrist cameras, rotated 180 degrees (robosuite renders them upside down); - state: eef position (3), eef axis-angle from the xyzw quaternion (3), gripper qpos (2); - reset: load the task's stored init state (index = seed % 50), then 10 no-op steps; - action: 7-D OSC delta pose in [-1, 1], last dim gripper (-1 open, +1 close); - success: LIBERO's BDDL goal predicate (env.check_success()); the episode ends on success.
hylo.envs.libero.suites¶
LIBERO benchmarks as Hylo Benchmarks, built from a bundled task index (suites.json) so the main process can enumerate tasks without importing LIBERO.
Seeds index LIBERO's 50 stored init states per task (seed % 50). The official protocol evaluates all 50;
splits partition them: validation = init states [0, n_validation), heldout = the next n_heldout.
Regenerate the index inside the simulator venv with python -m hylo.envs.libero.suites.
MAX_STEPS
module-attribute
¶
MAX_STEPS = {'libero_spatial': 280, 'libero_object': 280, 'libero_goal': 300, 'libero_10': 520, 'libero_90': 400}
libero_benchmark ¶
libero_benchmark(suite: str = 'libero_spatial', n_validation: int = 25, n_heldout: int = 25, task_indices: list[int] | None = None, protocol: str = 'standard', replicates: int = 1, rsi_bounds: tuple[int, int, int] = (20, 30, 40), gate_looks: int = 1)
protocol="standard": validation / heldout over the official 50 init states.
protocol="rsi": search / search_val / gate / heldout (RFC-0002), with replicates noise replicates per
init state (seed + 50 r: same init state, different policy noise).