# 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 升级为"有想象力的大脑"的路径