Instructions to use arkojit1/pi05_droid_franka_haply_absjointpos with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use arkojit1/pi05_droid_franka_haply_absjointpos with LeRobot:
- Notebooks
- Google Colab
- Kaggle
Οβ.β
(DROID joint-position) β absolute joint-position control on franka_haply_joint_delta
Οβ.β fine-tuned on Haply-teleoperated Franka demonstrations, predicting absolute joint positions, starting from the DROID joint-position checkpoint rather than stock Οβ.β . Checkpoint taken at the step with the lowest eval loss.
| Base checkpoint | DAVIAN-Robotics/pi05_droid_jointpos |
| Dataset | Ameyapores/franka_haply_joint_delta β 94 episodes / 50,861 frames @ 20 fps, 1 language task |
| Step | 1,000 |
| Eval loss | 0.2014 (flow-matching objective, 10 held-out episodes) |
| Trainable | action expert only (--train_expert_only: SigLIP and Gemma-2B frozen, ~300M trainable) |
Action space
8-dimensional, from the dataset's action_absolute_joint_position column:
| dims | meaning |
|---|---|
| 0β6 | absolute joint positions (7 DoF), in radians |
| 7 | gripper |
These are absolute targets, not deltas β despite the dataset being named
franka_haply_joint_delta, which refers to its default action column. Order is the
contract: feeding this model joint deltas, or a Cartesian action space, produces
plausible-looking nonsense rather than an error. The source dataset publishes the
authoritative axis names as joint_position_0 β¦ joint_position_6, gripper.
Observations are three 224Γ224 RGB cameras (observation.images.base_0_rgb,
observation.images.base_1_rgb, observation.images.left_wrist_0_rgb) plus an 8-dim
observation.state. empty_cameras=0 β the three cameras exactly fill Οβ.β
's three image
slots, with no masked padding.
chunk_size=15 and n_action_steps=15 follow this base checkpoint's own config.json
(stock pi05_base uses 50). At 20 fps that is 0.75 s of predicted motion, executed
open-loop in full before re-planning.
How this compares
The same fine-tune from stock lerobot/pi05_base, with everything else matched except the
chunk size each checkpoint natively uses, reaches 0.1454 β 28% better:
| base | chunk | best eval |
|---|---|---|
lerobot/pi05_base (model) |
50/50 | 0.1454 |
DAVIAN-Robotics/pi05_droid_jointpos (this model) |
15/15 | 0.2014 |
The same ordering holds on the joint-delta encoding (0.1977 vs 0.2135) and, more cleanly, on a second dataset where chunk size was pinned identically for both bases β there stock Οβ.β ended 18% ahead. So on these tasks the DROID joint-position pretraining is a net negative, against the intuition that an action-space-matched checkpoint should transfer better.
Use this model for comparison against that baseline; prefer the pi05_base variant above for
actual control.
Usage
from lerobot.policies.pi05.modeling_pi05 import PI05Policy
policy = PI05Policy.from_pretrained("arkojit1/pi05_droid_franka_haply_absjointpos")
Requires access to the gated google/paligemma-3b-pt-224
repo β the preprocessor loads its tokenizer by id. Accept the license there first and make
sure HF_TOKEN is set.
Training
Global batch 256 across 8ΓMI300X (RCCL DDP, 32 per GPU), learning rate 2.5e-5 with a cosine schedule, bf16 with gradient checkpointing, quantile normalisation of state and action, image augmentation on the train split only. 84 train / 10 eval episodes (the last ten in episode order).
eval_loss is the training objective evaluated on held-out episodes β not a success rate.
With only 10 held-out episodes it is correspondingly noisy; treat differences of a few percent
as unresolved.
- Downloads last month
- 16
Model tree for arkojit1/pi05_droid_franka_haply_absjointpos
Base model
DAVIAN-Robotics/pi05_droid_jointpos