Instructions to use arkojit1/pi05_franka_haply_abscartesianpos with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use arkojit1/pi05_franka_haply_abscartesianpos with LeRobot:
- Notebooks
- Google Colab
- Kaggle
pi05_franka_haply_abscartesianpos
Οβ.β
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.
Action space
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.
Observations
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_rgb
plus 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.
Training
| 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.
Comparison
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.
Usage
from lerobot.policies.pi05.modeling_pi05 import PI05Policy
policy = PI05Policy.from_pretrained("arkojit1/pi05_franka_haply_abscartesianpos")
Caveats
- One seed, one task, one operator. The 0.0004 gap to the sliced-column variant is noise, not a ranking.
- Trained on Haply-teleoperated demonstrations of a single language task; no claim is made about transfer to other tasks or robots.
- Evaluated by held-out loss only. No rollout success rate has been measured.
- Downloads last month
- 11
Model tree for arkojit1/pi05_franka_haply_abscartesianpos
Base model
lerobot/pi05_base