| | --- |
| | pretty_name: "EXOKERN Skill v0 - Peg Insertion with Force/Torque" |
| | license: cc-by-nc-4.0 |
| | pipeline_tag: robotics |
| | library_name: pytorch |
| | tags: |
| | - robotics |
| | - diffusion-policy |
| | - force-torque |
| | - contact-rich |
| | - manipulation |
| | - insertion |
| | - isaac-lab |
| | - forge |
| | - franka |
| | - panda |
| | - simulation |
| | - imitation-learning |
| | - lerobot |
| | - physical-ai |
| | datasets: |
| | - EXOKERN/contactbench-forge-peginsert-v0 |
| | metrics: |
| | - success_rate |
| | - avg_contact_force_n |
| | - peak_contact_force_n |
| | model-index: |
| | - name: EXOKERN Skill v0 - Peg Insertion (full_ft) |
| | results: |
| | - task: |
| | type: robotics |
| | name: Peg insertion |
| | dataset: |
| | name: EXOKERN ContactBench v0 |
| | type: EXOKERN/contactbench-forge-peginsert-v0 |
| | metrics: |
| | - type: success_rate |
| | value: 100.0 |
| | name: Success Rate (%) |
| | - type: avg_contact_force_n |
| | value: 3.2 |
| | name: Average Contact Force (N) |
| | - type: peak_contact_force_n |
| | value: 10.5 |
| | name: Peak Contact Force (N) |
| | --- |
| | |
| | # EXOKERN Skill v0 - Peg Insertion with Force/Torque |
| |
|
| | `skill-forge-peginsert-v0` is the clean baseline skill release in the EXOKERN catalog. The repository contains a paired policy comparison on the fixed-condition [EXOKERN ContactBench v0 dataset](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0): |
| |
|
| | - `full_ft_best_model.pt`: primary checkpoint with 22D observations, including 6-axis force/torque input |
| | - `no_ft_best_model.pt`: ablation baseline with the same architecture but without force/torque input |
| |
|
| | The main value of this release is not just success rate. It is a controlled reference point for measuring how force/torque sensing changes contact quality on a simple assembly task. |
| |
|
| | ## Quick Facts |
| |
|
| | | Item | Value | |
| | | --- | --- | |
| | | Task | Peg insertion in simulation | |
| | | Dataset | [EXOKERN/contactbench-forge-peginsert-v0](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0) | |
| | | Simulator | NVIDIA Isaac Lab (Isaac Sim 4.5) | |
| | | Robot | Franka Emika Panda | |
| | | Architecture | TemporalUNet1D diffusion policy | |
| | | Parameters | 71.3M | |
| | | Observation horizon | 10 frames | |
| | | Prediction / execution horizon | 16 / 8 actions | |
| | | Primary checkpoint | `full_ft_best_model.pt` | |
| | | Included ablation | `no_ft_best_model.pt` | |
| |
|
| | ## Primary Benchmark |
| |
|
| | The Hub metadata for this repo tracks the primary `full_ft` checkpoint. The full repo includes the paired `no_ft` ablation for comparison. |
| |
|
| | | Checkpoint | Success Rate | Avg Contact Force (N) | Peak Force (N) | |
| | | --- | ---: | ---: | ---: | |
| | | `full_ft` | 100.0 | 3.2 +/- 0.5 | 10.5 +/- 0.4 | |
| | | `no_ft` | 100.0 | 5.2 +/- 0.1 | 12.1 +/- 0.3 | |
| |
|
| |  |
| |
|
| | *Figure: published seed-wise benchmark summary for the fixed-condition baseline release.* |
| |
|
| | Per-seed average contact force: |
| |
|
| | | Seed | `full_ft` | `no_ft` | Reduction with F/T | |
| | | --- | ---: | ---: | ---: | |
| | | 42 | 3.7 N | 5.3 N | 30.4% | |
| | | 123 | 3.4 N | 5.0 N | 32.3% | |
| | | 7 | 2.5 N | 5.2 N | 52.0% | |
| |
|
| | Takeaway: on this controlled baseline, force/torque input preserved success while substantially reducing contact force. |
| |
|
| | ## Architecture |
| |
|
| | This release uses a 1D Temporal U-Net diffusion policy with FiLM-style conditioning from the observation history and diffusion timestep. |
| |
|
| |  |
| |
|
| | | Component | Value | |
| | | --- | --- | |
| | | Action dimension | 7 | |
| | | Observation dimensions | 22 (`full_ft`) / 16 (`no_ft`) | |
| | | Diffusion training steps | 100 | |
| | | DDIM inference steps | 16 | |
| | | Base channels | 256 | |
| | | Channel multipliers | (1, 2, 4) | |
| | | Normalization | Min-max to `[-1, 1]` | |
| |
|
| | ## Repository Contents |
| |
|
| | | File | Description | |
| | | --- | --- | |
| | | `full_ft_best_model.pt` | Best checkpoint with force/torque input | |
| | | `no_ft_best_model.pt` | Best checkpoint without force/torque input | |
| | | `inference.py` | Self-contained inference helper and model definition | |
| | | `config.yaml` | Training, dataset, and environment configuration | |
| | | `training_curve_full_ft_seed42.png` | Training curve for `full_ft`, seed 42 | |
| | | `training_curve_full_ft_seed123.png` | Training curve for `full_ft`, seed 123 | |
| | | `training_curve_full_ft_seed7.png` | Training curve for `full_ft`, seed 7 | |
| | | `training_curve_no_ft_seed42.png` | Training curve for `no_ft`, seed 42 | |
| | | `training_curve_no_ft_seed123.png` | Training curve for `no_ft`, seed 123 | |
| | | `training_curve_no_ft_seed7.png` | Training curve for `no_ft`, seed 7 | |
| |
|
| | ## Usage |
| |
|
| | ### Reproduce evaluation with `exokern-eval` |
| |
|
| | ```bash |
| | pip install exokern-eval |
| | |
| | wget https://huggingface.co/EXOKERN/skill-forge-peginsert-v0/resolve/main/full_ft_best_model.pt |
| | |
| | exokern-eval \ |
| | --policy full_ft_best_model.pt \ |
| | --env Isaac-Forge-PegInsert-Direct-v0 \ |
| | --episodes 100 |
| | ``` |
| |
|
| | ### Load the repo helper locally |
| |
|
| | ```python |
| | import os |
| | import sys |
| | |
| | from huggingface_hub import snapshot_download |
| | |
| | repo_dir = snapshot_download( |
| | repo_id="EXOKERN/skill-forge-peginsert-v0", |
| | allow_patterns=["*.pt", "inference.py"], |
| | ) |
| | sys.path.insert(0, repo_dir) |
| | |
| | from inference import DiffusionPolicyInference |
| | |
| | policy = DiffusionPolicyInference( |
| | os.path.join(repo_dir, "full_ft_best_model.pt"), |
| | device="cpu", |
| | ) |
| | |
| | policy.add_observation([0.0] * 22) |
| | actions = policy.get_actions() |
| | print(len(actions)) |
| | ``` |
| |
|
| | ## Training And Evaluation Setup |
| |
|
| | | Item | Value | |
| | | --- | --- | |
| | | Train / val split | 85% / 15% by episode | |
| | | Epochs | 300 | |
| | | Batch size | 256 | |
| | | Optimizer | AdamW, `lr=1e-4`, `weight_decay=1e-4` | |
| | | LR schedule | Cosine annealing to `1e-6` | |
| | | EMA decay | 0.995 | |
| | | Seeds | 42, 123, 7 | |
| | | Physics rate | 120 Hz | |
| | | Control rate | 15 Hz | |
| | | Domain randomization | Disabled in this release | |
| |
|
| | ## Related Work |
| |
|
| | - FORGE: [Force-Guided Exploration for Robust Contact-Rich Manipulation under Uncertainty](https://arxiv.org/abs/2408.04587) |
| | - Diffusion Policy: [Visuomotor Policy Learning via Action Diffusion](https://arxiv.org/abs/2303.04137) |
| | - Factory: [Fast Contact for Robotic Assembly](https://arxiv.org/abs/2205.03532) |
| |
|
| | ## Citation |
| |
|
| | ```bibtex |
| | @misc{exokern_skill_peginsert_v0_2026, |
| | title = {EXOKERN Skill v0: Peg Insertion with Force/Torque}, |
| | author = {{EXOKERN}}, |
| | year = {2026}, |
| | howpublished = {\url{https://huggingface.co/EXOKERN/skill-forge-peginsert-v0}}, |
| | note = {Paired full_ft and no_ft diffusion-policy checkpoints} |
| | } |
| | ``` |
| |
|
| | ## Security Note |
| |
|
| | The checkpoints in this repo are PyTorch pickles. Load them only in a trusted or isolated environment after reviewing the repository contents. |
| |
|
| | ## Limitations |
| |
|
| | - Simulation only. This release does not claim real-robot readiness. |
| | - The task is a relatively simple peg insertion setting with fixed conditions. |
| | - Results should not be generalized to harder contact tasks without additional evidence. |
| | - The repo exposes paired checkpoints for research comparison; the intended production-style reference in this repo is `full_ft_best_model.pt`. |
| |
|
| | ## Related Resources |
| |
|
| | - Dataset: [EXOKERN/contactbench-forge-peginsert-v0](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0) |
| | - Domain-randomized successor: [EXOKERN/skill-forge-peginsert-v0.1.1](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0.1.1) |
| | - Evaluation CLI: [github.com/Exokern/exokern_eval](https://github.com/Exokern/exokern_eval) |
| | - Organization page: [huggingface.co/EXOKERN](https://huggingface.co/EXOKERN) |
| |
|