force-from-vision on FMB · R2S2R pipeline · 2026-05-22 snapshot
research 33/33 wave 1 sim · 11/11 wave 2 RL · ⅖ phases wave 4 v2f scaffold wave 4 v2f training wave 3 data-gen wave 4b real fine-tune
Companion to the v2 exec deck at /slides/. Live task board at /tracker/.
video2force (v2f) — predict 6-D EE wrench from RGB(+depth) for downstream contact-rich policies. End deliverable: a model + benchmark on FMB.
RL = data factory (not deployed policy). Sim F/T = direct label via simulated wrench. Visual sim2real gap: χ² = 1.88 pre-Tier 1 (FoAR-style threshold = 1.0).
sinew-35) + v2f stage-2 training (sinew-55) both queued behind itsinew-39) — open, validates that the visual fixes closed the gap50 bd issues · 45 closed / 3 in_progress / 2 open
sinew-1 + sinew-5 epicssinew-6 Epic Asinew-28 Epic Bsinew-40,42,44,45,47,52,55Live state: /tracker/ (kanban + list, polls every 10s)
All 33 closed. Output: docs/r2s2r_research_report.html §12 = binding implementation plan.
Epic A (sinew-6, feature). SimWorker primary · RLWorker support on reward.
A.1 SubstageDetector class (5 predicates: grasp / lift / place / regrasp / insert)A.2 Threshold-envelope startup assertionA.3 Inverted-physics sanity probes (5/primitive)A.4 Temporal-smoothness check on detector predicatesA.5 peg_tip_local_offset baked on peg USDsA.6 read_eef_wrench_ee w/ clean + noisy pathsA.7 Batched grab_franka_view(num_envs)A.8 Per-env reset_episode(env_ids)A.9 Observation packager isaac_twins.fmb.obs.get_obsA.10 Φ_insert v2 reward function (RLWorker)A.11 Reward-decomposition logging hook (RLWorker)sinew-50 validation: SubstageDetector predicates against sinew-5.20 replay traces → GREENSubstageDetector independently validated by replaying FMB ground-truth trajectories in sim — predicates fire at correct primitive boundaries.
Epic B (sinew-28). RLWorker primary.
| Issue | Title | Result |
|---|---|---|
B.0 | Epic A integration smoke | FmbInsertionEnv + reward end-to-end green |
B.1 | FmbInsertionEnv → DirectRLEnv subclass | landed |
B.2 | EEDeltaCorruptedActionMapper | SimDist recipe wired |
B.3 | Sub-expert ckpt preservation | 50-iter cadence |
B.4 | Curriculum scaffolding | phase advance on IQM > 0.7 |
B.5 | PPO Phase 1 (grasp-only) | IQM 0.83 / N=5 seeds (0.81–0.85) |
sinew-51 | wandb per-stage + per-peg success | live on sinew-r2s2r/phase-1 |
sinew-56 | EE-delta DIK init bug | fixed (was crashing every env reset, falling back to joint-delta) |
Phase 1 IQM = 0.83 (mean 0.83, range 0.81–0.85 across N=5 seeds). Comfortably above the 0.70 curriculum-advance gate.
Assignee: RLWorker. Currently blocked on DL_A6000 reboot pending. Sub-stages 2 (grasp + lift), 3 (+ place), 4 (+ regrasp), 5 (+ insert) train sequentially via the curriculum gate from Phase 1.
sinew-r2s2r/phase-{2,3,4,5}Live status: /tracker/#sinew-35
VisionWorker. Pre-data scaffolds for the force-from-vision predictor.
| Issue | What |
|---|---|
sinew-40 | v2f model arch (28 M params per sinew-43 revision) |
sinew-42 | train loop |
sinew-44 | dataloader |
sinew-45 | eval harness |
sinew-47 | wandb wrapper + branch consolidation |
sinew-52 | FmbEpisodeSource adapter (commit adae620) |
sinew-54 | FMB-real subset: 193 eps / 17 GB / 50 shards filtered |
Pre-data work fully landed. Training is the next step — gated on compute, not on code.
Assignee: VisionWorker. Parallel to PPO Phase 2-5, also blocked on DL_A6000 reboot. Goal: validate the scaffolded train loop on the 193-episode FMB-real subset before scaling to full sim pretrain.
Live status: /tracker/#sinew-55
Collect a large sim rollout dataset (target ≥10 k episodes) using the converged Wave 2 PPO policy as the actor, with full ground-truth labels per sinew-5.19 spec: RGB(+depth) per camera, tcp_pose / tcp_vel / clean wrench / per-axis joint vel / contact map / segmentation / substage labels.
Spec: docs/research/sim_recording_spec.md. Dependency: Wave 2 Phase 5.
Once Wave 4 sim-pretrain v2f converges, fine-tune on the FMB-real subset (sinew-54: 193 eps / 17 GB / 50 shards) to close the visual sim2real gap on real-world frames.
FmbEpisodeSource) already mapped to v2f schemasinew-39 will re-measure χ² to confirmsinew-36 procedural cable mesh in wrist field-of-viewsinew-37 lab-clutter distractor objectssinew-38 background workshop texturesinew-39 OPEN: re-measure χ² post-Tier 1 to confirm gap closed (Researcher). Until then, the "Tier 1 worked" claim is untested.
Figure: docs/research/figures/sim2real_visual_gap_grid.png (4×2 cam grid, sim/real side-by-side). Memo: docs/research/sim2real_visual_gap.md.
Stack: python3 stdlib HTTP server (subclass) + tailscale funnel. Dynamic /tracker/data.json shells out to bd list --json with 3 s in-memory cache.
sinew-robotics/isaac_twins — sim scene + USDs (SimWorker)sinew-robotics/isaaclab_sinew — RL env + PPO (RLWorker)sinew-robotics/sinew_video2force — v2f predictor (VisionWorker)sinew-robotics/sinew_r2s2r_web — this site + docs (WebWorker)Per-agent git identity, no user-co-author lines. Branch pattern: <agent>/<bd-id>-<slug> → --no-ff merge to main.
sinew-35 RLWorker — PPO Phase 2-5 · blocked on A6000 rebootsinew-55 VisionWorker — v2f stage-2 training · blocked on A6000 rebootsinew-58 WebWorker — this deck (closing on push)sinew-28 Epic B feature — closes when Phase 2-5 landssinew-39 Researcher — re-measure χ² post-Tier 1sinew-57 P3 — disk-gate calibration in deployment runbook| Track | What | Owner | bd |
|---|---|---|---|
| RL | PPO Phase 2-5 (lift → place → regrasp → insert) | RLWorker | sinew-35 |
| v2f | stage-2-from-scratch training on FMB-real subset | VisionWorker | sinew-55 |
sinew-39 re-measures χ² post-Tier 1; informs Wave 4b fine-tune burdenRefresh cadence: this deck regenerates on demand (no auto-build yet — see sinew-22 backlog for critical-path overlay on the tracker). Source: sinew_r2s2r_web/src/progress_slides.html.
research locked · sim stable · RL on Phase 1 · v2f scaffold green · two training runs queued behind compute
33 / 33 11 / 11 ⅖ scaffold train ⏳ datagen fine-tune
snapshot 2026-05-22 · live tracker · v2 exec deck · research report