Instructions to use PINlab/pi05-so101 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use PINlab/pi05-so101 with LeRobot:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
pi0.5 SO-101 with a tactile skin
pi0.5 policies for a single SO-101 arm with a 5-chip magnetic tactile skin, fine-tuned from
pi05_base. One folder per training run, one sub-folder per checkpoint step.
None has been evaluated on the robot yet.
What is here
| folder | config | cameras | prompt(s) | data | steps |
|---|---|---|---|---|---|
grab_ball_skin/ |
pi05_so101_grab_ball_skin |
2: base = fixed (train: fixed/side at random), wrist = handeye |
"Grab the ball" | endoard/grab_ball_3cam_skin, first 100 episodes / 46,076 frames |
10000, 20000, 29999 |
grab_ball_skin_3cam/ |
pi05_so101_grab_ball_skin_3cam |
3: fixed, handeye, side |
"Grab the ball" | endoard/grab_ball_3cam_skin, 150 episodes / 65,989 frames |
10000, 20000, 29999 |
grab_cup_skin_3cam/ |
pi05_so101_grab_cup_skin_3cam |
3: fixed, handeye, side |
"Grab the blue cup" | endoard/grab_cup_3cam_skin, 166 episodes / 64,812 frames |
10000, 20000, 29999 |
grab_3obj_skin_3cam/ |
pi05_so101_grab_3obj_skin_3cam |
3: fixed, handeye, side |
"Grab the red cube" / "Grab the green cube" / "Grab the green cylinder" | endoard/grab_{red_cube,green_cube,green_cylinder}_3cam_skin merged, 450 episodes / 161,918 frames, one task per source |
10000, 20000, 28000 |
grab_3obj_skin_3cam is multi-task: the prompt selects the object. Its run was stopped at
step 28,500 of 30k, so 28000 is its last checkpoint. Its held-out split is stratified per task
(15 episodes each).
Each step folder is an openpi checkpoint without optimizer state: params/ (EMA weights),
assets/<asset_id>/norm_stats.json (quantile stats), _CHECKPOINT_METADATA, and a README.md
with that checkpoint's details.
Download one checkpoint
from huggingface_hub import snapshot_download
d = snapshot_download("PINlab/pi05-so101", allow_patterns="grab_cup_skin_3cam/29999/*")
# serve with --policy.dir={d}/grab_cup_skin_3cam/29999
Serving
The checkpoints carry no config. Serve each one under the config in the table, which pins
its asset_id:
python scripts/serve_policy.py policy:checkpoint \
--policy.config=pi05_so101_grab_cup_skin_3cam \
--policy.dir=<download>/grab_cup_skin_3cam/29999
The policy returns 16 actions spaced 2 frames apart (15 Hz), absolute joints (the delta is undone server-side). Replay at 15 Hz or interpolate; replaying at 30 Hz halves the speed. The 3-camera policies need all three cameras every step.
Recipe (all runs)
- State 21-D (padded to 32): 5 joints (deg), gripper (0-100), 5 skin chips x xyz (uT), raw.
- Action 6-D (padded to 32): delta on the 5 joints, absolute gripper (
make_bool_mask(5, -1)). - Images:
base_0_rgb=fixed,left_wrist_0_rgb=handeye;right_wrist_0_rgb=side(mask on) for 3-camera runs, zeros with mask off forgrab_ball_skin. action_horizon=16,action_stride=2, prompt from the dataset task string.- From
pi05_base, 4 nodes x 1 A100-64GB,--fsdp-devices=4, batch 32, AdamW with cosine decay, EMA 0.99, seed 42, 30k steps, 10% of episodes held out.