Spaces:
Running
Running
| title: Codebook | |
| emoji: 📚 | |
| colorFrom: pink | |
| colorTo: indigo | |
| sdk: static | |
| pinned: false | |
| Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference | |
| # Human-Robot Collaboration Failure Codebook | |
| - browse all failure categories | |
| - open a category detail page with its definition and representative example | |
| - inspect every coded segment attached to that category | |
| - search all coded segments across the dataset | |
| ## Project Structure | |
| ```text | |
| . | |
| |-- index.html # Homepage with failure category cards | |
| |-- category.html # Detail page for one failure category | |
| |-- all_videos.html # Searchable table of all coded segments | |
| |-- assets/ | |
| | |-- css/ # Shared and page-specific styles | |
| | `-- js/ | |
| | |-- failures.js # Failure definitions and metadata | |
| | |-- homepage.js # Homepage search + category stats | |
| | |-- category.js # Category page rendering | |
| | |-- all_videos.js # All-videos table rendering | |
| | `-- video_segment.js # Video loop/playback behavior | |
| |-- raw_data.csv # Original Label Studio export | |
| |-- cleaned_data.csv # Flattened CSV used by the web app | |
| |-- clean.py # Converts raw_data.csv -> cleaned_data.csv | |
| `-- videos/ # Source MP4 files referenced by the app | |
| ``` | |
| ## Data Files | |
| ### `raw_data.csv` | |
| This is the original annotation export. It contains: | |
| - `id` | |
| - `participant` | |
| - `condition` | |
| - `run` | |
| - `filename` | |
| - `videoLabels` | |
| The `videoLabels` column stores Label Studio timeline annotations as JSON. | |
| ### `cleaned_data.csv` | |
| This is the flattened file the app actually uses. It contains one row per coded label occurrence: | |
| - `filename` | |
| - `video_id` | |
| - `video_path` | |
| - `label` | |
| - `start` | |
| - `end` | |
| ## Video Playback Rules | |
| Segment playback behavior is implemented in `assets/js/video_segment.js`. | |
| Each embedded video: | |
| - lazy-loads when it gets near the viewport | |
| - starts from a computed frame-based window | |
| - loops only within the relevant segment | |
| - respects manual pause and scrubbing | |
| Some labels have custom playback behavior. For example: | |
| - `Success` and `Failure` play the full video | |
| - `Safety Avoidance` and `Redundant Retrieval` play from the annotated start to the end of the video | |
| - `Missed Grab` and `Slippage` expand the playback window around the annotation | |
| Default FPS is set to `30`. | |
| ## Typical Update Workflow | |
| 1. Replace or update `raw_data.csv`. | |
| 2. Run `python3 clean.py`. | |
| 3. Confirm `cleaned_data.csv` was regenerated correctly. | |
| 4. Add or update files in `videos/` if needed. | |
| 5. Start a local server and verify `index.html`, `category.html`, and `all_videos.html`. | |
| ## Current Dataset Snapshot | |
| At the time of this README update, the repository contains: | |
| - `288` data rows in `raw_data.csv` excluding the header | |
| - `657` data rows in `cleaned_data.csv` excluding the header |