ECoMEM: Explicit Concept Memory for Memory-Dependent Robot Control
Organizations: Stanford University
Abstract
A robot may lose sight of an object it must later retrieve, need to recall what a person demonstrated earlier, or track which steps of a task it has already completed. Current vision-language-action (VLA) policies often fail once the information needed for action disappears from the current observation, making memory critical for long-horizon robot behavior. Existing approaches typically provide longer histories or learn implicit memory from observation-action trajectories. But action supervision tells a policy how to act, not what to remember: it does not specify which past facts should persist or how they should change as new evidence arrives. We therefore separate maintaining an evidence-grounded account of the past from learning how to act on it. This insight motivates Explicit Concept Memory (ECoMEM), which represents task-relevant history with a reusable library of grounded concepts. An evidence-based Writer selects and updates these records, while a learned Reader turns them into memory tokens that directly condition the VLA. Across 16 RoboMME tasks, ECoMEM leads the evaluated robot policies on 15 tasks. On two new real-robot tasks, the same memory library either transfers directly or requires only one new concept, achieving 86.1% success versus 8.6% for a no-memory VLA. These results show that explicit concepts provide a reusable and extensible memory interface for robot control. Project website: https://ecomem.github.io/
Figures & tables
| Method | Counting | Permanence | Reference | Imitation | AVG | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Bin Fill | Pick Xtimes | Swing Xtimes | Stop Cube | Video Umsk | Button Umsk | Video UmskS | Button UmskS | Pick HighL | Video Repick | Video PicBtn | Video PicOrd | Move Cube | Insert Peg | Pattern Lock | Route Stick | ||
| Human Performance | 96.00 | 100.00 | 80.00 | 78.00 | 90.00 | 92.00 | 92.00 | 90.00 | 92.00 | 92.00 | 98.00 | 90.00 | 90.00 | 98.00 | 84.00 | 86.00 | 90.50 |
| FrameSamp+Modul | 39.56 | 87.33 | 92.00 | 42.00 | 32.67 | 25.11 | 24.44 | 18.22 | 22.89 | 30.44 | 60.00 | 32.00 | 77.78 | 7.56 | 53.56 | 66.67 | 44.51 |
| 30.00 | 42.89 | 35.56 | 6.67 | 20.44 | 22.22 | 18.67 | 6.67 | 11.33 | 0.44 | 31.11 | 25.78 | 26.00 | 1.56 | 2.89 | 4.67 | 17.93 | |
| w/ past actions | 26.67 | 58.33 | 26.67 | 4.67 | 30.67 | 23.67 | 20.67 | 16.00 | 12.33 | 8.67 | 24.00 | 18.67 | 34.00 | 1.00 | 4.00 | 5.67 | 19.73 |
| SAM2Act+ | 40.00 | 76.00 | 25.33 | 0.00 | 27.33 | 32.00 | 18.00 | 26.67 | 17.33 | 5.33 | 24.67 | 20.00 | 29.33 | 0.00 | 0.00 | 0.00 | 21.37 |
| Family | Concept extracted | Structured | QA | Concept Memory |
|---|---|---|---|---|
| Entity & Spatial | Picked-object identity | 71.4% | 71.4% | 100.0% |
| Highlighted-object set | 63.2% | 63.2% | 97.4% | |
| State & Relation | Currently highlighted | 100.0% | 97.4% | 97.4% |
| Currently holding queried object | 100.0% | 96.7% | 100.0% | |
| Event & Progress | Pick–place cycle count | 86.7% | 93.3% | 100.0% |
| Region-entry count | 95.0% | 90.0% | 95.0% |
| ScoopPour | CupSwitch | Pooled | |||||
|---|---|---|---|---|---|---|---|
| Method | succ./trials | rate | |||||
| ECoMEM | 16/20 | 19/23 | 11/12 | 11/12 | 11/12 | 68/79 | 86.1% |
| (no memory) | 4/12 | 0/12 | 0/11 | 0/12 | 1/11 | 5/58 | 8.6% |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Concept / arguments | Meaning and representation |
|---|---|
| Entity & Spatial Grounding | |
| Entity identity and language binding | Episode-local entity keys link observations, relations, and events. Groundings retain instruction phrases and aliases; the policy interface encodes entity slots rather than alias strings. |
| role:cube , role:container , role:object , role:region , role:robot | The five grounding-role codes in the base policy vocabulary. Each grounding records an entity key, role, aliases, confidence, and source. |
| Entity location and endpoint anchor | Grounded entity or tool-endpoint locations are supplied to the Reader as row and column cells on a image grid. Cell indices are 1-based; zero denotes an unspecified position. Selected goal records also carry the subject’s target cell. |
| occupies_region (entity, region) | Current occupancy of a grounded region. Entry and exit are represented by separate transition events. |
| side:left , side:right | Entity-bound categorical insertion-side predicates, distinct from the demonstrated endpoint’s spatial anchor. |
| Field | Encoding |
|---|---|
| Kind | Record type: belief, event, goal, grounding, or geometry; zero denotes padding. |
| Predicate | Shared identifiers for predicates, transition events, entity roles, and categorical attributes. |
| Subject, object | Episode-local entity identifiers; zero denotes an unspecified argument. |
| Truth | True, false, or unknown; zero denotes an inapplicable value. |
| Status | Tentative, confirmed, or stale; zero denotes an inapplicable value. |
| Confidence | for confidence . |
| Task | Median C | Median A | A/C | Mean C | Mean A |
|---|---|---|---|---|---|
| VideoUnmask | 2.23 | 40.47 | 3.87 | 41.41 | |
| VideoRepick | 4.38 | 52.66 | 5.51 | 56.61 |
| Task | Matches C | Matches A | Successes C | Successes A |
|---|---|---|---|---|
| VideoUnmask | 98/100 | 20/100 | 43/50 | 12/50 |
| PatternLock | 86/98 | 0/98 | 36/50 | 1/50 |
| Concept Memory | No-memory | |||||
| Task | Target | Success / Trials | Rate (%) | Success / Trials | Rate (%) | Gain (pp) |
| ScoopPour | 16 / 20 | 80.00 | 4 / 12 | 33.33 | +46.67 | |
| 19 / 23 | 82.61 | 0 / 12 | 0.00 | +82.61 | ||
| 11 / 12 | 91.67 | 0 / 11 | 0.00 | +91.67 | ||
| CupSwitch | 11 / 12 | 91.67 | 0 / 12 | 0.00 | +91.67 | |
| 11 / 12 | 91.67 | 1 / 11 | 9.09 | +82.58 | ||
| No-memory outcomes | ||||
| Task | Target | Concept Memory failures | Recorded cycle counts | Other outcomes |
| ScoopPour | 4 failures | 1 (success): 4; 2: 2; 6: 1 | Too many cycles: 2; timeout: 1; freeze: 1; miss: 1 | |
| 4 failures | 0: 2; 1: 6; 3: 1; 4: 1 | Timeout: 2 | ||
| 1 failure | 2: 2; 4: 2 | Timeout: 7 | ||
| CupSwitch | 1 timeout | 0: 6; prolonged 0-cycle execution: 1 | Timeout: 4; miss: 1 | |
| 1 timeout | 0: 1; 1: 2 | Too many cycles: 2; timeout: 3; miss: 1; 3 cycles then timeout: 1; success: 1 | ||