Ivan Domrachev · sinew · 2026 · → chapters · ↓ detail


Across embodiments: manipulator → dexterous hand → gloves.

(a) Joint-Embedding (b) Generative (c) JEPA



Strong transferable backbones — but representation collapse & limited prediction.


Pixel-level objective → reproduces noise, weaker inductive bias for downstream tasks.


Best of both: latent prediction → versatile features, no pixel noise. We build on V-JEPA.


Plan: find datasets → train supervised baselines → derive SSL approaches.

| Dataset | Task | Samples | F/T quality | Variety |
|---|---|---|---|---|
| FMB | Peg insertion | 1 844 | Poor | Poor |
| REASSEMBLE | Object insert / remove | 2 262 | Perfect | Mediocre |
| RH20T | Diverse manipulation | 12 666 | Mediocre | Huge |
16 772 rollouts · 178 hours of high-freq F/T (after heavy preprocessing).
Plan: train on each separately, then combine for joint training.
cos-lift matters — a high cosine can be trivial when force barely changes direction.
Temporal Convolutional Network — stacked 1-D dilated convolutions over the frame sequence.
Encoder frozen → cache features once → train a small TCN in minutes.
Three heads predict contact · direction · magnitude together.

| FMB | F1 | dir | lift | MAE |
|---|---|---|---|---|
| in-dist | 0.779 | 0.965 | +0.015 | 1.06 |
| OOD (9th peg) | 0.767 | 0.953 | +0.042 | 1.06 |

| F1 | MAE | dir | lift | |
|---|---|---|---|---|
| REASSEMBLE | 0.874 | 0.74 | 0.906 | +0.34 |
| FMB | 0.779 | 1.06 | 0.965 | +0.015 |
| split | F1 | MAE | dir | lift |
|---|---|---|---|---|
| in-dist | 0.71 | 1.86 | 0.39 | 0.27 |
| OOD task | 0.68 | 2.23 | 0.60 | 0.33 |
| OOD robot | 0.60 | 1.96 | 0.26 | 0.17 |
| OOD both | 0.57 | 1.55 | 0.25 | 0.08 |


| model | F1 | dir |
|---|---|---|
| DINOv2-B (image) | 0.52 | — |
| V-JEPA ViT-B (video) | 0.64 | — |
| V-JEPA ViT-L | 0.76 | 0.969 |
| V-JEPA ViT-g (1B) | 0.764 | 0.974 |
| ViT-L E2E (LoRA) | 0.779 | 0.965 |
| head | F1 |
|---|---|
| TCN | 0.768 |
| BiGRU | 0.723 |
| Transformer | 0.689 |
Predict Mag+Dir+Contact together (0.51→0.78). Mean pooling ≈ attentive → keep mean.
Open problem: cross-domain transfer (camera, robot, dataset). → motivates SSL.

Train the video tower to a frozen, scene-blind force teacher — DINO self-distillation, no labels, no negatives.
Scene-blind anchor → video forgets the camera → robot-agnostic embedding. Freeze the aligned trunk.
Concat the frozen aligned trunk (384) onto raw V-JEPA (2048) → 2432-d → TCN 3-head.
Augment, don't replace: can only add (zero in-dist cost). Only stage that uses labels.
| approach | idea | outcome |
|---|---|---|
| Cross-view DINO | align camera ↔ camera (video only) | collapses (eff-rank 33) — fake invariance |
| InfoNCE force-align | contrastive video ↔ force | loss floors (force autocorrelation) |
| Replace features | force-aligned embedding alone | OOD win, but lossy in-distribution |
| Augment (ours) | concat force-aligned onto raw | OOD win · zero in-dist cost |
| Joint training | train on both datasets (labeled) | reaches native ceilings; SSL ties |
DINO-style camera↔camera was the natural baseline — it collapsed. Force as the anchor is what worked.
| held-out camera | contact F1 | direction |
|---|---|---|
| trivial (constant) | 0.46 | 0.47 |
| V-JEPA + TCN | 0.28 | 0.41 |
| + force-augment | 0.70 | 0.78 |
| direction cosine | REASS→FMB | FMB→REASS |
|---|---|---|
| trivial (constant) | 0.69 | 0.47 |
| V-JEPA + TCN | 0.41 | 0.40 |
| + force-augment (UDA) | 0.87 | 0.83 |
t-SNE by camera (REASS, 4 views): Raw = 4 clean clusters → encodes which camera. Force-JEPA = fully intermixed → viewpoint forgotten.
| cam NMI (want low) | |
|---|---|
| Raw | 1.00 |
| Force-JEPA | 0.009 |
t-SNE by task (insert / remove): Force-JEPA shows the cleanest task separation — it strips the camera but retains what is happening.
| task purity (want high) | |
|---|---|
| Raw | 0.63 |
| Force-JEPA | 0.71 |
t-SNE by robot (RH20T, 4 robots): Raw separates robots by scene/embodiment. Force-JEPA intermixes them — useful, since v2f wants a robot-agnostic force signal.
| robot NMI (descriptive) | |
|---|---|
| Raw | 0.53 |
| Force-JEPA | 0.10 |

The trap: a collapsed encoder fakes invariance. So read cross-view closeness with diversity.
| cross-view | eff-rank | |
|---|---|---|
| Raw | view-variant | 396 |
| DINO | invariant* | 33* |
| Force-JEPA | invariant | 61 |
*DINO collapses (uniformity≈0) — fake invariance. Force-JEPA sits in the good corner; CKA vs raw ≈ 0.01 (orthogonal).
| regime | winner | signal |
|---|---|---|
| contact event (H1) | feasible ✓ | clean force → F1 0.87 |
| in-distribution force | frozen V-JEPA + TCN | REASSEMBLE lift +0.34 |
| unseen camera | force-augment SSL | F1 0.28 → 0.70 |
| cross-dataset direction | force-augment (UDA) | cos 0.40 → 0.85 |
| cross-robot (H3) | open | major room |
Contact works, direction is partial, cross-robot stays open — here's how we attack it next.
Push cross-dataset transfer further — and stop testing only on public data. Bring in in-house lab recordings as both new held-out domains and training sources.
Cross-domain transfer (H3) is the standing open problem.
Extend force recovery beyond a single gripper toward dexterous manipulation. Sourcing FEEL and an Origami dataset now.
Early — a direction, not a result.
Pool everything together and train jointly. Hypothesis: does scale unlock the generalization per-dataset training couldn't?
A hypothesis to test — not a proven result.
SSL only helped under severe-but-bridgeable gaps — so the bar is generalization we can prove, not hope for.
Combined corpus is roughly Sparsh-scale:
| F/T data | ~178 h |
| Rollouts | ~16.7k |
| Samples @10 Hz | ~6.4M |
| Sparsh (tactile imgs) | ~462k |
Unproven: does pooling all datasets unlock cross-robot generalization?
These are the directions the next chapter's funding & startup plan has to resource.
Video-only force recovery doesn't fully work yet — contact & magnitude land, direction & cross-robot don't. Now: who funds closing the gap.
Three tracks — compute, grant, startup — built on a promising but incomplete result.
Inception-style ask: GPUs.
We already hold a Sparsh-scale dataset and baselines showing video→force works.
Sparsh trained on 8×A100 — exactly what NVIDIA can provide.
The one missing ingredient to scale is compute — not data, not a result.
Ask = 8×A100 (Sparsh-equivalent).
We have shown a proof-of-concept for the force-prediction task.
Plan: apply to the bilateral program and continue this direction.
Open governance question: does running a startup conflict with or interfere with the academic grant?
Unresolved — flag, not a blocker.
Thesis: dexterous force-data recovery for data factories.
Recover the missing force modality from vision-only manipulation data, then sell it to data-collection / robot-learning companies.
Must-prove dependency: force data actually improves downstream training — no proof, no demand.
Contact gate = debounce(‖F‖ > τ, N). The cached-feature pipeline behind the published numbers already uses raw N=1 (no debounce); the N=5 rule lived only in a legacy label path. We swept N ∈ {1,3,5} over the train-target and eval-GT independently; the matched diagonal (train-N = eval-N) is shown.
| dataset | N=1 | N=3 | N=5 |
|---|---|---|---|
| REASSEMBLE | 0.887 | 0.891 | 0.888 |
| FMB | 0.777 | 0.778 | 0.751 |
| RH20T* | 0.551 | 0.553 | — |
*single τ / capped / per-robot — confounded
No contact-F1 gain from the debounce on any dataset → keep N=1. Each model peaks on its own eval-N, but the matched diagonal is flat — the rule only changes what counts as a contact, not how well it’s predicted.