EXOKERN1's picture
Update README card
dce94f2 verified
---
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 |
![EXOKERN skill v0 benchmark summary](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0/resolve/main/figures/benchmark_summary.png)
*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.
![Architecture](https://huggingface.co/EXOKERN/skill-forge-peginsert-v0/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` | 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)