CoolFace
Datasetpublic

taeyoungrlwlrd/openarm-wam-v1-cotrain

openarm_wam_v1 Self-contained OpenArm training root for the WAM runs. Created 2026-09-15 by copying the 11 subsets actually used in training out of /data/huiwon/data/openarm_dataset_192x256/ (source left untouched) and stripping the human instruction prefix. Layout is identical to the source (robot/..., human_as_openarm28/...), so gr00t/configs/data/openarm_all_rel_ah24_config.py and the yamls only need the root path changed. No symlinks: the videos/ dirs of the four… See the full description on the dataset page: https://huggingface.co/datasets/taeyoungrlwlrd/openarm-wam-v1-cotrain.

sourceHugging Faceupdated 8d agoView on Hugging Face
0likes70downloads
Dataset Card

openarmwamv1

Self-contained OpenArm training root for the WAM runs. Created 2026-09-15 by copying the 11 subsets actually used in training out of /data/huiwon/data/openarm_dataset_192x256/ (source left untouched) and stripping the human instruction prefix.

Layout is identical to the source (robot/..., human_as_openarm28/...), so gr00t/configs/data/openarm_all_rel_ah24_config.py and the yamls only need the root path changed. No symlinks: the videos/ dirs of the four human_as_openarm28 subsets, which were symlinks into human/<subset>/videos in the source, are real copies here.

Subsets (11)

robot (6):

  • —robot/openarm_ego_jungwook (151 ep / 58,023 frames)
  • —robot/openarm_teleop_v3/bottle (96 / 35,506), cup (108 / 28,757), doll (48 / 13,414), snack (96 / 40,184)
  • —robot/banana_v21_openarm28 (54 / 16,202)

human (5):

  • —human_as_openarm28/rlwrld_human_lerobot (472 / 68,065)
  • —human_as_openarm28/openarm_validation_v2_junhyeong/close_air_fryer (52 / 12,518), left_hand_box_white_container (101 / 25,362), open_air_fryer (52 / 10,751)
  • —human_as_openarm28/anyh2r (510 / 204,399; rebuilt 2026-09-15 without the stir category, see below)

Not copied: robot/toilet_paper_jimin, robot/banana_v21_myungkyu, robot/openarm_validation_v2_junhyeong, robot/openarm_teleop_v2, raw human/*, root-level pooled_* files, .cache.

Instruction rewrite

The prefix Left hand: None. Right hand: (regex ^\s*Left hand: None\. Right hand:\s*) was removed from every task string in the four human subsets that carried it. Robot subsets and anyh2r had no prefix and are byte-identical to the source. Places rewritten:

  • —meta/tasks.jsonl (task; task_index numbering unchanged) and meta/episodes.jsonl (tasks list) in rlwrld_human_lerobot and the three openarm_validation_v2_junhyeong subsets.
  • —data/*/episode_*.parquet column language_instruction in the three openarm_validation_v2_junhyeong subsets (205 files, 48,631 rows). rlwrld_human_lerobot parquets already had no prefix and were not rewritten. Schema (incl. pandas metadata), dtypes, row order, compression and row-group size were preserved.

Mapping (old -> new):

oldnew
Left hand: None. Right hand: Pick the bottle and place in white container.Pick the bottle and place in white container.
Left hand: None. Right hand: Pick the box and place in white container.Pick the box and place in white container.
Left hand: None. Right hand: Pick the ball and place in white container.Pick the ball and place in white container.
Left hand: None. Right hand: Pick the doll and place in white container.Pick the doll and place in white container.
Left hand: None. Right hand: Pick the towel and place in white container.Pick the towel and place in white container.
Left hand: None. Right hand: Close the air fryer.Close the air fryer.
Left hand: None. Right hand: Open the air fryer.Open the air fryer.

info.json, stats.json, relative_stats.json, modality.json, wam_action_groups.json, wam_human.json, episodes_stats.jsonl are byte-identical to the source in every subset. wam_human.json still names the original source path (informational only). episodes.jsonl keeps source_h5_key / source_video_path identifiers such as ep0_Left_hand_None_Right_hand_... unchanged; these are file-name identifiers, not task text.

Pre-existing source quirks (not changed here): rlwrld_human_lerobot parquet language_instruction had no trailing period (Pick the bottle and place in white container) while tasks.jsonl did (resolved by the pick-place rewrite below). (openarm_teleop_v3/* parquet strings used to read place the ... while tasks.jsonl read Move the ...; resolved by the teleop_v3 rewrite below.)

See manifest.json for per-subset counts, md5 verification summary and the pooled-stats check.

teleop_v3 instruction rewrite 2026-09-15

Second rewrite, on top of the prefix strip above. Scope: robot/openarm_teleop_v3/{bottle,cup,doll,snack} only (48 tasks, 348 episodes, 117,861 frames). Exact-match dictionaries built from templates (no regex); the run fails if a task string is not in the dictionary or a dictionary key is unused. No hyphens anywhere (the text normalizer strips punctuation without inserting spaces).

Templates:

  • —bottle (16): Move the {O} bottle to {P} -> Move the {O} bottle to the {P} of the box, O in {tea, trevi, water, pokari sweat}, P in {top left, top right, bottom left, bottom right}
  • —snack (16): Move the {S} to {P} -> Move the {S} to the {P} of the box, S in {butter cookie, turtle chip, brown rice chip, rice star chip}
  • —cup (12): Move the {C} cup to left|right|center -> Move the {C} cup to the left side of the rack | ... the right side of the rack | ... the middle of the rack, C in {grey, blue, green, white}
  • —doll (4): Move the {D} doll to box -> Put the {D} doll in the box, D in {kuromi, cinnamoroll, pink bird, rabbit}

Places rewritten (per subset): meta/tasks.jsonl (task; task_index unchanged), meta/episodes.jsonl (tasks list), and every data/*/episode_*.parquet language_instruction column (348 files). The parquet column previously held a different lowercase variant (place the tea bottle to top left, place the Cinnamoroll doll to box, ...) that did not match tasks.jsonl; each row was set to the NEW tasks.jsonl string for its task_index (old text not parsed), so parquet and tasks.jsonl are now consistent. Schema (incl. the huggingface schema metadata), dtypes, row order, SNAPPY compression and single row group preserved; only the parquet footer's writer version string differs. Every other file in the four subsets is md5-identical to before the rewrite (stats.json, relative_stats*.json, info.json, modality.json, episodes_stats.jsonl, videos). Nothing outside the four subsets was touched.

subsetold (`tasks.jsonl`)new
bottleMove the tea bottle to top leftMove the tea bottle to the top left of the box
bottleMove the tea bottle to top rightMove the tea bottle to the top right of the box
bottleMove the tea bottle to bottom leftMove the tea bottle to the bottom left of the box
bottleMove the tea bottle to bottom rightMove the tea bottle to the bottom right of the box
bottleMove the trevi bottle to top leftMove the trevi bottle to the top left of the box
bottleMove the trevi bottle to top rightMove the trevi bottle to the top right of the box
bottleMove the trevi bottle to bottom leftMove the trevi bottle to the bottom left of the box
bottleMove the trevi bottle to bottom rightMove the trevi bottle to the bottom right of the box
bottleMove the water bottle to top leftMove the water bottle to the top left of the box
bottleMove the water bottle to top rightMove the water bottle to the top right of the box
bottleMove the water bottle to bottom leftMove the water bottle to the bottom left of the box
bottleMove the water bottle to bottom rightMove the water bottle to the bottom right of the box
bottleMove the pokari sweat bottle to top leftMove the pokari sweat bottle to the top left of the box
bottleMove the pokari sweat bottle to top rightMove the pokari sweat bottle to the top right of the box
bottleMove the pokari sweat bottle to bottom leftMove the pokari sweat bottle to the bottom left of the box
bottleMove the pokari sweat bottle to bottom rightMove the pokari sweat bottle to the bottom right of the box
cupMove the grey cup to leftMove the grey cup to the left side of the rack
cupMove the grey cup to rightMove the grey cup to the right side of the rack
cupMove the grey cup to centerMove the grey cup to the middle of the rack
cupMove the blue cup to leftMove the blue cup to the left side of the rack
cupMove the blue cup to rightMove the blue cup to the right side of the rack
cupMove the blue cup to centerMove the blue cup to the middle of the rack
cupMove the green cup to leftMove the green cup to the left side of the rack
cupMove the green cup to rightMove the green cup to the right side of the rack
cupMove the green cup to centerMove the green cup to the middle of the rack
cupMove the white cup to leftMove the white cup to the left side of the rack
cupMove the white cup to rightMove the white cup to the right side of the rack
cupMove the white cup to centerMove the white cup to the middle of the rack
dollMove the kuromi doll to boxPut the kuromi doll in the box
dollMove the cinnamoroll doll to boxPut the cinnamoroll doll in the box
dollMove the pink bird doll to boxPut the pink bird doll in the box
dollMove the rabbit doll to boxPut the rabbit doll in the box
snackMove the butter cookie to top leftMove the butter cookie to the top left of the box
snackMove the butter cookie to top rightMove the butter cookie to the top right of the box
snackMove the butter cookie to bottom leftMove the butter cookie to the bottom left of the box
snackMove the butter cookie to bottom rightMove the butter cookie to the bottom right of the box
snackMove the turtle chip to top leftMove the turtle chip to the top left of the box
snackMove the turtle chip to top rightMove the turtle chip to the top right of the box
snackMove the turtle chip to bottom leftMove the turtle chip to the bottom left of the box
snackMove the turtle chip to bottom rightMove the turtle chip to the bottom right of the box
snackMove the brown rice chip to top leftMove the brown rice chip to the top left of the box
snackMove the brown rice chip to top rightMove the brown rice chip to the top right of the box
snackMove the brown rice chip to bottom leftMove the brown rice chip to the bottom left of the box
snackMove the brown rice chip to bottom rightMove the brown rice chip to the bottom right of the box
snackMove the rice star chip to top leftMove the rice star chip to the top left of the box
snackMove the rice star chip to top rightMove the rice star chip to the top right of the box
snackMove the rice star chip to bottom leftMove the rice star chip to the bottom left of the box
snackMove the rice star chip to bottom rightMove the rice star chip to the bottom right of the box

Verification (see manifest.json -> "teleop_v3 instruction rewrite 2026-09-15"): per-file md5 diff vs a pre-rewrite snapshot (only the 2 meta files + parquets changed per subset), full scan of every parquet row against tasks.jsonl[task_index], spot check of first/last episode per subset, episode/frame/row counts unchanged, no residual Move the ... to top left / place the ... strings, and a hyphen scan of every task string across the whole root (73 tasks.jsonl lines, 1,737 parquets): 0 hits.

human pick-place rewrite 2026-09-15

Third rewrite. Scope: human_as_openarm28/rlwrld_human_lerobot (5 tasks, 472 episodes, 68,065 frames) and human_as_openarm28/openarm_validation_v2_junhyeong/left_hand_box_white_container (1 task, 101 episodes, 25,362 frames). Exact-match dictionary of 5 entries (Pick the {O} and place in white container. -> Pick up the {O} and place it in the white container, O in {bottle, box, ball, doll, towel}); the new strings deliberately have NO trailing period. Open the air fryer. / Close the air fryer. and anyh2r untouched. Same machinery and checks as the teleopv3 rewrite: `meta/tasks.jsonl` (`taskindex unchanged), meta/episodes.jsonl, and every parquet languageinstruction` row set to the new `tasks.jsonl` string for its `taskindex (the rlwrld_human parquets previously held the prefix-stripped string without the trailing period; the old text was not parsed). 573 parquets rewritten (93,427 rows); schema incl. pandas metadata, dtypes, row order, SNAPPY, single row group preserved; every other file md5-identical to the pre-rewrite snapshot. Full parquet scan against tasks.jsonl[task_index], first/last-episode spot checks, counts unchanged, no residual place in white container, hyphen scan of the whole root (73 tasks.jsonl` lines, 1,737 parquets): 0 hits.

subsetold (`tasks.jsonl`)new
rlwrldhumanlerobotPick the bottle and place in white container.Pick up the bottle and place it in the white container
rlwrldhumanlerobotPick the box and place in white container.Pick up the box and place it in the white container
rlwrldhumanlerobotPick the ball and place in white container.Pick up the ball and place it in the white container
rlwrldhumanlerobotPick the doll and place in white container.Pick up the doll and place it in the white container
rlwrldhumanlerobotPick the towel and place in white container.Pick up the towel and place it in the white container
openarmvalidationv2junhyeong/lefthandboxwhite_containerPick the box and place in white container.Pick up the box and place it in the white container

anyh2r stir category removed 2026-09-15

human_as_openarm28/anyh2r was rebuilt from human/anyh2r (source root, read-only) with scripts/wam_dit4dit/openarm/convert_anyh2r_to_lerobot.py --exclude-category stir (commit 665f2e4a on huiwon/droid14b-openarm, which adds the repeatable --exclude-category flag and writes total_videos = episodes x 2). 561 -> 510 episodes, 224,589 -> 204,399 frames, 1,122 -> 1,020 mp4, 12 -> 11 task strings (stir inside the pot with the yellow spatula, 51 ep / 20,190 fr, dropped). Categories are indexed in sorted order and stir sorted second-to-last, so episodes 0..458 (ball .. doll) and task_index 0..10 are unchanged and byte-identical to the previous subset; the 51 white_bowl episodes moved from 510..560 to 459..509 (their mp4s are byte-identical, their parquets differ only in episode_index / index). meta/stats.json and meta/relative_stats.json were restored from the previous subset (pooled payloads; relative_stats.json md5 equals the other 10 dirs, stats.json state/action equal the root pooled file — its per-dir timestamp stats make its md5 differ between dirs as before). meta/wam_human.json carries excluded_categories: ["stir"] and per-category counts matching the source README minus stir. The previous 561-episode subset is kept at /data/huiwon/tmp/oaclean/anyh2r_prev_561/ (outside this root). No other subset was touched.

anyh2r 'from table' removal 2026-09-15

Applied to the rebuilt subset, same machinery as the other rewrites: exact-match dictionary of 11 entries (7 change, 4 identity; fails on unmatched or unused strings), meta/tasks.jsonl (task_index unchanged), meta/episodes.jsonl, and parquet language_instruction set to tasks.jsonl[task_index] (373 parquets / 178,671 rows rewritten; the 137 parquets of the four unchanged tasks are byte-identical). Schema incl. pandas metadata, dtypes, row order, SNAPPY, single row group preserved; everything else md5-identical to the post-rebuild snapshot. Full parquet scan, first/last-episode spot checks, counts unchanged, no residual from table / stir, hyphen scan of the whole root (72 tasks.jsonl lines, 1,686 parquets): 0 hits.

oldnew
pick up the ball from table and put it in the white boxpick up the ball and put it in the white box
move the cup aside, then pick up the ball from table and put it in the white boxmove the cup aside, then pick up the ball and put it in the white box
pick up the bottle from table and put it in the white boxpick up the bottle and put it in the white box
pick up the bottle from table and put it on the basketpick up the bottle and put it on the basket
pick up the small box from table and put it in the white boxpick up the small box and put it in the white box
pick up the doll from table and put it in the white boxpick up the doll and put it in the white box
pick up the white bowl from table and put it in the white boxpick up the white bowl and put it in the white box
move the box to the left with both hands(unchanged)
move the box to the right with both hands(unchanged)
flip the box with both hands so the barcode faces up(unchanged)
pour the coffee from the bottle into the red cup(unchanged)