# FailSafe Dataset Guide This guide explains how to integrate and use the FailSafe dataset (correctdata_v2) with the Robometer pipeline. Source: `https://huggingface.co/datasets/onepiece1999/correctdata_v2/tree/main` ## Overview - The dataset contains three tasks with failures and successes: - `FailPickCube-v1`: "Pick up the red cube" - `FailPushCube-v1`: "push and move a cube to a goal region in front of it" - `FailStackCube-v1`: "Pick up a red cube and stack it on top of a green cube and let go of the cube without it falling." - Each task has ~100 seed folders. Each seed contains a `Ground_Truth/` (success) and multiple failure attempt folders. - Each attempt has camera views `front/`, `side/`, `wrist/` with ordered `.png` frames. - Additionally, JSON files (e.g., `vla_data_FailPickCube-v1.json`, `vla_data_GT_PickCube-v1.json`) provide sub-task annotated mini-trajectories with success/failure labels. ## Directory Structure ``` / FailPickCube-v1/ 0/ Ground_Truth/ front/0.png ... side/*.png wrist/*.png 1_trans_x_2/ front/*.png side/*.png wrist/*.png 1/ ... FailPushCube-v1/ ... FailStackCube-v1/ ... json_files/ vla_data_FailPickCube-v1.json vla_data_GT_PickCube-v1.json ... ``` ## Configuration (configs/data_gen_configs/failsafe.yaml) ```yaml # configs/data_gen_configs/failsafe.yaml dataset: dataset_path: ./datasets/failsafe dataset_name: failsafe output: output_dir: ./robometer_dataset/failsafe_rfm max_trajectories: -1 max_frames: 64 use_video: true fps: 10 shortest_edge_size: 240 center_crop: false hub: push_to_hub: true hub_repo_id: failsafe_rfm ``` ## Loader - File: `dataset_upload/dataset_loaders/failsafe_loader.py` - Function: `load_failsafe_dataset(dataset_path)` - The loader: - Builds full episodes from `Ground_Truth/` (success) and failure attempt folders for the chosen camera `view`. - Parses `vla_data_*.json` entries to create sub-task mini-trajectories using the specified image paths and labels; includes the `sub_task` text in the trajectory `task` field. - Uses the per-task instructions above when JSONs do not specify an instruction. ## Usage ```bash uv run python -m dataset_upload.generate_hf_dataset --config_path=dataset_upload/configs/data_gen_configs/failsafe.yaml ``` This will: - Load full episodes and sub-task mini-trajectories for the selected `view` - Generate web-optimized videos - Create a HuggingFace dataset ready to push or save ## Notes - If JSON files are at the dataset root instead of `json_files/`, the loader will look there as a fallback. - You can switch `view` in the YAML to `side` or `wrist` to regenerate the dataset for a different camera.