UniWALM: Unified World Action Language Model for Embodied Robot Control
Organizations: Brown University · Amazon · Northeastern University · UT Austin ·
Abstract
Motivated by the human ability to integrate experience across language, perception, and action, we introduce UniWALM, a unified world-action-language model that learns video, action, and language in a single shared representation, where each modality is both a conditioning signal and a supervision target. We ask: can jointly generating language enrich this shared representation, improving manipulation and supporting memory-dependent behavior? Unlike prior approaches that attach a reasoning or vision-language model to a video-action backbone and run them as distinct stages, UniWALM unifies all three modalities inside a single mixture-of-transformers backbone whose per-modality diffusion heads co-denoise synchronously, decoding subtask and textual memory in the same pass as action with no separate planning stage; the generated language is re-consumed on the next step, closing a language-as-memory loop without an external planner or memory bank. To keep the action stream reliable under this richer objective, we further introduce Flow Matching with Correction (FMC), a training objective that teaches recovery from perturbed action trajectories at no inference-time cost. UniWALM consistently improves over same-backbone baselines (e.g., FastWAM) on compositional pick-and-place (MolmoSpaces) and across the memory-dependent subset of RMBench, where it reaches 34.5% without any pretrained language or reasoning model and exceeds Mem-0's keyframe-equipped setup (28.5%) using only a single anchor frame. On a real-world Find-the-Item task, generating textual memory lifts success from 11.1% to 61.1%, while state-of-the-art VLAs stay at or below chance (<=33.3%).
Figures & tables
| Press Button (target: 4 left, 1 middle, then confirm) | ||||
| next subtask: left button. memory: visible 4 1 || left button 0/4 middle button 0/1 || left button. | next subtask: left button. memory: visible 4 1 || left button 1/4 middle button 0/1 || left button. | next subtask: left button. memory: visible 4 1 || left button 2/4 middle button 0/1 || left button. | next subtask: left button. memory: visible 4 1 || left button 3/4 middle button 0/1 || left button. next: middle button. | next subtask: middle button. memory: visible 4 1 || left button 4/4 middle button 0/1 || middle button. next: confirm. |
| Battery Try (find working (battery, slot, orientation) pairs) | ||||
| next subtask: dual positive. memory: left none right none || dual positive. next: left negative. | next subtask: dual positive. memory: left none right none || dual positive. next: left negative. | next subtask: left negative. memory: left pos right pos || left negative. next: done. | next subtask: right negative. memory: left neg right pos || right negative. next: left. | next subtask: right negative. memory: left neg right pos || right negative. next: done. |
| Blocks Ranking Try (find target permutation by trial and press to confirm) | ||||
| next subtask: press. memory: press 0 swap 0 checking || press. next: swap middle right. | next subtask: swap middle right. memory: press 1 swap 0 swapping || swap middle right. next: press. | next subtask: press. memory: press 1 swap 1 checking || press. next: swap left right. | next subtask: swap left right. memory: press 2 swap 1 swapping || swap left right. next: press. | next subtask: press. memory: press 2 swap 1 checking || press. next: done. |
| Cover Blocks (cover blocks then uncover in red – green – blue order) | ||||
| Press Button, target: 3 left, 4 middle, then confirm. | |||||
|---|---|---|---|---|---|
| next subtask: left button. memory: visible 3 4 || left 0/3 mid 0/4 || left button. | next subtask: left button. memory: visible 3 4 || left 2/3 mid 0/4 || left button. next: middle. | next subtask: middle button. memory: visible 3 4 || left 3/3 mid 0/4 || middle button. | next subtask: middle button. memory: visible 3 4 || left 3/3 mid 1/4 || middle button. | next subtask: middle button. memory: visible 3 4 || left 3/3 mid 3/4 || middle button. next: confirm. | next subtask: confirm. memory: visible 3 4 || left 3/3 mid 4/4 || confirm. next: done. |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Failure case: Press Button (target: 5 left, 2 middle, 1 confirm; actual: 5- 3 -1) | ||||
|---|---|---|---|---|
| next subtask: left button. memory: visible 5 2 || left button 0/5 middle button 0/2 || left button. | next subtask: middle button. memory: visible 5 2 || left button 5/5 middle button 0/2 || middle button. | next subtask: middle button. memory: visible 5 2 || left button 5/5 middle button 1/2 || middle button. next: confirm. | next subtask: confirm. memory: visible 5 2 || left button 5/5 middle button 2/2 || confirm. next: done. | next subtask: confirm. memory: visible 5 2 || left button 5/5 middle button 2/2 || confirm. next: done. |
Vision-Language-Action Models
Vision-language-action models turn visual observations and natural-language instructions into actions for robots and other embodied agents.
See all 1,171 papers