Downloads · 30 days
53
41% of all-time downloads
Harrysunshine/libero-act-sim-goal
libero-act-sim-goal is a robotics model from Harrysunshine. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for lerobot. The card lists the license as apache-2.0.
An ACT (Action Chunking Transformer) policy trained with LeRobot on a single LIBERO-Goal task: put the bowl on the plate (task suite liberogoal, taskid = 8).
Downloads · 30 days
53
41% of all-time downloads
All-time downloads
129
Public
Parameters
51.7M
207 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors207 MB · 100%
From the Hugging Face model README
An ACT (Action Chunking Transformer) policy trained with
LeRobot on a single LIBERO-Goal task:
put the bowl on the plate (task suite libero_goal, task_id = 8).
It reaches 100% success rate (10/10 episodes) on that task in the LIBERO simulator.
This checkpoint was produced as a teaching demo for a robot-learning course: it is small (51.7M parameters), trains in minutes on one GPU, and is meant as a clean, reproducible reference point for "what a working single-task imitation policy looks like".
| Policy | ACT (CVAE + action chunking), lerobot type: act |
| Parameters | 51,671,687 (fp32, 234 tensors) |
| Vision backbone | ResNet-18, initialised from ResNet18_Weights.IMAGENET1K_V1 |
| Transformer | dim_model=512, 8 heads, 4 encoder layers, 1 decoder layer, FFN 3200, dropout 0.1, post-norm |
| CVAE | use_vae=true, latent dim 32, 4 VAE-encoder layers, kl_weight=10.0 |
| Action chunking | chunk_size=100, n_action_steps=100, no temporal ensembling |
| Observation steps | 1 |
| Normalisation | mean/std for images, state and actions (use_imagenet_stats=false) |
| Key | Shape | Meaning |
|---|---|---|
observation.images.image | 3 × 256 × 256 | agentview (third-person) RGB |
observation.images.image2 | 3 × 256 × 256 | robot0_eye_in_hand (wrist) RGB |
observation.state | 8 | proprioceptive state |
action (output) | 7 | 6-DoF end-effector delta + gripper, relative control |
lerobot/libero, restricted to the
49 episodes belonging to put the bowl on the plate in the libero_goal suite.1e-5 (same lr for the backbone), weight decay 1e-4.video_backend=pyav.Evaluated in the LIBERO simulator on the same task it was trained on
(libero_goal, task_id = 8, obs_type=pixels_agent_pos, 256×256 observations):
| Metric | Value |
|---|---|
Success rate (pc_success) | 100 (10 / 10 episodes) |
| Average summed reward | 1.0 |
| Step | 950 |
The raw evaluation record is included as eval_summary.json.
Requires LeRobot with the LIBERO environment
(lerobot[libero]). Closed-loop rollout in simulation:
import torch
from lerobot.configs.policies import PreTrainedConfig
from lerobot.envs.configs import LiberoEnv as LiberoEnvConfig
from lerobot.envs.factory import make_env, make_env_pre_post_processors
from lerobot.envs.utils import add_envs_task, preprocess_observation
from lerobot.policies.factory import get_policy_class, make_pre_post_processors
import lerobot.policies # register policy types
policy_path = "Harrysunshine/libero-act-sim-goal"
task_suite = "libero_goal"
task_id = 8 # "put the bowl on the plate"
device = "cuda"
policy_cfg = PreTrainedConfig.from_pretrained(policy_path)
policy_cfg.device = device
policy = get_policy_class(policy_cfg.type).from_pretrained(
policy_path, config=policy_cfg, strict=False
)
preprocessor, postprocessor = make_pre_post_processors(
policy_cfg, pretrained_path=policy_path
)
env_cfg = LiberoEnvConfig(
task=task_suite,
task_ids=[task_id],
obs_type="pixels_agent_pos",
observation_height=256,
observation_width=256,
episode_length=300,
)
env = make_env(env_cfg, n_envs=1)[task_suite][task_id]
env_preprocessor, env_postprocessor = make_env_pre_post_processors(env_cfg, policy_cfg)
policy.reset()
observation, _ = env.reset(seed=[7])
for _ in range(300):
batch = preprocess_observation(observation)
batch = add_envs_task(env, batch)
batch = env_preprocessor(batch)
batch = preprocessor(batch)
with torch.inference_mode():
action = policy.select_action(batch)
action = postprocessor(action)
action = env_postprocessor(action)
observation, _, terminated, truncated, info = env.step(action.cpu().numpy())
if terminated[0] or truncated[0]:
break
put the bowl on the plate and will attempt that behaviour
regardless of what else is in the scene.ACT / Action Chunking with Transformers:
@inproceedings{zhao2023act,
title = {Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware},
author = {Zhao, Tony Z. and Kumar, Vikash and Levine, Sergey and Finn, Chelsea},
booktitle = {Robotics: Science and Systems (RSS)},
year = {2023}
}
LIBERO benchmark:
@inproceedings{liu2023libero,
title = {LIBERO: Benchmarking Knowledge Transfer for Lifelong Robot Learning},
author = {Liu, Bo and Zhu, Yifeng and Gao, Chongkai and Feng, Yihao and Liu, Qiang and Zhu, Yuke and Stone, Peter},
booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},
year = {2023}
}
这是一个用 LeRobot 训练的 ACT(动作分块 Transformer)
策略,任务是 LIBERO-Goal 套件中的第 8 个任务 “把碗放到盘子上”(put the bowl on the plate)。
lerobot/libero 中属于该任务的 49 条示范轨迹。限制:只会这一个任务、不吃语言指令、只在仿真里验证过、观测格式固定(两路 256×256 相机