birbirll commited on
Commit
938841d
·
verified ·
1 Parent(s): 2e087e6

model card

Browse files
Files changed (1) hide show
  1. README.md +61 -0
README.md ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: nvidia/GR00T-N1.6-3B
4
+ tags:
5
+ - robotics
6
+ - gr00t
7
+ - unitree-g1
8
+ - inspire-hand
9
+ - manipulation
10
+ datasets:
11
+ - birbirll/g1-inspire-piston-pick-place
12
+ ---
13
+
14
+ # GR00T N1.6 — G1 + Inspire piston pick-and-place
15
+
16
+ Fine-tune of `nvidia/GR00T-N1.6-3B` on
17
+ [birbirll/g1-inspire-piston-pick-place](https://huggingface.co/datasets/birbirll/g1-inspire-piston-pick-place)
18
+ (102 success episodes, LeRobot v2.1). Picks up a piston from a table with the
19
+ right Inspire hand (Unitree G1, fixed base). Closed-loop verified in IsaacLab.
20
+
21
+ ## Contents
22
+
23
+ - Model weights (bf16 safetensors) + processor/experiment configs — loadable
24
+ with Isaac-GR00T's `run_gr00t_server.py` (`--embodiment_tag NEW_EMBODIMENT`).
25
+ - **`g1_inspire_modality_config.py`** — the modality config used for training
26
+ (register via `--modality-config-path`): state = arms 14 + hands 12 + waist 3
27
+ (dims 29:63 of the raw state are unused tactile); action = 30-D
28
+ (left_arm 7 | right_arm 7 | left_hand 6 | right_hand 6 | base_height 1 |
29
+ navigate 3), 30-step horizon; arms trained RELATIVE (decoded to absolute by
30
+ the server).
31
+
32
+ ## Training recipe (single RTX 4090, ~2.5 h)
33
+
34
+ ```bash
35
+ python gr00t/experiment/launch_finetune.py \
36
+ --base-model-path nvidia/GR00T-N1.6-3B \
37
+ --dataset-path <local dataset> \
38
+ --embodiment-tag NEW_EMBODIMENT \
39
+ --modality-config-path g1_inspire_modality_config.py \
40
+ --num-gpus 1 --output-dir ./out \
41
+ --max-steps 10000 --save-steps 1000 --save-total-limit 2 \
42
+ --global-batch-size 8 --gradient-accumulation-steps 4 \
43
+ --state-dropout-prob 0.8 \
44
+ --color-jitter-params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08
45
+ ```
46
+
47
+ Key knobs: `--state-dropout-prob 0.8` (forces vision conditioning — without it
48
+ the policy shortcuts through proprioception and ignores the camera);
49
+ effective batch 32; default LR 1e-4; loss ~1.16 → ~0.011. On 24 GB GPUs you
50
+ must additionally set the optimizer to `paged_adamw_8bit` and enable gradient
51
+ checkpointing in `launch_finetune.py` (upstream defaults OOM); on A100-class
52
+ hardware the upstream defaults are fine.
53
+
54
+ ## Serving notes
55
+
56
+ - The processor expects `shortest_image_edge: 256` — send **raw camera
57
+ frames** and let the server's own transform do all resizing. A client-side
58
+ resize (e.g. to 224) silently degrades the policy.
59
+ - Deployment chunk pacing: 30-step chunks; we execute 20 steps per inference
60
+ cycle, **temporal ensembling OFF** (at low replan rates ACT-style ensembling
61
+ averages stale chunks — measured grasp closure 0.22 with vs 0.99 without).