Facet-0
Model weights for Facet-0: A Robotic Foundation Model for Contact-Rich Precise Manipulation.
facet0-post-training
Policy produced by Facet-0 post-training (value-guided policy refinement). A PaliGemma vision-language backbone is paired with a flow-matching action expert. The kinematic state and a causal wrench history enter only the action expert, which generates each 50-step action chunk together with the wrist wrench it is expected to induce. Only the action is executed. During refinement the vision-language backbone is frozen.
| File | Content |
|---|---|
params/ |
weights (orbax checkpoint; frozen backbone stored in bfloat16) |
assets/norm_stats.json |
normalization statistics used at inference |
config.json |
input / output description |
Inputs
| Key | Shape | Content |
|---|---|---|
observation/state |
float32 [13] |
end-effector pose (6: x, y, z, rotation vector), gripper (1), wrist wrench (6) |
observation/wrench_history |
float32 [10, 6] |
latest 10 measured wrist wrenches, oldest first |
observation/image |
uint8 [H, W, 3] |
third-person view |
observation/wrist_image |
uint8 [H, W, 3] |
wrist camera |
observation/extra_view_image |
uint8 [H, W, 3] |
second third-person view |
prompt |
string | natural-language sub-task instruction |
Outputs
| Key | Shape | Content |
|---|---|---|
actions |
[50, 7] |
absolute end-effector pose + gripper; the only commanded output |
wrench |
[50, 6] |
anticipated wrist wrench (N, N m); predictive, never commanded |
Usage
The checkpoint loads with the Facet-0 post-training code, which builds on openpi.
import facet0.policy
policy = facet0.policy.load("facet0-post-training") # params/ + assets/norm_stats.json
history = facet0.policy.WrenchHistory() # latest 10 wrenches
history.push(state[7:13])
out = policy.infer({
"observation/state": state,
"observation/wrench_history": history.window(),
"observation/image": view1,
"observation/wrist_image": hand,
"observation/extra_view_image": view2,
"prompt": "press down the RAM until it locks into place",
})
out["actions"] # [50, 7]: send to the controller
out["wrench"] # [50, 6]: for logging
guidance_scale trades between the unconditional branch (0.0) and the label-conditioned branch (1.0, default).
Citation
@article{deng2026facet0,
title = {Facet-0: A Robotic Foundation Model for Contact-Rich Precise Manipulation},
author = {Deng, Haoyuan and Liu, Haichao and Guo, Wenkai and Ling, Yuan and Yang, Zaijia and
Xue, Yuanjiang and Sun, Haosheng and Wang, Liangzi and Wang, Ziwei},
journal = {arXiv preprint arXiv:2609.01596},
year = {2026}
}
License
Apache-2.0. The model builds on openpi (Apache-2.0).