Downloads · 30 days
28
100% of all-time downloads
arkojit1/pi05_franka_haply_abscartesianpos
pi05_franka_haply_abscartesianpos is a robotics model from arkojit1. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for lerobot. The card lists the license as apache-2.0.
π₀.₅ fine-tuned from lerobot/pi05base on Ameyapores/frankahaplyjointdelta, predicting absolute end-effector position and gripper.
Downloads · 30 days
28
100% of all-time downloads
All-time downloads
28
Public
Parameters
4.1B
9.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors9.4 GB · 100%
How the weights are stored.
BF163.6B · 87%
From the Hugging Face model README
π₀.₅ fine-tuned from lerobot/pi05_base on
Ameyapores/franka_haply_joint_delta,
predicting absolute end-effector position and gripper.
Checkpoint taken at the step with the lowest eval loss: step 1,750, eval_loss 0.1120.
The policy outputs a 4-dimensional action, and the order is part of the contract:
| index | meaning | units |
|---|---|---|
| 0 | position_x | metres, absolute workspace coordinate |
| 1 | position_y | metres, absolute |
| 2 | position_z | metres, absolute |
| 3 | gripper | normalised open/close |
These are absolute positions, not displacements. Feeding the output to a controller that expects a delta will drive the arm to the workspace origin. Observed ranges in the training data are x ∈ [0.35, 0.66], y ∈ [−0.16, 0.19], z ∈ [0.13, 0.49] m — a Franka envelope, not increments.
The source column is action_cartesian_absolute. Note the dataset's default action column
holds joint deltas and action_cartesian holds delta xyz despite the similar name; this
model was trained on neither.
Three 224×224 RGB cameras, each a single frame — π₀.₅ uses no observation history
(n_obs_steps=1), so all temporal structure comes from predicting a chunk forward:
observation.images.base_0_rgbobservation.images.base_1_rgbobservation.images.left_wrist_0_rgbplus an 8-dim observation.state and a language prompt. The dataset is recorded at 20 fps,
so chunk_size=50 is 2.5 s of motion.
| base | lerobot/pi05_base |
| dataset | Ameyapores/franka_haply_joint_delta, 94 episodes / 50,861 frames @ 20 fps |
| split | 84 train / 10 eval (last 10 episodes, eval_split=0.1) |
| action scheme | action_cartesian_absolute → 4-dim action |
| chunk_size / n_action_steps | 50 / 50 |
| batch / LR | 256 global, 2.5e-5, cosine |
| precision | bfloat16, gradient checkpointing |
| normalisation | quantile (state and action) |
| trainable | --train_expert_only — SigLIP and Gemma-2B frozen; 693M of 4.14B trainable |
| schedule | 3,500 steps (19.2 epochs) on 8×MI300X, eval every 250 |
eval_loss is the flow-matching objective on held-out episodes — not a success rate. The
holdout is 10 episodes, so differences of a few percent are not resolved.
All arms below share this base, chunk, optimiser and the same 84/10 holdout, so the losses are directly comparable. Only the action encoding differs.
| action encoding | dims | best eval |
|---|---|---|
| absolute xyz + gripper (this model) | 4 | 0.1120 |
| absolute xyz + gripper, sliced from the older 8-dim column | 4 | 0.1124 |
| xyz + quaternion + gripper | 8 | 0.1438 |
| absolute joint positions | 8 | 0.1454 |
| joint deltas | 8 | 0.1977 |
| delta xyz + gripper | 4 | 0.2122 |
The last row is the informative one: identical in every respect except absolute versus incremental position, and 47% worse. With a single observation frame, a delta is a rate regressed from a snapshot, while an absolute target is directly readable from the current image and state. Absolute encodings occupy the top of this table; incremental ones the bottom.
from lerobot.policies.pi05.modeling_pi05 import PI05Policy
policy = PI05Policy.from_pretrained("arkojit1/pi05_franka_haply_abscartesianpos")