File size: 2,533 Bytes
2d93469
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73a514c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
license: other
license_name: gemma-terms-of-use
license_link: https://ai.google.dev/gemma/terms
library_name: n0vtla
tags:
  - robotics
  - vision-language-action
  - tactile
  - simulation
---

# 𝒩₀-VTLA — UniVTAC single-arm

A 𝒩₀-VTLA single-arm policy for the [UniVTAC](https://github.com/anlorla/UniVTAC) simulator,
post-trained from the [𝒩₀-VTLA pretrained base](https://huggingface.co/NeoteAI/n0-vtla-base).
This card documents the `insert_hole` setup.

| | |
|---|---|
| Embodiment | single-arm |
| Action space | joint, 8-dim (7 joints + gripper) |
| Action horizon | 50 |
| Tactile views | 2 |
| Latent tactile tokens | 5 |

## Files

```
model.safetensors                          the full checkpoint (~8.25 GB)
assets/n0_insert_hole_norm/norm_stats.json
config.json                                architecture summary
```

## Serve

The evaluation adapter speaks ZMQ + msgpack, so use `scripts/serve_zmq.py` from the
[code repository](https://github.com/neoteai/N0-VTLA):

```bash
hf download NeoteAI/n0_VTLA_insert_hole --local-dir checkpoints/n0_VTLA_insert_hole

VTLA_ASSET_ID=n0_insert_hole_norm python scripts/serve_zmq.py \
  --config sim_single_arm_tactile \
  --ckpt checkpoints/n0_VTLA_insert_hole \
  --addr "tcp://*:5557" \
  --default-prompt "insert hole"
```

Serving reads only `model.safetensors` and `assets/<asset-id>/norm_stats.json`; no dataset is
needed. A correct load prints `tactile=True` with 2 views and no missing or unexpected
state-dict keys. If it reports either, the config does not match the checkpoint.

Then run the evaluation from a UniVTAC checkout with a deploy YAML pointing at port 5557. Set
`exec_horizon` to 50, the model's action horizon: executing fewer steps clips the tail of each
chunk, which is where the grasp-closing motion lives.

## Action space

Unlike the pretrained base, which predicts end-effector deltas in a canonical 32-dim rot6d
container, this policy predicts **joint** actions: 7 joints plus gripper. The joint dims are
element-wise deltas against the current state; the gripper column is absolute. Do not feed it
end-effector data or reuse an end-effector normalization asset.

## License

These weights are derived from Google's PaliGemma/Gemma parameters and are made available under
the [Gemma Terms of Use](https://ai.google.dev/gemma/terms) and the
[Gemma Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy), not under the
CC BY-SA 4.0 licence that covers the source code. This is inherited from the base model.