Anvil: Scaling Embodied Spatial Intelligence through Knowledge Recirculation
Organizations: The Chinese University of Hong Kong · The Hong Kong University of Science and Technology (Guangzhou)
Abstract
Embodied spatial intelligence requires more than visual recognition: models must localize entities, reason about their relations, and express this knowledge in action-relevant forms. Yet joint training can conflate the knowledge needed at different stages because supervision is fragmented across incompatible geometric and semantic outputs. We introduce Anvil, a unified framework for data generation, training, and benchmarking for embodied spatial intelligence. (1) Anvil-Gen is a heterogeneous data flywheel that combines form-specific generation, cross-stage consistency verification, and failure-driven recollection across 11 Ground--Relation--Act forms. (2) Anvil-Ben provides scene-aligned supervision for learning diverse embodied spatial capabilities and scene-linked assessments that distinguish stage competence from error propagation. (3) Anvil-MOPD is a 9B student that consolidates heterogeneous spatial knowledge through distillation from specialist teachers. Semantic-first-fault routing targets teacher supervision to the student's earliest decisive failure, while stage normalization controls the loss scale across native outputs of different lengths. We construct 5.8M source-grounded records spanning 160K images, reserving 580K spatial records for held-out evaluation and using the remaining 5.22M records for training. On average across seven public benchmarks, Anvil-MOPD outperforms Qwen3.5-9B and RynnBrain-8B by 9.29 and 11.03 percentage points, respectively, while reaching 80.67% on VABench-Point. Controlled studies support targeted coverage, selective transfer, and feedback-guided repair as complementary framework components.
Figures & tables
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Family | Form / structure | Native target and consistency requirement |
| G Ground | Box | Referred entity and bounded, ordered corners. |
| Detection | Entity-indexed boxes with non-duplicate instances. | |
| Mask | Instance or part region consistent with its anchor. | |
| Point | Object, contact, or free-space location in a declared frame. | |
| S Relation | Depth order | Shared entity set and consistent near–far ordering. |
| Metric comparison | Distances or comparisons with supported units. |
| Form | Constraint supplied to the generator |
| Visible point | Preserve the grounded entity label; select visible material rather than a box center by default; return an empty array if no unambiguous point exists. |
| Mask | Segment the same grounded entity with 8–16 nested coordinate pairs; follow its silhouette rather than returning box corners; abstain when one polygon cannot represent it adequately. |
| Depth order | Preserve the entity set and labels; rank near to far using visible evidence; image height or apparent size alone is insufficient. |
| Contact region | Specify a visible functional sub-part and compatible action; place the contact on material rather than an empty container interior. |
| Gripper | Use the contact proposal, an image-plane jaw axis, an approach class, and a consistent wrist angle; abstain if secure contact is unsupported. |
| Target | Evidence to inspect | Reason to withhold or reject |
| Box / detection | Identity and visible extent of the requested entity. | Wrong instance, omitted material parts, or duplicated detections. |
| Mask / point | Visible object material and its boundary. | Background inside a polygon; a point in a hole or behind an occluder. |
| Depth order | Occlusion, contact layering, or a supported perspective cue. | A reversed pair or insufficient evidence to order it. |
| Affordance / gripper | Named contact part, contact point, and jaw geometry. | A grasp in empty container space or on an unsupported contact surface. |
| Action plan | Referenced entities, stated preconditions, and ordered steps. | Inapplicable actions or a target inconsistent with the named contact. |
| Source family | Supervision role | Illustrative provenance |
| Robot video | Grounding, interaction | BridgeData V2 ( Walke et al., 2023 ) |
| Embodied scenes | Spatial targets | RefSpatial ( Zhou et al., 2025 ) |
| Simulation | Objects, actions, physical relations | Embodied-Reasoner ( Zhang et al., 2026d ) ; PhyBlock ( Ma et al., 2025 ) ; MineAnyBuild ( Wei et al., 2025 ) |
| Spatial imagery | Placement, spatial QA, relations | FSD ( Yuan et al., 2026 ) ; SAT ( Ray et al., 2025 ) ; VSI-590K ( Yang et al., 2025c ) ; SpatialSense ( Yang et al., 2019 ) |
| Object states | State-conditioned grounding and actions | ChangeIt frames ( Souček et al., 2022 ) |
| Pointing | Points and caption QA | PixMo ( Deitke et al., 2025 ) |
| Study | Updates | Batch | Learning rate | Seeds |
| Coverage continuation | 303 | 24 | 43, 44 | |
| Atomic / linked source SFT | 512 | 4 | 17 | |
| Routing continuation | 256 | 4 | 17, 23 | |
| Matched-size / nested-pool SFT | 256 | 4 | 17 |
| Model | Any-point (%) | First-point (%) |
| Base | 42.31 | 36.71 |
| Anvil | 81.12 | 71.33 |
| Benchmark | Replay | Vacancy | Mixed |
| Where2Place | 38.00 / 36.22 | 69.00 / 69.00 | 68.00 / 66.71 |
| RoboSpatial context | 44.14 / 41.74 | 63.11 / 62.30 | 62.30 / 59.84 |
| VABench-Point | 79.67 / 80.33 | 77.67 / 76.67 | 80.67 / 78.33 |
| BLINK depth | 90.32 / 90.32 | 86.29 / 88.71 | 89.52 / 89.52 |
| ERQA | 50.17 / 49.83 | 46.69 / 46.34 | 48.08 / 48.08 |
| EmbSpatial | 78.43 / 78.24 | 76.95 / 77.42 | 77.91 / 77.77 |
| Comparison | (pp) | 95% CI |
| Semantic uniform flat | +2.13 | [0.39, 3.90] |
| Semantic uniform declared | +0.53 | [-0.61, 1.63] |
| Semantic weighted uniform | -0.53 | [-1.57, 0.42] |
| Method | G S (%) | VQA ratio (%) | Teacher positions |
| Flat declared-teacher | 69.50 / 70.92 | 100.32 / 99.96 | 131,334 / 131,704 |
| Structural route | 71.28 / 70.92 | 100.12 / 99.84 | 221 / 74 |
| Declared route | 71.63 / 71.99 | 100.43 / 99.70 | 56,267 / 56,449 |
| Semantic (uniform) | 72.70 / 71.99 | 99.70 / 99.97 | 47,648 / 48,213 |
| Semantic (weighted) | 71.99 / 71.63 | 99.77 / 99.85 | 48,066 / 48,130 |
| Condition | Candidates retained | Fraction of initial pool (%) |
| Initial candidates | 2,011 | 100.00 |
| Parseable | 1,998 | 99.35 |
| Pass typed checks | 1,965 | 97.71 |
| Source-correct | 1,126 | 55.99 |
| Repair arm | Correct | Yield (%) | GPU-hours | Correct / GPU-hour |
| Generic retry | 11 | 1.24 | 2.7664 | 3.98 |
| Named feedback | 111 | 12.54 | 2.8186 | 39.38 |
| Initial failure | Candidates | Generic retry | Named feedback |
| Serialization | 13 | 0 (0.00%) | 1 (7.69%) |
| Typed fields | 33 | 2 (6.06%) | 3 (9.09%) |
| Grounding | 761 | 7 (0.92%) | 42 (5.52%) |
| Depth order | 78 | 2 (2.56%) | 65 (83.33%) |
| Total | 885 | 11 (1.24%) | 111 (12.54%) |
| Pool fraction | Unique records | Input tokens | Success (%) |
| 25% | 284 | 1,524,912 | 59.93 [49.47, 69.73] |
| 50% | 568 | 1,532,961 | 58.87 [48.28, 68.77] |
| 100% | 1,137 | 1,535,783 | 59.22 [50.00, 68.42] |
| Shard | Parsed records | Malformed lines | Time (s) |
| 0 | 167,459 | 0 | 3.81 |
| 1 | 163,286 | 0 | 3.61 |
| 2 | 167,682 | 0 | 3.65 |
| 3 | 100,464 | 1 | 2.18 |
| Total | 598,891 | 1 | 13.26 |
| Training view | Atomic tasks | Linked tasks | ||
| Detection | Depth | Strict G S | Tags closed | |
| Ground only | 84.75 | 0.00 | 18.79 | 50.71 |
| Relation only | 20.60 | 94.68 | 0.00 | 0.71 |
| Atomic mix | 84.04 | 94.33 | 1.77 | 44.68 |
| Linked | 25.71 | 0.00 | 69.86 | 69.86 |
| Model | Benchmark | Original | Blank | Shuffled |
| Base | Anvil-Bench-G (1,463) | 56.87 | 3.69 | 3.69 |
| Base | BLINK (124) | 90.32 | 48.39 | 47.58 |
| Base | RoboSpatial (122) | 44.12 | 2.79 | 1.80 |
| Anvil | Anvil-Bench-G (1,463) | 57.35 | 7.66 | 3.49 |
| Anvil | BLINK (124) | 89.52 | 51.61 | 48.39 |
| Anvil | RoboSpatial (122) | 33.60 | 0.30 | 4.50 |
| Upstream boxes | Relation specialist | Joint | Specialist joint |
| Reference | 94.68 | 94.33 | +0.35 [-1.79, +2.43] |
| Student-produced | 93.62 | 92.20 | +1.42 [-1.54, +4.38] |
| Shifted | 84.04 | 82.62 | +1.42 [-2.13, +4.91] |
| Model | Valid | Invalid | Overall | 95% CI |
| Qwen3.5-9B | 40.51 | 91.11 | 65.81 | [62.07, 70.60] |
| Anvil | 59.09 | 77.67 | 68.38 | [65.42, 72.57] |
| Action specialist | 55.53 | 89.53 | 72.53 | [68.22, 78.41] |
| Joint SFT | 53.56 | 88.54 | 71.05 | [66.86, 76.65] |
| Source | Metric | Specialist | Joint | RoboBrain | |
| PRISM | Depth agreement | 3,601 | 91.67 | 88.14 | 0.00 |
| ALFRED | Exact continuation | 3,327 | 25.91 | 18.18 | 0.00 |
| ALFRED | Next-action agreement | 3,327 | 64.44 | 56.03 | 0.00 |
| ShareRobot-Bench | Region IoU | 193 | 5.70 | 6.74 | 23.32 |
| PRISM | Valid gripper output | 580 | 0.00 | 0.00 | 0.00 |