Bigenlight commited on
Commit
30ba1a0
·
verified ·
1 Parent(s): 80bce5e

model card

Browse files
Files changed (1) hide show
  1. README.md +58 -0
README.md ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ library_name: lerobot
4
+ pipeline_tag: robotics
5
+ tags:
6
+ - robotics
7
+ - lerobot
8
+ - act
9
+ - imitation-learning
10
+ - ur7e
11
+ - end-effector
12
+ ---
13
+
14
+ # ACT · carrot-in-pot · EEF-delta (state 16 / action 7) — checkpoint 10k
15
+
16
+ Action Chunking Transformer trained on the **real** UR7e *"Put carrot in pot"* demonstrations
17
+ (54 GELLO-teleop takes, 30 fps) in the **EEF-delta action space** (`eef_delta_v1`). This is the
18
+ **10k-step checkpoint**, picked as the least-overfit of 10k..50k — all were within 0.04 mm of each
19
+ other on the open-loop metric.
20
+
21
+ Joint-space siblings for this task live in the sim evaluation (`sim_collect/eval`), the IFQL
22
+ policy in [`Bigenlight/carrot-in-pot-ifql`](https://huggingface.co/Bigenlight/carrot-in-pot-ifql).
23
+
24
+ ## Observation / action space (`eef_delta_v1`)
25
+ - `observation.state` **16-D** = `[q1..q6 (rad, UR order), tcp_x, tcp_y, tcp_z (m, base_link),
26
+ r11, r21, r31, r12, r22, r32 (first two columns of the TCP rotation — continuous 6-D rep),
27
+ grip_pos (0=open..1=closed)]`. TCP = `ur_kin.fk(q)` (base_link→tool0) + 0.174 m along flange +Z.
28
+ - `action` **7-D** = `[dx, dy, dz, drx, dry, drz, grip_cmd]`: the **achieved** TCP motion between
29
+ consecutive 30 fps frames (`dp = p_{t+1}-p_t`, `drot = so3_log(R_{t+1} R_t^T)`, base frame,
30
+ rotation left-multiplied), gripper = absolute recorded command 0..1. Deploy inverts it exactly
31
+ (`p_target = p_live + dp`, `R_target = so3_exp(drot) R_live`, analytic IK with branch locking).
32
+ - Cameras: `observation.images.cam1` (scene), `cam2` (wrist), RGB 720×1280 in the dataset,
33
+ **resized to 360×640 at train time** (`image_transforms.resize`) — resize the same way at inference.
34
+ - Backbone ResNet18 (ImageNet), `chunk_size = n_action_steps = 100`, MEAN_STD normalization,
35
+ ~51.6M params.
36
+
37
+ ## Training
38
+ - Dataset: `carrot_in_pot_eef_lerobot_v3` — a local LeRobot v3 re-export of
39
+ [`Bigenlight/carrot_in_pot_lerobot_v3`](https://huggingface.co/datasets/Bigenlight/carrot_in_pot_lerobot_v3)
40
+ (54 episodes / 17,085 frames after dropping the stale tail; joints shifted by the recorder's
41
+ per-take τ≈0.90 s cache lag and linearly re-interpolated). The EEF re-export is **not yet on
42
+ the Hub** (train_config names it `Bigenlight/carrot_in_pot_eef_lerobot_v3`).
43
+ - `lerobot-train`, batch 8, seed 1000, 50k steps configured (`save_freq` 10k), `eval_split 0.111`
44
+ (held-out episodes 48–53), single RTX A4000 (kanu). Job `act_carrot_eef`.
45
+
46
+ ## Held-out results (open-loop, episodes 48–53, k=30)
47
+ | checkpoint | pos MAE | grip acc | chunk-30 cumulative error |
48
+ |---|---|---|---|
49
+ | **10k (this)** | 0.82–0.86 mm (all ckpts) | 0.95 | 36.6–38.0 mm vs 65.6 mm zero-motion baseline |
50
+
51
+ All checkpoints 10k–50k are statistically indistinguishable on this metric; 10k was chosen as
52
+ least-overfit. lerobot's own `eval_loss` is computed on un-resized 720p and was **not** used.
53
+
54
+ ## Status
55
+ Real-robot closed-loop evaluation: **not yet run** (the deploy path is EEF mode of
56
+ `gello_policy/policy_leader_node` + `eef_space.apply_delta`; the shipped ZMQ servers are
57
+ joint-space 7/7 and refuse this checkpoint's 16-D state). Provenance: gello_software branch
58
+ `feat/carrot-eef-il` (converter `scripts/dataset/convert_carrot_to_lerobot_eef.py`, validator 71/71 PASS).