Robotics
LeRobot
English
OpenRAL
rskill
diffusion
vision-language-action
pusht
diffusion-policy
manipulation
Instructions to use OpenRAL/rskill-diffusion-pusht-pusht-fp32 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use OpenRAL/rskill-diffusion-pusht-pusht-fp32 with LeRobot:
- Notebooks
- Google Colab
- Kaggle
| # rSkill manifest β OpenRAL packaging format V1 (CLAUDE.md Β§6.4) | |
| # Wraps: lerobot/diffusion_pusht (Apache-2.0) | |
| # Paper: Chi et al., 2023 β Diffusion Policy. | |
| # ββ Identity βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| schema_version: "0.1" | |
| name: "OpenRAL/rskill-diffusion-pusht-pusht-fp32" | |
| evaluated_tasks: ["pusht"] # benchmark task this checkpoint is validated for (gate) | |
| version: "0.1.0" | |
| license: "apache-2.0" | |
| role: "s1" | |
| kind: "vla" # rSkill kind discriminator. "vla" = learnable Vision-Language-Action policy. | |
| # ββ Policy identity ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| model_family: "diffusion" | |
| # ββ Compatibility contract βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # 2-D PushT pseudo-robot (single end-effector pushing a T block). Used by | |
| # tests/sim/test_pusht_2d_diffusion_pusht.py against gym_pusht/PushT-v0. | |
| embodiment_tags: | |
| - "pusht" | |
| # PushT exposes a single 96Γ96 RGB top-down stream (named | |
| # observation.image, not images.cameraN β PushT predates the multi-cam | |
| # convention used by SmolVLA/ACT). | |
| sensors_required: | |
| - modality: "rgb" | |
| vla_feature_key: "observation.image" | |
| min_width: 96 | |
| min_height: 96 | |
| # Output side. The pusht_2d scene-pseudo-robot exposes its 2-D | |
| # (x, y) pusher position as two synthetic prismatic joints (tip_x, tip_y); | |
| # robots/pusht_2d/robot.yaml advertises `joint_position` over those 2 DoF. | |
| # The gym-pusht action IS the absolute target of those joints, so the | |
| # robot-side actuator is joint_position (matches every other | |
| # rSkill, where `kind` names the robot actuator, not the policy encoding). | |
| # The loader auto-fills n_dof (2) + vla_action_key from the robot YAML. | |
| actuators_required: | |
| - kind: "joint_position" | |
| control_mode_semantics: | |
| mode: "absolute" | |
| # ββ Runtime / weights ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| runtime: "pytorch" | |
| quantization: | |
| dtype: "fp32" | |
| backend: "pytorch" | |
| weights_uri: "hf://lerobot/diffusion_pusht" | |
| # ββ Preprocessing (all knobs needed to interpret IO) βββββββββββββββββββββββ | |
| processors: | |
| preprocessor_uri: "hf://lerobot/diffusion_pusht/policy_preprocessor.json" | |
| postprocessor_uri: "hf://lerobot/diffusion_pusht/policy_postprocessor.json" | |
| # PushT is a 2-DoF planar pushing benchmark; proprio state is 2-D | |
| # (x, y) of the end effector. | |
| state_contract: | |
| dim: 2 | |
| # ββ Execution semantics ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| chunk_size: 8 | |
| # n_action_steps omitted β equals chunk_size (Diffusion Policy default). | |
| latency_budget: | |
| # Reference-host measurement (RTX 4070 Laptop, CUDA 12.8, PyTorch 2.10) | |
| # of the warm full-chunk inference is 1756 ms β Diffusion Policy runs | |
| # 100 DDPM denoising steps per chunk, the dominant cost in the suite. | |
| # Pinning per_chunk_ms to 1250 ms with tolerance_pct=100 yields the | |
| # previous 2.5 s ceiling (_WARM_CHUNK_CEILING_S in the sim test). | |
| per_chunk_ms: 1250.0 | |
| # ββ Provenance βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Headline success rate from skills/diffusion-pusht/eval/pusht.json. | |
| benchmarks: | |
| pusht: 1.0 | |
| paper_url: "https://arxiv.org/abs/2303.04137" | |
| source_repo: "hf://lerobot/diffusion_pusht" | |
| description: > | |
| Diffusion Policy (~263M-param U-Net with 100-step DDPM denoiser) for | |
| the PushT 2-DoF pushing benchmark. Action chunks of length 8 within a | |
| horizon of 16. The chunk inference cost is dominated by the denoising | |
| loop, so cached pops are essentially free β this is the extreme test | |
| of the queue-drain contract. | |
| # Action vocabulary surfaced to the reasoner LLM tool | |
| # palette so it can pick this skill by what it does (action verb + | |
| # object + scene), not just by its slug. | |
| actions: | |
| - "push" | |
| objects: | |
| - "t_shape" | |
| scenes: | |
| - "tabletop_2d" | |
| # Per-checkpoint action contract (consumed by the dataset bridge | |
| # to bind the LeRobot v3 `action` feature shape). | |
| action_contract: | |
| dim: 2 | |
| # absolute positions of the 2 prismatic tip_x/tip_y joints. | |
| # Declared explicitly so the contract states joint-space rather than relying | |
| # on the undeclared-layout fallback. | |
| representation: "joint_positions" | |
| # EXPLICIT joint units β PushT's 2-D action is a planar tip position in the | |
| # 512Γ512 image frame (verified: observation.state normalizer maxβ[496, 511], | |
| # minβ[13, 33]), NOT angles. "radians" selects the identity (no degβrad | |
| # conversion) so the 0β512 values pass through unchanged. It is declared to | |
| # STOP the stats-magnitude heuristic β which sees peak β«Ο and would wrongly | |
| # flag "degrees" and corrupt the action with a ΓΟ/180 scaling. | |
| joint_units: "radians" | |