Diffusers
Safetensors
NeoteAI commited on
Commit
f36c88f
·
verified ·
1 Parent(s): a43b208

Add model card

Browse files
Files changed (1) hide show
  1. README.md +105 -0
README.md ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ ---
4
+
5
+ # N0-TWAM task-specific checkpoints (one checkpoint per task)
6
+
7
+ Twenty task-specific post-trained N0-TWAM checkpoints: the 8 UniVTAC single-arm tasks and
8
+ the 12 NeoSim tasks (4 single-arm + 8 dual-arm). Each checkpoint was post-trained on a single
9
+ task.
10
+
11
+ The action space of each checkpoint, **absEE** (absolute end-effector) or **delta EE**
12
+ (horizon delta), is listed per task below.
13
+
14
+ ## UniVTAC 8
15
+
16
+ | Task (NeoSim env) | Arms | Action space | `TWAM_SERVE_TASK` | Prompt (send verbatim) |
17
+ |---|---|---|---|---|
18
+ | `insert_hole` | single | delta EE | `univtac_insert_hole_rot6d_current` | Insert the peg into the hole |
19
+ | `insert_tube` | single | delta EE | `univtac_insert_tube_rot6d_current` | Insert the tube into the slot |
20
+ | `grasp_classify` | single | delta EE | `univtac_grasp_classify_hdf5_current` | Grasp classify |
21
+ | `pull_out_key` | single | delta EE | `univtac_pull_out_key_rot6d_current` | Extract a key from a lock |
22
+ | `insert_HDMI` | single | delta EE | `univtac_insert_HDMI_rot6d_current` | Insert the HDMI connector into the slot |
23
+ | `put_bottle_in_shelf` | single | delta EE | `univtac_put_bottle_in_shelf_rot6d_current` | Place a bottle onto a shelf |
24
+ | `lift_can` | single | absEE | `univtac_lift_can_rot6d_current` | Lift the can |
25
+ | `lift_bottle` | single | absEE | `univtac_lift_bottle_rot6d_current` | Lift the bottle |
26
+
27
+ ## NeoSim 12
28
+
29
+ | Task (NeoSim env) | Arms | Action space | `TWAM_SERVE_TASK` | Prompt (send verbatim) |
30
+ |---|---|---|---|---|
31
+ | `grasp_chip` | single | absEE | `univtac_grasp_chip_hdf5_current` | Grasp chip |
32
+ | `insert_USB` | single | delta EE | `univtac_insert_USB_hdf5_current` | Insert USB |
33
+ | `phone_socket_replug` | single | absEE | `univtac_phone_socket_replug_hdf5_current` | Pull a phone connector out of its socket and plug it back in |
34
+ | `pour_ball` | single | delta EE | `univtac_pour_ball_hdf5_current` | Grasp a cup and pour the balls inside it out onto a plate |
35
+ | `dual_bowl_place_stack` | dual | delta EE | `univtac_dual_bowl_stack_hdf5_current` | Use dual arms to stack a bowl |
36
+ | `dual_plate_place_stack` | dual | delta EE | `univtac_dual_plate_stack_hdf5_current` | Use dual arms to stack a plate |
37
+ | `dual_bowl_unstack` | dual | delta EE | `univtac_dual_bowl_unstack_hdf5_current` | Use dual arms to unstack a bowl |
38
+ | `dual_screw_sleeve` | dual | delta EE | `univtac_dual_screw_sleeve_hdf5_current` | Use dual arms to screw the sleeve |
39
+ | `dual_cup_unstack` | dual | delta EE | `univtac_dual_cup_unstack_hdf5_current` | Use dual arms to unstack the cups |
40
+ | `dual_cup_handover_place` | dual | delta EE | `univtac_dual_cup_handover_hdf5_current` | Use dual arms to hand over a cup |
41
+ | `dual_cup_place_stack` | dual | delta EE | `univtac_dual_cup_stack_hdf5_current` | Use dual arms to stack a cup |
42
+ | `dual_gear_holder` | dual | delta EE | `univtac_dual_gear_holder_hdf5_current` | Use dual arms to place the gear in the holder |
43
+
44
+ ## Serving and evaluation
45
+
46
+ Everything needed besides this repo is public: the code
47
+ (<https://github.com/neoteai/N0-TWAM>), the base model components
48
+ (`NeoteAI/n0-twam-base`: `vae/`, `text_encoder/`, `tokenizer/`) and the simulator with its
49
+ evaluation clients (<https://github.com/neoteai/NeoSim>, Isaac Sim 4.5.0 / Isaac Lab 2.1.1).
50
+
51
+ **1. Build a serve bundle** for one task (N0-TWAM repo):
52
+
53
+ ```bash
54
+ python script/make_serve_bundle.py \
55
+ --checkpoint /path/to/this-repo/checkpoints/univtac8/lift_can \
56
+ --base /path/to/n0-twam-base --bundle /path/to/bundles/lift_can
57
+ ```
58
+
59
+ The script notes that there is no `train_meta.json`; that is expected for these checkpoints.
60
+
61
+ **2. Set the inference settings** in
62
+ `n0_twam/configs/twam_posttrain_server_cfg.py`:
63
+
64
+ ```python
65
+ s.num_inference_steps = 15
66
+ s.action_num_inference_steps = 10
67
+ ```
68
+
69
+ **3. Start one server per task.** `TWAM_SERVE_TASK` and `TWAM_SERVE_ACTION_MODE`
70
+ (`absee` | `delta`) come from the tables above:
71
+
72
+ ```bash
73
+ TWAM_SERVE_POOL=/path/to/this-repo/pool \
74
+ TWAM_SERVE_TASK=univtac_lift_can_rot6d_current \
75
+ TWAM_SERVE_ACTION_MODE=absee \
76
+ TWAM_SERVE_BUNDLE=/path/to/bundles/lift_can TWAM_SERVE_OUT=/path/to/serve-output \
77
+ python -m n0_twam.n0_twam_server --config-name multitask_server --port 29601
78
+ ```
79
+
80
+ The config wires that task's own normalization stats, camera/tactile keys and action
81
+ channels. Actions must be de-normalized with the task's own stats and in the task's own
82
+ action space; mixing them up rescales actions by orders of magnitude.
83
+
84
+ **4. Run the client** (NeoSim repo). The `demo` task config sends the marker-less `rgb`
85
+ tactile image these checkpoints were trained on; the prompt is passed verbatim:
86
+
87
+ ```bash
88
+ python eval/eval_twam_ee_cl.py lift_can demo --server_host <server-ip> --server_port 29601 \
89
+ --prompt "Lift the can"
90
+ ```
91
+
92
+ Dual-arm tasks use `eval/eval_twam_ee_dual_cl.py` with the same arguments. Keep the client
93
+ defaults (`UNIVTAC_TICKS_PER_SLOT=2`, all tactile keyframes, per-task step limits).
94
+
95
+ ## Layout
96
+
97
+ ```
98
+ checkpoints/<suite>/<task>/transformer/ config.json + diffusion_pytorch_model.safetensors
99
+ pool/ serve-time task pool for the `multitask_server` config
100
+ norm_stat_per_robot.json delta-EE stats, one entry per task (16)
101
+ norm_stat_absee_per_robot.json absEE stats, one entry per task (4)
102
+ train/<TWAM_SERVE_TASK>/meta/ info.json + tasks.jsonl (minimal stubs, see Notes)
103
+ norm/<task>/ the same stats as one file per task
104
+ ```
105
+