Add model card
Browse files
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** |
|
| 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.
|
| 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 |
+

|
| 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
|