Instructions to use DAVIAN-Robotics/pi05_droid_jointpos with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use DAVIAN-Robotics/pi05_droid_jointpos 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
pi05_droid_jointpos (lerobot PyTorch port)
OpenPI's pi05_droid_jointpos (ฯ0.5 fine-tuned on DROID with a joint-position action space), converted to the
lerobot PI05Policy (PyTorch) format.
- Source:
gs://openpi-assets-simeval/pi05_droid_jointpos(JAX/orbax), the official OpenPI release. - Conversion:
openpi/examples/convert_jax_model_to_pytorch.py(JAX โ PyTorch), then assembled with the lerobot config and processors. - Verified: RoboLab (Isaac Lab)
BananaInBowlTask, 8-env server-client evaluation โ 7/8 (on par with the openpi JAX baseline with the same weights, 6/8).
Files
| file | contents |
|---|---|
config.json |
PI05Config โ max_state_dim=8, chunk_size=15, dtype=bfloat16, STATE/ACTION QUANTILES |
model.safetensors |
812 keys (Gemma embed_tokens is tied to lm_head) |
policy_preprocessor.json (+ *_normalizer_processor.safetensors) |
rename โ batch โ DROID quantile normalize โ state discretize + tokenize โ device |
policy_postprocessor.json (+ *_unnormalizer_processor.safetensors) |
DROID quantile unnormalize |
Usage
from lerobot.policies.pi05.modeling_pi05 import PI05Policy
from lerobot.policies.factory import make_pre_post_processors
repo = "DAVIAN-Robotics/pi05_droid_jointpos"
policy = PI05Policy.from_pretrained(repo).eval()
preprocessor, postprocessor = make_pre_post_processors(policy.config, pretrained_path=repo)
DROID I/O adapter (required)
This checkpoint is self-contained only for the lerobot-native stages (normalize / tokenize / model / unnormalize).
The DROID-specific input/output conversion is OpenPI's droid_policy logic, which lerobot does not include, so
an external adapter is required:
- Input:
observation.state = concat(joint_position[7], gripper_position[1])(raw; the processor normalizes it). Provide only two images,observation.images.base_0_rgb(exterior) andobservation.images.left_wrist_0_rgb(wrist); the model pads the third camera with-1automatically. ([0, 1]float, CHW.) - Output: the model predicts joint deltas (dims 0โ6), so add the current joint positions to make them
absolute (
AbsoluteActions, mask = 7 ร True + 1 ร False), then use onlyaction[:, :8](7 joints + 1 gripper). - Reference implementation:
sft/scripts/pi05_lerobot_server/(droid_glue.py,policy.py) in the DiscoDemo code repository.
Notes
max_state_dim=8: pi05 discretizes the normalized state into 256 bins and puts it into the prompt. DROID's actual state is 8-dimensional (7 joints + 1 gripper), so only 8 values must be included to match openpi. With the default pi05 value (32), the 24 extra tokens contaminate the conditioning and degrade performance (in particular, early gripper closing). This repo setsmax_state_dim=8explicitly in bothconfig.jsonandpolicy_preprocessor.json(prepare-state step), so standard loading works correctly. (lerobot's default save does not serialize this value for the prepare step, so it was added manually; set it the same way if you build your own.)- Do not confuse with
RLinf/RLinf-Pi05-Polaris-droid_jointpos: the parameter key structure and norm_stats are the same, but those are different, RL-fine-tuned weights. This repo is a conversion of the official OpenPIpi05_droid_jointpos.
License / attribution
The weights are derived from OpenPI's (Physical Intelligence) pi05_droid_jointpos. Use is subject to the license
of the upstream openpi project.
- Downloads last month
- 939