taeyoungrlwlrd/openarm-wam-v1-robot
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-robot.
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 thestircategory, 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_indexnumbering unchanged) andmeta/episodes.jsonl(taskslist) inrlwrld_human_lerobotand the threeopenarm_validation_v2_junhyeongsubsets.data/*/episode_*.parquetcolumnlanguage_instructionin the threeopenarm_validation_v2_junhyeongsubsets (205 files, 48,631 rows).rlwrld_human_lerobotparquets 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):
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.
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.
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.
