Add N0-VTLA UniVTAC single-arm policy
Browse files- README.md +70 -0
- assets/n0_insert_hole_norm/norm_stats.json +88 -0
- config.json +27 -0
- model.safetensors +3 -0
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
|