EXOKERN1's picture
Update README card
1601fe9 verified
---
pretty_name: "EXOKERN Skill v0.1.1 - Robust Peg Insertion Under Domain Randomization"
license: cc-by-nc-4.0
pipeline_tag: robotics
library_name: pytorch
tags:
- robotics
- diffusion-policy
- force-torque
- contact-rich
- manipulation
- insertion
- domain-randomization
- sim-to-real
- isaac-lab
- franka
- physical-ai
- lerobot
datasets:
- EXOKERN/contactbench-forge-peginsert-v0.1.1
metrics:
- success_rate
- avg_contact_force_n
- peak_contact_force_n
model-index:
- name: EXOKERN Skill v0.1.1 - Peg Insertion (full_ft)
results:
- task:
type: robotics
name: Peg insertion
dataset:
name: EXOKERN ContactBench v0.1.1
type: EXOKERN/contactbench-forge-peginsert-v0.1.1
metrics:
- type: success_rate
value: 100.0
name: Success Rate (%)
- type: avg_contact_force_n
value: 3.67
name: Average Contact Force (N)
- type: peak_contact_force_n
value: 10.64
name: Peak Contact Force (N)
---
# EXOKERN Skill v0.1.1 - Robust Peg Insertion Under Domain Randomization
`skill-forge-peginsert-v0.1.1` is the domain-randomized reference model release in the EXOKERN catalog. It is trained on [EXOKERN ContactBench v0.1.1](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0.1.1) and ships the same paired comparison structure as v0:
- `full_ft_best_model.pt`: primary checkpoint with 22D observations, including force/torque input
- `no_ft_best_model.pt`: ablation checkpoint with the same architecture and 16D state-only observations
This release should be read as a robustness benchmark first. Both policies remain successful under severe domain randomization, and the repo is valuable precisely because it makes the mixed result on force reduction explicit.
## Quick Facts
| Item | Value |
| --- | --- |
| Task | Peg insertion in simulation under domain randomization |
| Dataset | [EXOKERN/contactbench-forge-peginsert-v0.1.1](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0.1.1) |
| Simulator | NVIDIA Isaac Lab (Isaac Sim 4.5) |
| Robot | Franka FR3 |
| Architecture | TemporalUNet1D diffusion policy |
| Parameters | 71.3M |
| Observation horizon | 10 frames |
| Prediction / execution horizon | 16 / 8 actions |
| Seeds evaluated | 42, 123, 7 |
| Total rollouts reported | 600 |
## Benchmark Summary
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 Contact Force (N) | Avg Episode Time (s) |
| --- | ---: | ---: | ---: | ---: |
| `full_ft` | 100.0 | 3.67 +/- 0.45 | 10.63 | 25.63 |
| `no_ft` | 100.0 | 3.37 +/- 0.06 | 10.33 | 25.73 |
![EXOKERN skill v0.1.1 benchmark summary](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0.1.1/resolve/main/figures/benchmark_summary.png)
*Figure: multi-seed benchmark summary built from the published `eval_seed42/123/7.json` artifacts.*
Per-seed results:
| Seed | Condition | Success Rate | Avg Force (N) | Peak Force (N) | Avg Time (s) |
| --- | --- | ---: | ---: | ---: | ---: |
| 42 | `full_ft` | 100.0 | 3.24 | 10.44 | 25.61 |
| 42 | `no_ft` | 100.0 | 3.38 | 10.38 | 25.73 |
| 123 | `full_ft` | 100.0 | 4.12 | 10.57 | 25.74 |
| 123 | `no_ft` | 100.0 | 3.34 | 10.32 | 25.79 |
| 7 | `full_ft` | 100.0 | 3.69 | 10.93 | 25.54 |
| 7 | `no_ft` | 100.0 | 3.37 | 10.31 | 25.68 |
Interpretation:
- This release demonstrates robust task completion under a much harder collection regime than v0.
- On this particular peg-in-hole setup, domain randomization largely closed the force gap between `full_ft` and `no_ft`.
- That does not prove force/torque is unnecessary in general. It shows that this release is best used as a robust benchmark and an honest reference point for harder future tasks.
## What Changed Compared To v0
| Topic | v0 | v0.1.1 |
| --- | --- | --- |
| Dataset regime | Mostly fixed conditions | Multi-layer domain randomization |
| Dataset size | 2,221 episodes / 330,929 frames | 5,000 episodes / 745,000 frames |
| Robot | Franka Emika Panda | Franka FR3 |
| Force reduction takeaway | Clear F/T advantage | Inconclusive on this task |
| Best use | Clean baseline | Robustness benchmark |
## Architecture
This release uses the same 1D Temporal U-Net diffusion policy family as v0.
![Architecture](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0.1.1/resolve/main/architecture.png)
| 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` | Ablation checkpoint without force/torque input |
| `inference.py` | Self-contained inference helper and model definition |
| `config.yaml` | Training, dataset, and environment configuration |
| `eval_seed42.json` | Seed 42 evaluation artifact |
| `eval_seed123.json` | Seed 123 evaluation artifact |
| `eval_seed7.json` | Seed 7 evaluation artifact |
| `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.1.1/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.1.1",
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 |
| Physics rate | 120 Hz |
| Control rate | 15 Hz |
| Domain randomization | Enabled in the training dataset |
## 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_v011_2026,
title = {EXOKERN Skill v0.1.1: Robust Peg Insertion Under Domain Randomization},
author = {{EXOKERN}},
year = {2026},
howpublished = {\url{https://huggingface.co/EXOKERN/skill-forge-peginsert-v0.1.1}},
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.
- Reported robustness is specific to the peg-in-hole task and the randomization ranges documented in the paired dataset card.
- The ablation result is mixed: use this repo to study robustness, not to overclaim a universal force/torque effect.
- 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.1.1](https://huggingface.co/datasets/EXOKERN/contactbench-forge-peginsert-v0.1.1)
- Baseline predecessor: [EXOKERN/skill-forge-peginsert-v0](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0)
- Evaluation CLI: [github.com/Exokern/exokern_eval](https://github.com/Exokern/exokern_eval)
- Organization page: [huggingface.co/EXOKERN](https://huggingface.co/EXOKERN)