HAMPER β€” G1 basket pickup policy

Pretrained weights for HAMPER: a Unitree G1 humanoid that walks up to a basket on the floor, threads its forearm through the handle, lifts it, and carries it away. Trained with PPO (rsl_rl) in Isaac Lab through a staged curriculum, on a single RTX A6000.

These weights only work with the HAMPER repository at a matching commit. The checkpoint is half of the controller: the other half is the state machine in basket_pickup/commander.py, which sequences approach β†’ squat β†’ thread β†’ lift β†’ carry and presents the policy with the same commands and stage flag it trained under. The observation and action layouts are frozen in interface.py; running the network under any other layout produces garbage rather than an error. Pinned stack: Isaac Sim 5.1.0, Isaac Lab v2.3.2, rsl_rl 3.1.2, torch 2.7.0+cu128 (see configs/versions.lock in the repository).

Files

File What it is Trained iterations
chain.pt The final policy β€” the full task 9,496 total (2,000 on the chain stage)
stage_thread.pt Parent of chain.pt: walk + carry + lift + thread 7,497
stage_lift.pt Parent of stage_thread.pt: walk + carry + lift 5,498
stage_carry.pt Parent of stage_lift.pt: walk + carry 3,499
generalist.pt Root of the chain: squat-capable walking with a commanded hand target; no basket 2,000
banks/standing_states.pt (+ .json) 5,000 harvested standing states used to initialize episodes β€”
banks/squat_states.pt (+ .json) 5,000 harvested squatting states used to initialize the lift and thread stages β€”
hero_video.mp4 60 s demo: full chain, threading close-up, robustness, failure case, ablation β€”

Each checkpoint is an rsl_rl OnPolicyRunner save (actor, critic, optimizer state). The banks are required for evaluating or fine-tuning any stage other than plain walking: episodes of the carry, lift, thread and chain stages start from bank states.

Results (chain.pt with the repository's commander)

Full task: 98.4 Β± 0.5 % success over 500 episodes under each of 3 evaluation seeds. Zero falls, zero baskets knocked away, no drops at the nominal configuration.

Walk Carry Lift Thread Full chain
Success 98.7 % 95.9 % 98.9 % 82.2 % 98.4 %

Robustness (one policy, no retraining): success is flat across handle openings of 15–35 cm (trained on 25 cm) and basket masses of 0.3–1.5 kg (trained on 0.4–1.0 kg). Basket-pose observation noise is the limiting input: above 97 % up to 5 cm of position noise, 23.5 % at 10 cm (time-outs, not falls). On a spawn distribution the state machine was never tuned on (basket 1–3 m away, Β±90Β°, 15 s episodes) the chain succeeds in 98.6 % of 500 episodes.

Things the numbers do not show: the 3 seeds are evaluation seeds of one trained policy (retraining variance was not measured); the evaluation environment turns off Isaac Lab's proprioceptive noise and pushes (under full training conditions the chain scores 100 % / 500 episodes); the state machine's constants were tuned on the training spawn distribution. The repository README has the full discussion, sweep plots, and ablations.

How to run

Set up the repository as described in its README (Isaac Sim, Isaac Lab v2.3.2, uv pip install -e source/basket_pickup), then from the repository root:

hf download WillXH/HAMPER --local-dir weights
cp weights/banks/* banks/                     # the stage evaluations need the state banks

# full task, 200 episodes, records a video next to the checkpoint
python scripts/eval_stage.py --checkpoint weights/chain.pt --stage D_CHAIN
# individual stages
python scripts/eval_stage.py --checkpoint weights/chain.pt --stage C_THREAD    # or B_LIFT, A_CARRY, LOCO

To fine-tune from a stage checkpoint, rsl_rl expects it inside a run directory under logs/rsl_rl/basket_pickup/:

mkdir -p logs/rsl_rl/basket_pickup/hf_stage_thread
cp weights/stage_thread.pt logs/rsl_rl/basket_pickup/hf_stage_thread/model_7496.pt
python scripts/rsl_rl/train.py --task Basket-Pickup-v0 --headless --num_envs 4096 \
  --resume --load_run hf_stage_thread --checkpoint model_7496.pt --max_iterations 2000 --run_name my_chain

License

Weights: MIT. The G1 robot description and Isaac Lab are BSD-3-Clause (NVIDIA / Unitree); rsl_rl is BSD-3-Clause.

Downloads last month

-

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