G1 throw VLA checkpoints

DynamicVLA and ForceVLA fine-tuned on twanghcmut/g1-throw-newton: a Unitree G1 picks an object off a pedestal and throws it into a box. One checkpoint per object group. Training and evaluation code: branch benchmark/throw-vla of extrinsic-dexterity, benchmark/throw/README.md.

Layout

dynamicvla/<group>/   config.json, model.safetensors (LeRobot policy, hzxie/DynamicVLA)
forcevla/<group>/     params/, assets/ (openpi checkpoint without optimizer state, ft-robotic/ForceVLA)

<group>: rigid, irregular, dynamic.

Model Init Inputs Training
DynamicVLA SmolLM2-360M, no DOM pretraining side and head camera (frames t-2, t), 14 joints batch 44, 6 epochs
ForceVLA pi0_base, LoRA head and side camera, 14 joints, 6-D wrist wrench batch 32; 20k steps rigid, 20k irregular, 15k dynamic

Both predict 40 joint targets (1.3 s) and execute 16 before replanning.

Results

Closed loop in Isaac Lab, test split (held-out object variants), room and unseen kitchen 10-8 combined. Success: the object comes to rest inside the box. Brackets: 95% Wilson interval.

Model Rigid (320) Irregular (288) Dynamic (288)
DynamicVLA 0.6 [0.2, 2.2] 0.7 [0.2, 2.5] 0.3 [0.1, 1.9]
ForceVLA 8.4 [5.9, 12.0] 5.9 [3.7, 9.2] 3.8 [2.1, 6.7]
GR00T N1.7 (not released here) 5.3 [3.3, 8.3] 4.2 [2.4, 7.1] 1.7 [0.7, 4.0]

The scripted expert lands about 52% of its throws. All models lift the object in 49 to 76% of episodes; most failures are misses after release.

Download and evaluate

hf download twanghcmut/g1-throw-vla --include "forcevla/rigid/*" --local-dir ckpt
python benchmark/throw/eval/eval.py forcevla rigid ckpt/forcevla/rigid results/forcevla_rigid \
    --model-python ForceVLA/.venv/bin/python --newton-python .venv-newton/bin/python

Run it from the Isaac Lab environment. Setup for each model is in the benchmark README.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Dataset used to train twanghcmut/g1-throw-vla