Downloads · 30 days
0
noahnowac/farm_uf850_home_pi05
farm_uf850_home_pi05 is a robotics model from noahnowac. 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 openpi. The card lists the license as apache-2.0.
A π0.5 vision-language-action policy fine-tuned for the UFactory UF850 arm on the farmuf850home tabletop manipulation task. It takes two camera views (base + wrist), the arm's joint state, and a language prompt, and p…
Downloads · 30 days
0
Access
Public
Updated Jun 28, 2026
Repo size
9.5 GB
Likes
0
Public
Click a slice to open those files.
Other9.5 GB · 100%
From the Hugging Face model README
A π0.5 vision-language-action policy fine-tuned for the UFactory UF850 arm on the
farm_uf850_home tabletop manipulation task. It takes two camera views (base + wrist),
the arm's joint state, and a language prompt, and predicts 50-step action chunks.
| Base model | π0.5 (openpi, Physical Intelligence) |
| Dataset | NoahWeiss/farm_uf850_home — 417 episodes, ~179k frames, 2 cameras |
| Steps | 8,000 (batch size 32, action horizon 50) |
| Throughput | ~2.37 s/step (~13.5 samples/s) |
| Total wall-clock | ~5.5 hours end-to-end (setup + norm-stats + 8k steps) |
| Hardware | 1× NVIDIA RTX PRO 6000 Blackwell (96 GB) |
| Total cost | ≈ $12 (single GPU @ $2.09/hr) |
| Final training loss | 0.0025 (from ~0.02) |
One GPU, about five and a half hours, roughly twelve dollars.
params/ policy weights — everything you need for inference
assets/ action/state normalization stats
train_state/ optimizer state — only needed to RESUME training
_CHECKPOINT_METADATA orbax checkpoint metadata
register_config.py registers the openpi serve config (run once during setup)
patch_openpi_config.py adds the FARM data config to openpi (run once during setup)
⚠️ π0.5 is a ~3.3B JAX/CUDA model — it needs an NVIDIA GPU. Inference is light (forward pass only, ~8 GB), so a 24 GB card (RTX 4090 / L40S / A100) is plenty — you do not need a big training GPU. A Mac/CPU won't run it.
# clone openpi at the pinned commit this policy was trained against
git clone https://github.com/Physical-Intelligence/openpi && cd openpi
git checkout c23745b5ad24e98f66967ea795a07b2588ed6c79
uv sync
# pull the two setup scripts from this repo and register the config
huggingface-cli download noahnowac/farm_uf850_home_pi05 \
patch_openpi_config.py register_config.py --local-dir .
export OPENPI_CONFIG_PY=src/openpi/training/config.py
python patch_openpi_config.py # adds the FARM data config
python register_config.py # registers TrainConfig "pi05_farm_home"
huggingface-cli download noahnowac/farm_uf850_home_pi05 \
--include "params/*" "assets/*" "_CHECKPOINT_METADATA" \
--local-dir ./ckpt
Starts a websocket policy server on port 8000. Your robot client streams observations (base RGB + wrist RGB + joint state + prompt) and receives action chunks.
uv run python scripts/serve_policy.py --port 8000 \
--default_prompt "pick up the object and place it in the box" \
policy:checkpoint \
--policy.config=pi05_farm_home \
--policy.dir=./ckpt
Then point your arm controller at ws://<gpu-host>:8000 (e.g. SSH-tunnel the port to
the machine running the UF850 + cameras). Cameras map as: base → base view, wrist →
wrist view (the same mapping used in training).
import numpy as np
from openpi.training import config as _config
from openpi.policies import policy_config
cfg = _config.get_config("pi05_farm_home")
policy = policy_config.create_trained_policy(cfg, "./ckpt")
obs = {
"observation.images.base": base_rgb, # np.uint8 [H, W, 3]
"observation.images.wrist": wrist_rgb, # np.uint8 [H, W, 3]
"observation.state": joint_state, # np.float32 [state_dim]
"prompt": "pick up the object and place it in the box",
}
result = policy.infer(obs)
actions = result["actions"] # [50, action_dim] — the predicted 50-step action chunk
print(actions.shape)
The policy applies the same image/state normalization and camera mapping used in training, so feed it the raw dataset-style observation keys shown above.
apache-2.0