NeoteAI commited on
Commit
2d93469
·
verified ·
1 Parent(s): bb45f42

Add N0-VTLA UniVTAC single-arm policy

Browse files
README.md ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: gemma-terms-of-use
4
+ license_link: https://ai.google.dev/gemma/terms
5
+ library_name: n0vtla
6
+ tags:
7
+ - robotics
8
+ - vision-language-action
9
+ - tactile
10
+ - simulation
11
+ ---
12
+
13
+ # 𝒩₀-VTLA — UniVTAC single-arm
14
+
15
+ A 𝒩₀-VTLA single-arm policy for the [UniVTAC](https://github.com/anlorla/UniVTAC) simulator,
16
+ post-trained from the [𝒩₀-VTLA pretrained base](https://huggingface.co/NeoteAI/n0-vtla-base).
17
+ This card documents the `insert_hole` setup.
18
+
19
+ | | |
20
+ |---|---|
21
+ | Embodiment | single-arm |
22
+ | Action space | joint, 8-dim (7 joints + gripper) |
23
+ | Action horizon | 50 |
24
+ | Tactile views | 2 |
25
+ | Latent tactile tokens | 5 |
26
+
27
+ ## Files
28
+
29
+ ```
30
+ model.safetensors the full checkpoint (~8.25 GB)
31
+ assets/n0_insert_hole_norm/norm_stats.json
32
+ config.json architecture summary
33
+ ```
34
+
35
+ ## Serve
36
+
37
+ The evaluation adapter speaks ZMQ + msgpack, so use `scripts/serve_zmq.py` from the
38
+ [code repository](https://github.com/neoteai/N0-VTLA):
39
+
40
+ ```bash
41
+ hf download NeoteAI/n0_VTLA_insert_hole --local-dir checkpoints/n0_VTLA_insert_hole
42
+
43
+ VTLA_ASSET_ID=n0_insert_hole_norm python scripts/serve_zmq.py \
44
+ --config sim_single_arm_tactile \
45
+ --ckpt checkpoints/n0_VTLA_insert_hole \
46
+ --addr "tcp://*:5557" \
47
+ --default-prompt "insert hole"
48
+ ```
49
+
50
+ Serving reads only `model.safetensors` and `assets/<asset-id>/norm_stats.json`; no dataset is
51
+ needed. A correct load prints `tactile=True` with 2 views and no missing or unexpected
52
+ state-dict keys. If it reports either, the config does not match the checkpoint.
53
+
54
+ Then run the evaluation from a UniVTAC checkout with a deploy YAML pointing at port 5557. Set
55
+ `exec_horizon` to 50, the model's action horizon: executing fewer steps clips the tail of each
56
+ chunk, which is where the grasp-closing motion lives.
57
+
58
+ ## Action space
59
+
60
+ Unlike the pretrained base, which predicts end-effector deltas in a canonical 32-dim rot6d
61
+ container, this policy predicts **joint** actions: 7 joints plus gripper. The joint dims are
62
+ element-wise deltas against the current state; the gripper column is absolute. Do not feed it
63
+ end-effector data or reuse an end-effector normalization asset.
64
+
65
+ ## License
66
+
67
+ These weights are derived from Google's PaliGemma/Gemma parameters and are made available under
68
+ the [Gemma Terms of Use](https://ai.google.dev/gemma/terms) and the
69
+ [Gemma Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy), not under the
70
+ Apache-2.0 licence that covers the source code. This is inherited from the base model.
assets/n0_insert_hole_norm/norm_stats.json ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "norm_stats": {
3
+ "state": {
4
+ "mean": [
5
+ 0.06630285829305649,
6
+ 0.23359940946102142,
7
+ -0.06392768770456314,
8
+ -2.292025089263916,
9
+ -0.04158048331737518,
10
+ 2.870220422744751,
11
+ 0.8207927942276001,
12
+ 0.008305604569613934
13
+ ],
14
+ "std": [
15
+ 0.41193342208862305,
16
+ 0.3409915566444397,
17
+ 0.3874863088130951,
18
+ 0.21225132048130035,
19
+ 0.7690718173980713,
20
+ 0.391698956489563,
21
+ 0.6687915921211243,
22
+ 0.00635269470512867
23
+ ],
24
+ "q01": [
25
+ -1.1231915211677552,
26
+ -1.090289604127407,
27
+ -1.5997005356788634,
28
+ -2.851706860399246,
29
+ -2.6326723899841307,
30
+ 2.144908622741699,
31
+ -1.9642710106372834,
32
+ 0.0006780616328120231
33
+ ],
34
+ "q99": [
35
+ 1.7049519143104552,
36
+ 0.6554751669764518,
37
+ 1.1072352698802947,
38
+ -1.8351004985332489,
39
+ 2.8525589485168457,
40
+ 3.6928259750366212,
41
+ 2.8887114732742303,
42
+ 0.031380061611533165
43
+ ]
44
+ },
45
+ "actions": {
46
+ "mean": [
47
+ 0.004890867974609137,
48
+ 0.0018891234649345279,
49
+ -0.004484705626964569,
50
+ 0.008738973177969456,
51
+ -0.00618957681581378,
52
+ 0.019451549276709557,
53
+ -0.013864942826330662,
54
+ 0.008818385191261768
55
+ ],
56
+ "std": [
57
+ 0.08330520987510681,
58
+ 0.05834702029824257,
59
+ 0.07885386049747467,
60
+ 0.05567995086312294,
61
+ 0.14548058807849884,
62
+ 0.13775849342346191,
63
+ 0.15702897310256958,
64
+ 0.0073010860942304134
65
+ ],
66
+ "q01": [
67
+ -0.21749016952514644,
68
+ -0.20817201356887804,
69
+ -0.3077045212745667,
70
+ -0.2091159963607788,
71
+ -0.43886827497482295,
72
+ -0.13781279792785645,
73
+ -0.7047383863449097,
74
+ 0.0006780616328120231
75
+ ],
76
+ "q99": [
77
+ 0.31995077896118174,
78
+ 0.16927316443324103,
79
+ 0.19594545202255254,
80
+ 0.16887029111385343,
81
+ 0.1517598106384277,
82
+ 0.6878627071380616,
83
+ 0.32376871776580796,
84
+ 0.03923296145200729
85
+ ]
86
+ }
87
+ }
88
+ }
config.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_note": "N0-VTLA UniVTAC single-arm policy. Load with the sim_single_arm_tactile config in https://github.com/neoteai/N0-VTLA",
3
+ "type": "n0vtla",
4
+ "model_class": "n0vtla.models_pytorch.n0vtla_policy.N0VTLAPolicy",
5
+ "config_name": "sim_single_arm_tactile",
6
+ "pi05": true,
7
+ "paligemma_variant": "gemma_2b",
8
+ "action_expert_variant": "gemma_300m",
9
+ "action_dim": 32,
10
+ "action_horizon": 50,
11
+ "tactile_predictor_enabled": true,
12
+ "tactile_mode": "latent",
13
+ "n_latent": 5,
14
+ "predictor_arch": "tactile_kv",
15
+ "z_gate_zero_init": false,
16
+ "tactile_encoder": "frozen DINOv2 (facebook/dinov2-base)",
17
+ "tactile_image_keys": [
18
+ "tactile_a",
19
+ "tactile_b"
20
+ ],
21
+ "embodiment": "single-arm",
22
+ "action_space": "joint",
23
+ "raw_action_dim": 8,
24
+ "action_representation": "element-wise joint delta, gripper absolute",
25
+ "norm_stats_asset_id": "n0_insert_hole_norm",
26
+ "n_execute_at_serve": 50
27
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a66b9d914122e21274c9c6ae28a0e451a7dae072080377b75e09b12c4ea235e3
3
+ size 8253873200