# Chapter 11 — 与世界模型 (World Model) 的衔接
> 本章目标:说明 PRISM 输出的"空间记忆"如何被 **M-JEPA / DreamerV3 / Genie / NVIDIA Cosmos** 等世界模型消化,又如何回写到 PRISM——形成 **"感知 → 记忆 → 想象 → 验证"** 的闭环。
---
## 11.1 为什么记忆需要"接"世界模型
PRISM 自己回答了 *what is here*(这里有什么)和 *what was here*(这里曾有过什么);但还没回答 *what would happen if...*(如果……会怎样)。
后者正是世界模型 (World Model) 的职责:
| 问题 | 谁回答 |
|------|--------|
| "床头柜在哪?" | PRISM L4 |
| "从门口到床走 2 秒会撞到吗?" | PRISM L2 + 简单运动学 |
| "把椅子推到门口,会挡住门吗?" | **需要世界模型 rollout** |
| "如果把水洒在床上,下一秒会发生什么?" | **需要物理世界模型** |
| "客人下一步可能要什么?" | **需要 latent dynamics** |
PRISM 的角色:**给世界模型提供"上下文 + 初始状态 + 反事实约束"**。
---
## 11.2 PRISM 与 World Model 的对接接口
```mermaid
flowchart TB
ACT["Action / Plan"]
subgraph WM["World Model (WM)"]
ENC["Encoder
(obs → z)"]
DYN["Dynamics
(z, a → z')"]
DEC["Decoder
(z → obs / r)"]
ENC --> DYN --> DEC
end
subgraph PRISM["PRISM"]
direction LR
L1["L1"] --- L2["L2"] --- L3["L3"] --- L4["L4"]
DELTA["delta + anchors"]
end
WM --> ACT
PRISM -- "context
(LTM 上下文)" --> WM
WM -- "reality check
(rollout vs delta)" --> PRISM
style WM fill:#e3f2fd,stroke:#1565c0
style PRISM fill:#fff7d6,stroke:#c97a00
style ACT fill:#d4f0d4,stroke:#2e7d32
```
PRISM 与 WM 之间有 **4 条接口**:
| 方向 | 接口 | 含义 |
|------|------|------|
| PRISM → WM | **观测 obs** | 当前 ZED 帧 + 当前 L4 节点的属性 |
| PRISM → WM | **上下文 context** | L3 + L4 的场景图作为 prior |
| WM → PRISM | **想象 rollout** | 假设动作 a 序列下未来 z̃ 的解码图像/状态 |
| WM → PRISM | **物理先验** | 物体的可移动性、稳定性、堆叠规则等 |
---
## 11.3 三类目标世界模型与对接方式
### 11.3.1 M-JEPA(Meta 的预测式 JEPA 系列)
- **特点**:在隐空间预测下一时刻的"嵌入",不重建像素,物理一致性好
- **对接**:
- 把 PRISM L1 关键帧 + 当前位姿 + 当前局部 TSDF 拼成 `obs`
- 把 L4 场景图序列化为 token 注入到 M-JEPA 的 context 端
- rollout 得到的下一 z 通过 decoder(如轻量 NeRF 渲染头)变回图像,与下一帧真实图像对比
```python
# bridge/mjepa_bridge.py
def build_obs(prism: PRISM, t: float) -> Dict:
return {
"rgb": prism.l1.frames[-1].rgb_left,
"depth": prism.l1.frames[-1].depth,
"pose": prism.l1.frames[-1].pose.to_matrix(),
"occupancy": prism.l2.local_octomap_crop(radius=3.0),
"graph": prism.l4.serialize_neighborhood(radius=3.0),
}
```
### 11.3.2 DreamerV3 / TD-MPC2(基于 RSSM 的循环世界模型)
- **特点**:训练快,适合控制任务(导航、抓取)
- **对接**:用 PRISM 提供的**任务级 reward 信号** —— 例如 "到达目标房间" 由 PRISM L3 判定
- **PRISM 既是 obs source,也是 reward function**:
```python
class PRISMDreamerEnv(gym.Env):
def __init__(self, prism, sim_or_real):
self.prism = prism
self.sim = sim_or_real
def reset(self): return self._obs_from_prism()
def step(self, action):
self.sim.apply(action)
obs = self._obs_from_prism()
reward = self.prism.api.task_progress() # 调 API
return obs, reward, done, info
```
### 11.3.3 视频生成式世界模型(Cosmos / Genie 2 / Sora 类)
- **特点**:像素级 rollout,逼真度高,可生成"如果机器人转左 90° 会看到什么"
- **对接**:
- 用 PRISM L2 的 3DGS 渲染当前帧作为 "first frame"
- 文本指令 + first frame → 视频生成
- 生成的视频被 PRISM detector 复用做"反事实检测"
---
## 11.4 三类核心用法
### 11.4.1 用法 A:Planning by Imagination(用 WM 做规划)
```
1. 任务 = "在 308 把椅子推到角落"
2. PRISM 提供:椅子 bbox、房间 polygon、可通行栅格
3. WM rollout:候选 5 条推送轨迹,模拟每条的结果
4. 评估:每个 rollout 后用 PRISM 验证"椅子是否真在角落"
5. 选最优轨迹,执行
```
### 11.4.2 用法 B:Anomaly Detection(用预测误差发现异常)
```
1. 在线时 WM 持续预测下一帧 z̃
2. 与真实下一帧 z 对比
3. 误差爆增 → 异常事件(玻璃打碎?人摔倒?)
4. PRISM 把异常写入 delta 并触发告警
```
### 11.4.3 用法 C:Self-Supervised Pretraining(用 PRISM 数据训 WM)
```
1. 机器人长期运行积累 stm/keyframes/ 与 pose / action 配对
2. 用这些数据 fine-tune M-JEPA / DreamerV3
3. 每月触发一次,使 WM 越来越懂这个具体场景
```
---
## 11.5 数据格式约定(PRISM-WM Bridge Schema)
```python
@dataclass
class WMObservation:
rgb: np.ndarray # (H,W,3) uint8
depth: np.ndarray # (H,W) float32, meters
pose_world: np.ndarray # (4,4)
local_occ: np.ndarray # (Dx,Dy,Dz) bool, 3m 邻域
graph_tok: List[int] # 序列化场景图 token (≤ 256)
timestamp: float
@dataclass
class WMAction:
type: Literal["move","push","grasp","look_at"]
params: Dict
# e.g. {"type":"move", "params":{"delta_xy":[0.3,0], "delta_yaw":0}}
@dataclass
class WMRollout:
actions: List[WMAction]
predicted_obs: List[WMObservation]
predicted_reward: List[float]
confidence: float
```
→ 这是 PRISM ↔ WM 的"USB 接口",未来不同 WM 都按这个对接。
---
## 11.6 一个完整闭环示例
```
任务:"把垃圾桶从 305 推到电梯厅"
1. PRISM 查 L4 → trash_bin_305, bbox, parent=room_305
2. PRISM 查 L3 → 路径 room_305 → hallway → lift_lobby
3. PRISM 提供 obs_t(当前帧、局部栅格、相关 L4 子图)
4. WM (DreamerV3) 内部 imagine 100 步:
- 候选动作序列 a_{1:100}
- 预测 z_{1:100}, reward_{1:100}
- 选最大累计 reward 的 a 序列
5. 机器人执行 a_1,得到 obs_{t+1}
6. PRISM 用真实 obs_{t+1} 与 WM 预测的 z̃_1 比对:
- 一致 → continue
- 不一致 → 误差注入 WM 再 imagine(重规划)
- 不一致 + 持续大 → 写 delta(环境变了,比如垃圾桶卡住了)
7. 任务结束后:
- 真实轨迹 (obs, a, obs') 累积到 stm/episodes/
- 月度 fine-tune WM
```
---
## 11.7 三层抽象的对应关系
| WM 概念 | PRISM 对应 |
|---------|-----------|
| Observation | L1 关键帧 + L2 局部 occupancy |
| Hidden state z | 不直接对应,但 PRISM 的 L4 节点是其"符号侧倒影" |
| Action | 机器人控制器输出,PRISM 不管 |
| Reward | PRISM API 提供任务级信号 |
| Prior | L3+L4 场景图作为 context token |
| Imagination | 在 WM 内部,不存进 PRISM;只把"决策"和"反例"回写 |
| Reality | PRISM 实时观测,作为 WM 训练 / 校正的 ground-truth |
---
## 11.8 与既有项目对比
| 项目 | 类型 | PRISM 关系 |
|------|------|-----------|
| **Habitat** | 仿真 | PRISM 的 LTM 可导出为 Habitat 场景 |
| **Isaac Sim** | 仿真 | LTM 的 USDZ 直接打开 |
| **NVIDIA Cosmos** | 视频 WM | 可作为 PRISM 的"生成式预测器" |
| **Hydra / Hovsg / ConceptGraphs** | hierarchical SLAM | PRISM 与之同源;区别:PRISM 强调"先验灌入 + 巩固机制" |
| **VoxFormer / NeRF-SLAM** | 单一稠密表示 | PRISM 用作 L2 实现,但加入 L3/L4 |
| **VLMaps / OpenScene** | 开放词表场景图 | 可作为 PRISM 的 L4 backbone |
| **Embodied-CoT / SayCan** | LLM 规划 | 是 PRISM 的下游消费者 |
---
## 11.9 时间表(与 [`09_roadmap.md`](09_roadmap.md) 衔接)
| 阶段 | WM 相关任务 |
|------|-------------|
| 8 周原型 | **不接 WM**,先打地基 |
| M3-M4 | 实现 WMObservation / WMAction schema;DreamerV3 在仿真里跑通 |
| M5 | 接入真实 PRISM,做 Planning by Imagination demo |
| M6 | 异常检测;fine-tune WM 的训练管线 |
| M7+ | 切换到 M-JEPA 或 Cosmos,做语义 / 视频级 rollout |
---
## 11.10 局限与开放问题
| 局限 | 说明 |
|------|------|
| WM 在长时间 rollout 中漂移 | 必须靠 PRISM 不断"reality check" |
| L4 场景图怎么 token 化 | 当前是手写 (label, pos, attr) 三元组 → 可学习的图 encoder 待研究 |
| PRISM 是否要"反向写入"WM 输出 | 暂定**不写**:rollout 是虚拟,写进 LTM 会污染 |
| Reward 设计 | PRISM 提供基本 task progress;复杂 reward 需领域专家 |
| 数据效率 | 单楼层 episode 数有限,跨场景迁移学习是关键 |
---
## 11.11 本章小结
| 关键点 | 一句话 |
|--------|--------|
| **PRISM 之于 WM** | 提供 context + obs + reward + reality check |
| **WM 之于 PRISM** | 提供 imagination + 物理先验,不直接写 LTM |
| **接口** | `WMObservation / WMAction / WMRollout` 三类数据结构 |
| **三类用法** | Planning / Anomaly / Pretraining |
| **闭环关键** | 真实观测和 imagine 偏差大 → 写 delta + 触发 replan |
| **现阶段** | 8 周原型不接 WM;M5 之后逐步引入 |
读完本章你应能:
- ✅ 解释 PRISM 与世界模型的本质区别(记忆 vs 想象)
- ✅ 设计一个最小的 PRISM→DreamerV3 接入
- ✅ 知道为什么 WM 的"幻想"不能写进 LTM
下一章 [`12_risks.md`](12_risks.md) 整理 PRISM 全系统的 6 大风险与对策。
---
**章节版本**:v1.0
**估计阅读时间**:12 分钟
**关键收获**:把 PRISM 升级为"有想象力的大脑"的路径