Wrist-stream ablation

Checkpoint mot_df_vt_a9dfilm_dforce_isolate_adaln_wrist_mixed (mixed wrist-availability training: 32 no-wrist + 21 wrist episodes, per-clip wrist dropout p=0.2), evaluated with and without the wrist-camera stream on three held-out splits. "Without" forces the model into its 3-stream (view + tactile L/R) mode at inference (--force_no_wrist); it never removes tactile or view. All pixel metrics use the pad-latent-restored Wan2.2 decode (fixed 2026-09-15 -- see the pad_latent note below); frames 0-7 are clean GT context, 8-15 are predicted.

Every episode below is from the test split (never used in training, never used to pick the checkpoint). Full manifest (mixed_mb_wrist_holdout.json, 49 train / 4 val / 7 test episodes, 162912/7726/19707 windows):

train 49 episodes, 162912 windows -- gradient updates only val motherboard_0510_episode_005, motherboard_0510_episode_006, motherboard_0911_episode_002_seg00, motherboard_0912_episode_003 -- checkpoint selection only (never shown here) test motherboard_0511_episode_009, motherboard_0519_episode_002, motherboard_0909_episode_000, motherboard_0909_episode_001, motherboard_0909_episode_002, motherboard_0911_episode_008_seg00, motherboard_0912_episode_002 -- everything shown below

no wrist

No-wrist episodes (0511_ep009, 0519_ep002)

motherboard_0511_episode_009 test motherboard_0519_episode_002 test

32 held-out windows, predicted frames only (context frames excluded)
streamwith wrist
camera view24.76 dB
SSIM 0.83 · LPIPS 0.09
tactile left41.66 dB
SSIM 0.98 · LPIPS 0.06
tactile right38.62 dB
SSIM 0.97 · LPIPS 0.09

Sample rollouts

wrist indist

Wrist episodes, in-distribution (0911_ep008_seg00, 0912_ep002)

motherboard_0911_episode_008_seg00 test motherboard_0912_episode_002 test

32 held-out windows, predicted frames only (context frames excluded)
streamwith wristwith wrist
camera view24.64 dB
SSIM 0.81 · LPIPS 0.09
24.59 dB
SSIM 0.81 · LPIPS 0.09
wrist left15.04 dB
SSIM 0.42 · LPIPS 0.35
n/a
(no wrist cameras)
wrist right16.79 dB
SSIM 0.52 · LPIPS 0.30
n/a
(no wrist cameras)
tactile left43.42 dB
SSIM 0.98 · LPIPS 0.04
43.63 dB
SSIM 0.98 · LPIPS 0.04
tactile right46.79 dB
SSIM 0.99 · LPIPS 0.03
46.80 dB
SSIM 0.99 · LPIPS 0.03

Sample rollouts

wrist ood

Wrist episodes, val0909 session -- OOD (hardware/calibration session held out of training)

motherboard_0909_episode_000 test motherboard_0909_episode_001 test motherboard_0909_episode_002 test

32 held-out windows, predicted frames only (context frames excluded)
streamwith wristwith wrist
camera view20.86 dB
SSIM 0.78 · LPIPS 0.15
21.49 dB
SSIM 0.79 · LPIPS 0.14
wrist left13.51 dB
SSIM 0.42 · LPIPS 0.48
n/a
(no wrist cameras)
wrist right12.91 dB
SSIM 0.38 · LPIPS 0.50
n/a
(no wrist cameras)
tactile left31.95 dB
SSIM 0.97 · LPIPS 0.15
32.08 dB
SSIM 0.97 · LPIPS 0.15
tactile right28.59 dB
SSIM 0.95 · LPIPS 0.17
33.08 dB
SSIM 0.96 · LPIPS 0.16

Sample rollouts

Contact scenarios

The random N=32 windows above mix in a lot of free-motion / no-contact time. These are the top-16 (per group) windows by fraction of the 8 predicted fps15 frames with max(force_left, force_right) > 0.5N (contact_frac 0.88-1.00), spread across episodes -- see select_contact_test_windows.py. Same with/without-wrist toggle, same pad-latent decode.

no wrist

No-wrist episodes

motherboard_0511_episode_009 test motherboard_0519_episode_002 test

16 held-out windows, predicted frames only (context frames excluded)
streamwith wrist
camera view23.36 dB
SSIM 0.80 · LPIPS 0.12
tactile left38.84 dB
SSIM 0.97 · LPIPS 0.07
tactile right36.23 dB
SSIM 0.96 · LPIPS 0.11

Sample rollouts (all genuine contact)

wrist indist

Wrist episodes, in-distribution

motherboard_0911_episode_008_seg00 test motherboard_0912_episode_002 test

16 held-out windows, predicted frames only (context frames excluded)
streamwith wristwith wrist
camera view25.46 dB
SSIM 0.84 · LPIPS 0.08
25.30 dB
SSIM 0.83 · LPIPS 0.08
wrist left15.80 dB
SSIM 0.41 · LPIPS 0.32
n/a
(no wrist cameras)
wrist right18.23 dB
SSIM 0.60 · LPIPS 0.21
n/a
(no wrist cameras)
tactile left35.84 dB
SSIM 0.96 · LPIPS 0.09
35.53 dB
SSIM 0.96 · LPIPS 0.09
tactile right47.29 dB
SSIM 0.99 · LPIPS 0.03
46.81 dB
SSIM 0.99 · LPIPS 0.03

Sample rollouts (all genuine contact)

wrist ood

Wrist episodes, val0909 session -- OOD

motherboard_0909_episode_000 test motherboard_0909_episode_001 test motherboard_0909_episode_002 test

16 held-out windows, predicted frames only (context frames excluded)
streamwith wristwith wrist
camera view20.81 dB
SSIM 0.77 · LPIPS 0.15
21.48 dB
SSIM 0.79 · LPIPS 0.14
wrist left12.96 dB
SSIM 0.38 · LPIPS 0.48
n/a
(no wrist cameras)
wrist right13.32 dB
SSIM 0.38 · LPIPS 0.48
n/a
(no wrist cameras)
tactile left31.37 dB
SSIM 0.96 · LPIPS 0.15
31.56 dB
SSIM 0.96 · LPIPS 0.15
tactile right27.90 dB
SSIM 0.94 · LPIPS 0.19
31.82 dB
SSIM 0.95 · LPIPS 0.18

Sample rollouts (all genuine contact)

8s long-horizon rollouts

Keep-1 autoregressive sliding-window rollout driven by the episode's recorded actions, one real long-horizon episode per split. Decoded with the same pad-latent-restored convention: decoded frame i is exactly raw frame i from the seed window's start (no more 3-frame offset / blurred first frame).

long  /  motherboard_0511_episode_009   test   (8s keep-1 rollout)

with wrist

long  /  motherboard_0519_episode_002   test   (8s keep-1 rollout)

with wrist

long  /  motherboard_0909_episode_000   test   (8s keep-1 rollout)

with wrist
with wrist

long  /  motherboard_0909_episode_001   test   (8s keep-1 rollout)

with wrist
with wrist

long  /  motherboard_0909_episode_002   test   (8s keep-1 rollout)

with wrist
with wrist

long  /  motherboard_0911_episode_008_seg00   test   (8s keep-1 rollout)

with wrist
with wrist

long  /  motherboard_0912_episode_002   test   (8s keep-1 rollout)

with wrist
with wrist