# RoboReward Dataset Guide This guide explains how to load and convert the RoboReward dataset with the Robometer pipeline. Sources: - Paper: [RoboReward: General-Purpose Vision-Language Reward Models for Robotics](https://arxiv.org/abs/2601.00675) - Dataset: [https://huggingface.co/datasets/teetone/RoboReward](https://huggingface.co/datasets/teetone/RoboReward) ## Overview RoboReward is a dataset for training and evaluating general-purpose vision-language reward models for robotics. Each example pairs a task instruction with a real-robot rollout video and a discrete end-of-episode progress reward score. ### Dataset Composition - **Total**: 54,135 examples - **Train**: 45,072 trajectories - **Validation**: 6,232 trajectories - **Test** (RoboRewardBench): 2,831 trajectories (human-verified) Built from large-scale real-robot corpora including Open X-Embodiment (OXE) and RoboArena. ### Directory Structure ``` dataset_path/ train/ metadata.jsonl [subdirectories with MP4 videos] val/ metadata.jsonl [subdirectories with MP4 videos] test/ metadata.jsonl [subdirectories with MP4 videos] ``` ### Reward Scale Each trajectory has a discrete reward score (1-5) which is converted to `partial_success` in [0.0, 1.0]: | Reward | Meaning | partial_success | quality_label | |--------|---------|-----------------|---------------| | 1 | No success | 0.0 | failure | | 2 | Minimal progress | 0.25 | failure | | 3 | Partial completion | 0.5 | failure | | 4 | Near completion | 0.75 | failure | | 5 | Perfect completion | 1.0 | successful | ## Configuration ```yaml # configs/data_gen_configs/roboreward.yaml dataset: dataset_path: ./datasets/RoboReward dataset_name: roboreward_train # Can be overridden with --dataset.dataset_name output: output_dir: ./robometer_dataset/roboreward_rfm max_trajectories: -1 max_frames: 64 use_video: true fps: 10 shortest_edge_size: 240 center_crop: false num_workers: 4 hub: push_to_hub: true hub_repo_id: roboreward_rfm ``` Use command-line overrides to specify different splits (train/val/test). ## Loader - File: `dataset_upload/dataset_loaders/roboreward_loader.py` - Function: `load_roboreward_dataset(dataset_path, dataset_name)` - Notes: - Reads `metadata.jsonl` from the specified split (train/val/test) - Loads existing MP4 videos (no re-encoding needed) - Converts reward scores to partial_success values - All trajectories are robot demonstrations (`is_robot=True`) ## Usage ```bash # Train split uv run python -m dataset_upload.generate_hf_dataset \ --config_path=dataset_upload/configs/data_gen_configs/roboreward.yaml \ --dataset.dataset_name roboreward_train # Validation split uv run python -m dataset_upload.generate_hf_dataset \ --config_path=dataset_upload/configs/data_gen_configs/roboreward.yaml \ --dataset.dataset_name roboreward_val # Test split (RoboRewardBench - human-verified) uv run python -m dataset_upload.generate_hf_dataset \ --config_path=dataset_upload/configs/data_gen_configs/roboreward.yaml \ --dataset.dataset_name roboreward_test ``` This will: - Load the specified split (train/val/test) - Process existing MP4 videos - Convert reward scores to partial_success values - Create a HuggingFace dataset with proper quality labels ## Data Fields Each trajectory contains: - `task`: Natural-language instruction for the rollout - `frames`: Video showing robot execution - `partial_success`: Continuous score in [0.0, 1.0] derived from reward - `quality_label`: "successful" (reward=5) or "failure" (reward<5) - `is_robot`: Always `True` (all robot demonstrations) - `data_source`: "roboreward" ## Citation ```bibtex @misc{lee2026roboreward, title={RoboReward: General-Purpose Vision-Language Reward Models for Robotics}, author={Tony Lee and Andrew Wagenmaker and Karl Pertsch and Percy Liang and Sergey Levine and Chelsea Finn}, year={2026}, eprint={2601.00675}, archivePrefix={arXiv}, primaryClass={cs.RO}, url={https://arxiv.org/abs/2601.00675}, } ```