Scene2Demo: Self-Evolving Embodied Data Generation via Object-Action Graph
Abstract
We present Scene2Demo, an automated framework for offline embodied data generation. Given a single RGB scene image and a user query, Scene2Demo constructs an interactive simulated scene and generates executable task configurations, primitive action flows, multi-view execution videos, and offline robot-learning datasets. Its five role-specialized generation modules perform task understanding, symbolic decomposition, BDDL configuration generation, object-size adjustment, and action-flow planning. The resulting object-centric task specifications and action transitions are organized as path search over a scene-conditioned object-action graph. Failed or incomplete executions are refined by two feedback agents: a Robotic Safety Inspector that produces step-wise visual critiques and a Robotic Task Supervisor that revises action sequences or parameters using the rollout and previous evolution history. Across 102 automatically generated primitive scene-task pairs, Scene2Demo achieves a 71.6% execution success rate; on four representative long-horizon tasks, feedback-driven refinement improves both task success and subtask-level execution quality over primitive-only execution. Comparisons with RoboGen and GenSim2 show stronger execution performance under automated data-generation settings. Finally, behavior cloning policies achieve 96.0% and 92.0% success on two representative tasks, showing that the generated data supports downstream policy learning. Our project page is available at https://scene2demo-anon.github.io/.
Figures & tables
| Category | Count | Success | SR (%) |
|---|---|---|---|
| Open/Close | 36 | 24 | 66.7 |
| Pick/Place | 66 | 49 | 74.2 |
| Total | 102 | 73 | 71.6 |
| Method | ||||||
|---|---|---|---|---|---|---|
| M1: Ours (Primitive) | 0 / 50 | 0 / 50 | 40 / 70 | 0 / 50 | 66.7 / 66.7 | 74.2 / 74.2 |
| M2: Ours (Prim+Evo) | 40 / 84 | 30 / 79 | 70 / 93 | 70 / 85 | – | – |
| M3: GenSim2 (Primitive) | 0 / 73 | 5 / 78 | 55 / 91 | 0 / 68 | 100 / 100 | 38.8 / 82.1 |
| M4: RoboGen (Primitive) | 0 / 50 | 0 / 46.5 | 0 / 50 | 0 / 50 | 0 / 50.2 | 0 / 42.8 |
| M5: RoboGen (Prim+RL) | fail | fail | fail | fail | success | success |
| Tasks | VLM | Demos | Subtask 1 | Subtask 2 | Subtask 3 | Subtask 4 | Complete Task | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SR | Iter | SR | ESR | Iter | SR | ESR | Iter | SR | ESR | Iter | SR | Iter | |||
| Gemini-3-Flash | 10 | 100 | 0 | 100 | – | 0 | 30 | 30 | 1.7 | 100 | 100 | 0.7 | 30 | 2.3 | |
| GPT-5.2 | 10 | 100 | 0 | 100 | – | 0 | 30 | 30 | 2 | 66.7 | 66.7 | 1.0 | 20 | 3.5 | |
| Qwen3-VL | 20 | 100 | 0 | 100 | – | 0 | 45 | 45 | 2.7 | 88.9 | 66.7 | 0.5 | 40 | 3.1 | |
| Qwen3-VL | 10 | 100 | 0 | 100 | 100 | 0.3 | 40 | 40 | 1.8 | 75 | 66.7 | 0.7 | 30 | 2.3 | |
| Gemini-3-Flash | 10 | 100 | 0 | 70 | 62.5 | 1.6 | – | – | – | – | – | – | 70 | 1.6 | |
Appendix figures & tables13 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | ||||||
|---|---|---|---|---|---|---|
| Ours (primitive) | 10 | 10 | 10 | 10 | 36 | 66 |
| Ours (prim+Evo) | 20 | 10 | 10 | 10 | – | – |
| GenSim2 (primitive) | 20 | 20 | 20 | 20 | 80 | 80 |
| RoboGen (primitive) | 10 | 10 | 10 | 10 | 40 | 40 |
| RoboGen (prim+RL) | 1 | 1 | 1 | 1 | 1 | 1 |
| Tasks | Subtask Index | Initial State | Target State |
|---|---|---|---|
| : Glass Fridge | 1 | (not (open refrigerator_0) | (open refrigerator_0) |
| 2 | (ontop glass_0 table_0) | (not (ontop glass_0 table_0)) | |
| 3 | (inside glass_0 gripper) | (inside glass_0 refrigerator_0) | |
| 4 | (open refrigerator_0) | (not (open refrigerator_0)) | |
| : Apple Fridge | 1 | (not (open refrigerator_0) | (open refrigerator_0) |
| 2 | (ontop apple_0 table_0) | (not (ontop apple_0 table_0)) |
| Tasks | Subtask | Initial Action Flow (Pre-evolution) |
|---|---|---|
| 1 | APPROACH CONVERGE GRASP ARTICULATE_OPEN UNGRASP | |
| 2 | NAVIGATE_TO_TARGET APPROACH CONVERGE GRASP LIFT_EEF_UP(0.2) | |
| 3 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD(0.4) MOVE_EEF_FORWARD(0.1) UNGRASP | |
| 4 | NAVIGATE_TO_TARGET APPROACH CONVERGE GRASP ARTICULATE_CLOSE(0.0, 0.5) UNGRASP | |
| 1 | APPROACH CONVERGE GRASP ARTICULATE_OPEN(0.0, 0.7) UNGRASP RETREAT | |
| 2 | NAVIGATE_TO_TARGET RETREAT APPROACH CONVERGE GRASP LIFT_EEF_UP(0.2) |
| Subtask | Iter | Action Flow |
|---|---|---|
| 1 | 0 | APPROACH CONVERGE GRASP ARTICULATE_OPEN UNGRASP |
| 2 | 0 | NAVIGATE_TO_TARGET APPROACH CONVERGE GRASP LIFT_EEF_UP (0.2) |
| 3 | 0 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.4) MOVE_EEF_FORWARD (0.1) UNGRASP |
| 1 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.3) MOVE_EEF_FORWARD (0.45) UNGRASP | |
| 2 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.3) MOVE_EEF_FORWARD (0.45) MOVE_EEF_FORWARD (0.2) | |
| LIFT_EEF_DOWN (0.3) UNGRASP |
| Subtask | Iter | Action Flow |
|---|---|---|
| 1 | 0 | APPROACH CONVERGE GRASP ARTICULATE_OPEN (0.0, 0.7) UNGRASP RETREAT |
| 2 | 0 | NAVIGATE_TO_TARGET RETREAT APPROACH CONVERGE GRASP LIFT_EEF_UP (0.2) |
| 3 | 0 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.4) MOVE_EEF_FORWARD (0.1) UNGRASP |
| 1 | NAVIGATE_TO_SUPPORT MOVE_BASE_BACKWARD (0.3) MOVE_EEF_FORWARD (0.4) MOVE_EEF_FORWARD (0.2) UNGRASP | |
| 2 | NAVIGATE_TO_SUPPORT MOVE_BASE_BACKWARD (0.3) MOVE_EEF_FORWARD (0.4) TURN_BASE_LEFT (45) | |
| MOVE_EEF_FORWARD (0.2) UNGRASP |
| Subtask | Iter | Action Flow |
|---|---|---|
| 1 | 0 | APPROACH CONVERGE GRASP LIFT_EEF_UP (0.2) |
| 2 | 0 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.4) MOVE_EEF_FORWARD (0.1) LIFT_EEF_DOWN (0.3) UNGRASP |
| 1 | NAVIGATE_TO_SUPPORT MOVE_BASE_BACKWARD (0.15) MOVE_EEF_FORWARD (0.4) TURN_BASE_LEFT (15) | |
| MOVE_EEF_FORWARD (0.1) LIFT_EEF_DOWN (0.4) UNGRASP | ||
| 2 | NAVIGATE_TO_SUPPORT MOVE_BASE_BACKWARD (0.3) MOVE_EEF_FORWARD (0.2) TURN_BASE_RIGHT (20) | |
| MOVE_EEF_FORWARD (0.25) LIFT_EEF_DOWN (0.4) UNGRASP |
| Subtask | Iter | Action Flow |
|---|---|---|
| 1 | 0 | APPROACH CONVERGE GRASP LIFT_EEF_UP (0.2) |
| 2 | 0 | NAVIGATE_TO_SUPPORT MOVE_BASE_FORWARD (0.4) MOVE_EEF_FORWARD (0.1) LIFT_EEF_DOWN (0.3) UNGRASP |
| 1 | NAVIGATE_TO_SUPPORT TURN_BASE_RIGHT (60) MOVE_EEF_FORWARD (0.4) MOVE_EEF_FORWARD (0.1) | |
| LIFT_EEF_DOWN (0.3) UNGRASP | ||
| 2 | NAVIGATE_TO_SUPPORT TURN_BASE_RIGHT (60) MOVE_EEF_FORWARD (0.4) MOVE_EEF_FORWARD (0.2) | |
| LIFT_EEF_DOWN (0.3) UNGRASP |
Synthetic Data Generation for Robotics
Synthetic data generation for robotics creates simulated scenes, sensor readings, and action trajectories to train and evaluate robots.
See all 288 papers