Hemanth21k commited on
Commit
7072c71
·
verified ·
1 Parent(s): 7e2f24f

Add model card

Browse files
Files changed (1) hide show
  1. README.md +42 -3
README.md CHANGED
@@ -30,15 +30,28 @@ on the TUM SonATA robotic ultrasound subset of the
30
  The model controls a Franka Panda robot performing ultrasound probe manipulation tasks
31
  (placement, transverse scanning, anatomical navigation) on abdominal, thyroid, and arm phantoms.
32
 
 
 
 
 
 
 
 
 
 
 
33
  ## Model Details
34
 
35
  | Property | Value |
36
  |----------|-------|
37
  | **Base model** | nvidia/GR00T-H-N1.7 |
 
 
38
  | **Embodiment** | `TUM_SONATA_FRANKA` |
39
  | **Robot** | Franka Panda + ultrasound probe |
40
  | **Task** | Robotic sonography — probe placement, scanning, navigation |
41
  | **Action space** | 9D REL_XYZ_ROT6D (relative EEF pose, 50-step horizon @ 30Hz) |
 
42
  | **State inputs** | 7D joint angles + 6D force/torque |
43
  | **Camera inputs** | Third-person view · Wrist camera · Ultrasound image |
44
  | **Language** | Natural language instructions per episode |
@@ -51,14 +64,13 @@ The model controls a Franka Panda robot performing ultrasound probe manipulation
51
  | **Episodes** | 2,397 total · 1,677 used for training |
52
  | **Frames** | 633,604 total @ 30 Hz |
53
  | **Hardware** | 6 × NVIDIA RTX A6000 (49 GB) |
54
- | **Training steps** | 20,000 |
55
  | **Global batch size** | 192 (32 per GPU) |
56
  | **Learning rate** | 8e-4 peak, cosine decay, 5% warmup |
57
  | **Optimizer** | AdamW (weight decay 1e-5) |
58
  | **Tuned components** | Projector + diffusion action head (backbone frozen) |
59
  | **Framework** | DeepSpeed ZeRO-2, PyTorch 2.7 |
60
- | **Final loss** | ~0.026 at step 20,000 |
61
- | **Training time** | ~28 hours |
62
 
63
  ### Training Notes
64
 
@@ -66,6 +78,33 @@ A gradient spike (loss ≈ 55, grad norm ≈ 155) occurred at approximately step
66
  the learning rate reached its peak. Training recovered automatically via gradient clipping.
67
  For future runs at this batch size, a peak learning rate of **4e-4** or lower is recommended.
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  ## Usage
70
 
71
  ```python
 
30
  The model controls a Franka Panda robot performing ultrasound probe manipulation tasks
31
  (placement, transverse scanning, anatomical navigation) on abdominal, thyroid, and arm phantoms.
32
 
33
+ ## Demo
34
+
35
+ ![Unified demo — GR00T-H-N1.7 on TUM SonATA](https://raw.githubusercontent.com/Hemanth21k/world-models/main/docs/assets/demo_2050_open_loop.gif)
36
+
37
+ Open-loop inference: probe positioning → transverse-plane traversal. One frame shows the live
38
+ cameras (third-person / wrist / ultrasound), predicted vs. ground-truth action curves, position
39
+ and orientation tracking error, the commanded Franka motion (GT green-ghost vs. predicted
40
+ orange), and the EEF path. Full video + reproducible pipeline:
41
+ [Hemanth21k/world-models](https://github.com/Hemanth21k/world-models).
42
+
43
  ## Model Details
44
 
45
  | Property | Value |
46
  |----------|-------|
47
  | **Base model** | nvidia/GR00T-H-N1.7 |
48
+ | **Backbone (frozen)** | NVIDIA Cosmos-Reason2-2B (Qwen3-VL); features @ layer 16, dim 2048 |
49
+ | **Action head** | flow-matching Diffusion Transformer (4 denoising steps) |
50
  | **Embodiment** | `TUM_SONATA_FRANKA` |
51
  | **Robot** | Franka Panda + ultrasound probe |
52
  | **Task** | Robotic sonography — probe placement, scanning, navigation |
53
  | **Action space** | 9D REL_XYZ_ROT6D (relative EEF pose, 50-step horizon @ 30Hz) |
54
+ | **Conditioning** | single-frame / Markovian (no observation history) |
55
  | **State inputs** | 7D joint angles + 6D force/torque |
56
  | **Camera inputs** | Third-person view · Wrist camera · Ultrasound image |
57
  | **Language** | Natural language instructions per episode |
 
64
  | **Episodes** | 2,397 total · 1,677 used for training |
65
  | **Frames** | 633,604 total @ 30 Hz |
66
  | **Hardware** | 6 × NVIDIA RTX A6000 (49 GB) |
67
+ | **Training steps** | 16,000 (~0.8 epoch; stopped early — see notes) |
68
  | **Global batch size** | 192 (32 per GPU) |
69
  | **Learning rate** | 8e-4 peak, cosine decay, 5% warmup |
70
  | **Optimizer** | AdamW (weight decay 1e-5) |
71
  | **Tuned components** | Projector + diffusion action head (backbone frozen) |
72
  | **Framework** | DeepSpeed ZeRO-2, PyTorch 2.7 |
73
+ | **Final loss** | ~0.025 at step 16,000 (from 1.57; ~0.039 → 0.025 over the last 6k steps) |
 
74
 
75
  ### Training Notes
76
 
 
78
  the learning rate reached its peak. Training recovered automatically via gradient clipping.
79
  For future runs at this batch size, a peak learning rate of **4e-4** or lower is recommended.
80
 
81
+ Training was stopped at step 16,000 (≈0.8 epoch). The loss was still decreasing but
82
+ decelerating, and test-split error was already strong (see Evaluation); a longer / lower-LR /
83
+ multi-epoch run is left as future work.
84
+
85
+ ## Evaluation
86
+
87
+ Held-out **test split (482 episodes)**. Per-step error of the predicted vs. ground-truth EEF
88
+ action, swept over the re-inference horizon `H`. Position = XYZ L2; orientation = geodesic
89
+ angle; baseline = zero-motion (hold last observed pose). Seeded for reproducibility.
90
+
91
+ | Mode | H | Pos (cm) | Rot (°) | Baseline pos (cm) | Baseline rot (°) |
92
+ |------|---|----------|---------|-------------------|------------------|
93
+ | Open-loop | 1 | **0.09** | 1.07 | 0.19 | 0.53 |
94
+ | Open-loop | 8 | 0.37 | 1.47 | 0.84 | 2.37 |
95
+ | Open-loop | 16 | 0.64 | 2.15 | 1.55 | 4.39 |
96
+ | Open-loop | 50 | 1.61 | 4.92 | 4.24 | 12.70 |
97
+ | Rollout | 16 | 4.72 | 14.14 | 1.55 | 4.39 |
98
+
99
+ - **Open-loop** (true state each step): sub-cm to ~6 mm, beating the zero-motion baseline
100
+ ~2–2.6× on position; degrades gracefully as re-inference gets sparser.
101
+ - **Rollout** (predicted EEF pose fed back as the reference state): errors compound (~4 cm /
102
+ ~14°). Note this rollout is *hybrid* — only the EEF pose is fed back; cameras and the rest of
103
+ the state come from the dataset (a true closed loop needs a world model).
104
+
105
+ Full sweep (all horizons, both modes, std/median/max) and the evaluation code are in the
106
+ [GitHub repo](https://github.com/Hemanth21k/world-models).
107
+
108
  ## Usage
109
 
110
  ```python