GR00T post-training (VLA fine-tuning)#
COMPASS distillation datasets can fine-tune VLA models like NVIDIA Isaac-GR00T to bolt on navigation capabilities. Three steps: convert, fine-tune, evaluate.
Step 1 — Convert HDF5 → GR00T LeRobot format#
You need an HDF5 distillation dataset first; see Recording distillation data. Then convert with the bundled script:
python scripts/hdf5_to_lerobot_episodic.py \
--hdf5-dir <path/to/hdf5/directory> \
--output-path <path/to/lerobot/format>
The script is pure-Python (no Isaac Lab) — runs anywhere with the standard COMPASS Python environment. It walks the HDF5 dataset, repacks per-episode into LeRobot’s parquet format, and emits the chunk + metadata layout that GR00T’s training pipeline expects.
Step 2 — Post-train GR00T#
Follow the post-training instructions in the Isaac-GR00T getting-started guide.
A ready-to-use navigation data configuration lives on this branch:
liuw/nav_fine_tune.
Step 3 — Evaluate the post-trained GR00T model in COMPASS (closed loop)#
Requires the
liuw/gr00t-n16-evalbranch (GR00T N1.6 inference-protocol + 480×640 camera fixes) —git checkoutit first.
Eval runs two processes over ZeroMQ port 8888: the GR00T inference server (serves the fine-tuned policy) and the COMPASS sim (queries it each step).
1. Serve the checkpoint (in the Isaac-GR00T repo):
python gr00t/eval/run_gr00t_server.py \
--model-path <path/to/checkpoint> \
--embodiment-tag NEW_EMBODIMENT \
--device cuda:0 --host 0.0.0.0 --port 8888
2. Run the closed-loop eval (in COMPASS):
python run.py -c configs/eval_config.gin --enable_cameras --gr00t-policy \
-b ./assets/x_mobility.ckpt -o /tmp/gr00t_eval \
--embodiment g1 --environment combined_single_rack --num_envs 10
--gr00t-policy queries the server at 0.0.0.0:8888 instead of loading a local
checkpoint (no -p needed); the success rate is reported as
eval/goal_reached_rate. Add --viz kit --num_envs 1 to watch one robot in the
viewer.