LingBot-VLA-2.0-6B · G1 bimanual box lift (g1_lift_ft, step 500)
Post-train of robbyant/lingbot-vla-v2-6b on 200 scripted-teacher
demonstrations of a Unitree G1 (29-DoF, stock hands) lifting a brown box off
a table with a bimanual palm squeeze, collected in MuJoCo on the live SONIC
whole-body controller. 91% closed-loop success in sim (29/32 seeds) at
this first checkpoint (global_step_500, ~2.9 epochs-equivalent of the 256
global-batch recipe).
Trained and evaluated as part of the Before the Drop project:
https://github.com/microagi-collab/before-the-drop — see
vla/lingbot/README.md there for the full serve/deploy runbook and
vla/lingbot/TELEOP_POSTTRAIN.md for fine-tuning on real teleop demos.
Serve
hf download parvkp/lingbot-vla-v2-g1-lift-500 --local-dir ~/ckpts/g1_lift_500
cd ~/lingbot-vla-v2 && \
QWEN3VL_PATH=~/lingbot_models/Qwen3-VL-4B-Instruct HF_HUB_OFFLINE=1 \
.venv/bin/python -m deploy.lingbot_vla_v2_policy \
--model_path ~/ckpts/g1_lift_500 \
--use_length 8 --use_compile false --port 8000
Requires the lingbot-vla-v2 serving repo with the g1_lift robot config
(configs/robot_configs/g1_lift.yaml) and norm stats
(assets/norm_stats/g1_lift.json) in place — both version-controlled in the
GitHub repo above.
I/O contract (10 Hz)
observation.state(46) = 29 joint q (Unitree firmware motor order) + 14 hand slots (zeros) + projected gravity (3, pelvis frame)observation.images.ego_view(256×256×3 u8) — fixed third-person camera ~3 m out / 1.7 m high, front-right of the robottask="Pick up the brown box from the table."- action (chunked, 31) = absolute arm joint targets (14) + hand (14, zeros) + base_motion (3, ~0)
Honest limitations
Trained entirely on MuJoCo renders with a SONIC-anchored base: real-world camera input is out of distribution and zero-shot hardware performance is expected to be degraded — fine-tune on real teleop demos before relying on it (pipeline in the GitHub repo). The 12 leg DoF are not controlled by this policy; Dex3 finger channels are unused (the grasp is an arm-driven palm squeeze).