--- license: other library_name: gr00t tags: - robotics - vla - gr00t - isaac-gr00t - r1-lite pipeline_tag: robotics --- # VLASH GR00T N1.6 — R1 Lite (random delay 0–4) Finetune of Isaac GR00T N1.6 for the Galaxea R1 Lite embodiment, trained with **VLASH temporal delay augmentation**: for every sample a delay `k ~ U[0, 4]` is drawn and the state/action windows are shifted by `k` while video and language stay at the base timestep. ``` video/language: t (stale observation) state: t + k action chunk: action[t + k : t + k + horizon] ``` The policy therefore predicts an action chunk that begins `k` steps *after* the observation it was given, which is what makes asynchronous chunk execution possible on the real robot: the next chunk can be computed while the current one is still executing. ## Details | | | |---|---| | Base model | Isaac GR00T N1.6 | | Checkpoint | step 160000 | | Embodiment tag | `new_embodiment` (R1 Lite, bimanual + 2 grippers) | | Action horizon | 16 | | `max_delay_steps` | 4 (random per sample) | | `use_state_ground_truth` | true (delayed state is the *measured* state at `t + k`) | | Tuned layers | backbone LLM layers 12–15 + action head | ## Open-loop evaluation Delay sweep with `gr00t/eval/delayed_open_loop_eval.py`, 3 trajectories × 200 steps, horizon 16. Unnormalized action error, averaged over trajectories. Arm joints only (rad): | delay | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |---|---|---|---|---|---|---|---|---|---| | MSE | .00103 | .00124 | .00097 | .00049 | .00037 | **.00034** | .00036 | .00048 | .00048 | | MAE | .01344 | .01358 | .01227 | .01129 | .01022 | **.01033** | .01071 | .01181 | .01196 | All keys concatenated (dominated by the grippers, which span 0–100): | delay | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |---|---|---|---|---|---|---|---|---|---| | MSE | .00605 | .00619 | .00626 | .00561 | .00586 | **.00551** | .00571 | .00599 | .00629 | | MAE | .02768 | .02792 | .02728 | .02535 | .02599 | **.02520** | .02588 | .02649 | .02739 | Arm error bottoms out around delay 4–6 — roughly 3× lower than evaluating at delay 0 — matching the 0–4 training distribution, and degrades again at delay 7–8 (outside the trained range). Gripper error is flat across delays: those are discrete open/close transitions that a few steps of shift do not fix. **Caveat:** this sweep was run on the training dataset, so the numbers are train-set fit, not held-out generalization. ## Files Inference artifacts only — `optimizer.pt`, `scheduler.pt`, `rng_state_*.pth`, and the trainer state are not included, so this checkpoint cannot be used to resume training. ## Usage ```python from gr00t.policy.gr00t_policy import Gr00tPolicy from gr00t.data.embodiment_tags import EmbodimentTag policy = Gr00tPolicy( embodiment_tag=EmbodimentTag.NEW_EMBODIMENT, model_path="XYZPIT/vlash-random4-gr00t-n1.6-160000", device="cuda", ) action_chunk, _ = policy.get_action(observation) ``` Because of the delay augmentation, the returned chunk is meant to start executing a few steps after the observation timestamp rather than immediately.