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).

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Paper for Pinelab/Facet-0