Downloads · 30 days
0
NeoteAI/n0_VTLA_univtac_single8
n0_VTLA_univtac_single8 is a robotics model from NeoteAI. 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 n0vtla. The card lists the license as cc-by-sa-4.0.
Task policy for N0-VTLA, a vision-tactile-language-action model that conditions a flow-matching action expert on predicted latent tactile tokens.
Downloads · 30 days
0
Access
Public
Updated Sep 15, 2026
Parameters
3.8B
8.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors8.3 GB · 100%
How the weights are stored.
BF163.5B · 92%
From the Hugging Face model README
Task policy for N0-VTLA, a vision-tactile-language-action model that conditions a flow-matching action expert on predicted latent tactile tokens.
This is a task policy, not a pretrained base. For post-training on your own robot start from n0-vtla-base.
| Config | sim_single_arm_tactile |
| Tactile pathway | enabled, n_latent=5, views (tactile_a, tactile_b) |
| Action space | 8-dim joint |
A single joint policy covering all eight UniVTAC tasks.
| Task | First attempt | One retry | Two retries |
|---|---|---|---|
| Grasp Classify | 100% | 100% | 100% |
| Insert Hole | 100% | 100% | 100% |
| Insert Tube | 95% | 95% | 95% |
| Pull-out Key | 95% | 95% | 100% |
| Lift Bottle | 75% | 100% | 100% |
| Lift Can | 75% | 85% | 90% |
| Put Bottle in Shelf | 65% | 95% | 95% |
| Insert HDMI | 55% | 65% | 65% |
| Mean | 82.5% | 91.9% | 93.1% |
Inference noise is unseeded, so retries are genuinely independent draws rather than replays.
This checkpoint requires the zero-contact tactile baseline. Three of the eight tasks close
the gripper inside pre_move, so episode frame 0 already carries the object's imprint and the
tactile difference measures zero for the whole episode. The reference images ship in this repo
under assets/tactile_baseline/.
VTLA_ASSET_ID=univtac_single8_joint_norm \
VTLA_BLANK_BASELINE_DIR=assets/tactile_baseline \
python scripts/serve_zmq.py --config sim_single_arm_tactile \
--ckpt <this-dir> --addr "tcp://127.0.0.1:5557"
Confirm it took effect: the serving log must print
using FIXED blank tactile baseline from <dir>. Setting it only on the training side is not
enough.
action_horizon is 50; set exec_horizon: 50 in the deploy YAML.
| Task | Prompt |
|---|---|
insert_hole | insert hole |
insert_HDMI | insert HDMI |
insert_tube | Insert the tube into the slot |
grasp_classify | grasp classify |
lift_can | lift can |
lift_bottle | Lift the bottle |
pull_out_key | Rotate and pull out the key |
put_bottle_in_shelf | put bottle in shelf |
Copy them exactly. The capitalisation is inconsistent because the strings come from the datasets; a prompt that merely reads correctly to a human has moved a score by up to 35 points.
Measured on the UniVTAC simulator at commit 695a22d
(branch NeoSim of anlorla/UniVTAC), on held-out seeds
starting at 100. Success criteria on three tasks were tightened after these numbers were
measured, so a success rate on this benchmark is not comparable without the simulator commit
beside it; see
docs/EVAL.md for the details and for
the full evaluation procedure.
This checkpoint carries the tactile pathway, but this benchmark cannot demonstrate that touch
contributes to the score. Object randomisation is +/-2-5 mm with no domain randomisation, so a
policy that ignores its cameras and its tactile sensors entirely can still score well. Use
scripts/probe_z_tactile_dependence.py to measure the causal contribution yourself.
CC BY-SA 4.0, as the parent repository.