pi05_so101_block_stack
pi0.5 fine-tuned to stack one 30 mm block on another with an SO-101, in simulation and on the physical arm. Trained by train/pi05_so101_mix.yaml in vla-test on drwahl/so101_block_stack, with each frame jittered for brightness, contrast, saturation and hue over ranges the size of what separates a rendered frame from one off the arm.
LoRA on lerobot/pi05_base's gemma_2b language backbone, with the action expert and the projection heads dense and SigLIP frozen. adapter/ holds the adapter and the normalization processors; train/merge.py folds it into the base weights for a checkpoint that loads without one.
hf download drwahl/pi05_so101_block_stack --local-dir pi05_so101_block_stack
uv run python train/merge.py pi05_so101_block_stack/adapter pi05_so101_block_stack/merged
# in simulation
uv run python sim/scripts/eval.py pi05_so101_block_stack/merged
# on the arm
uv run python -m hw.rollout pi05_so101_block_stack/merged --indices 0 1 2
Chunks are stitched with Real-Time Chunking and read back off a shape-preserving cubic before they are executed, in both programs.
It stacks 139 of the 150 held-out sim layouts, averaged over three seeds. On the arm the blocks are placed against a console that blends the planned layout with the live camera, and whether an episode stacked is the operator's call, so there is no hardware number here.
The prompt names two of red, green and blue: stack the red block on the green block.
Model tree for drwahl/pi05_so101_block_stack
Base model
lerobot/pi05_base