Files
worldmodel/plans/PRISM/01_capability_decomposition.md
T
gaojie dbcbdbb59e chore: 为所有 md 文件添加 Hugo front matter
- 处理: 74 个 .md 文件
- 跳过: 0 个(无已存在的 front matter)
- 异常: 3 个(H1 缺失,用文件名兜底)
  - plans/PRISM/.research/readmes/3d-llm.md
  - plans/PRISM/.research/readmes/openmask3d.md
  - plans/PRISM/.research/readmes/openscene.md
2026-05-20 22:42:22 +08:00

253 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Chapter 01 — 两方案能力解构"
date: 2026-05-20
draft: false
tags: ["PRISM", "世界模型", "空间记忆", "机器人", "iOS", "RoomPlan"]
categories: ["worldmodel"]
---
# Chapter 01 — 两方案能力解构
> 本章目标:把 iPhone 与 ZED 2i 两个采集方案**逐项拆开**,建立"谁该干什么"的明确边界,作为后续所有分层决策的依据。
---
## 1.1 决策框架:传感器画像 (Sensor Persona)
在做任何融合之前,必须先回答 7 个问题:
```
1. WHEN 何时采集? (离线 vs 在线)
2. WHO 谁来用? (人 vs 机器人)
3. WHERE 覆盖多大? (场景级 vs 视锥级)
4. HOW MUCH 精度多少? cm vs %
5. WHAT 语义多丰富? (结构化 vs 像素级)
6. HOW FAST 多快? (秒/分钟 vs Hz)
7. WHY FAIL 什么时候坏? (失效模式)
```
按这 7 个问题给两个传感器各做一张画像。
---
## 1.2 iPhone (RoomPlan + LiDAR) 画像
```yaml
名称: iPhone Pro (15/14/13 Pro 系列)
角色: 先验地图源 (Prior Map Provider)
WHEN:
- 部署前一次性扫描
- 场景大改时重扫(建议季度级)
- 不参与机器人运行时
WHO:
- 由"人"持机扫描(1020 分钟/房间)
- 机器人**不携带** iPhone
WHERE:
- 房间级 30100 m²(单次扫描)
- 多房间需多次扫描 + 走廊串联
- 最大有效范围 ≤ 5 m(LiDAR 物理限制)
HOW MUCH:
- 墙面定位精度: ±3 cm
- 家具尺寸误差: ±5 cm
- 朝向误差: ±2°
- 全局拓扑(房间相对位置): ±10 cm
WHAT:
RoomPlan 直接产出:
- 结构化几何:参数化的 wall/door/window 平面方程 + OBB
- 家具语义:bed/sofa/chair/table/storage/... (≈ 16 类)
- USDZ / JSON 格式
额外可得(用 ARKit 原始数据):
- 稠密点云(LiDAR 深度,640×480
- RGB 图像序列
- ARKit 位姿轨迹
HOW FAST:
- 扫描期间: 30 fps 实时预览
- 处理出图: 1060 秒(设备端)
- 不是"实时机器人感知"
WHY FAIL:
- ❌ 强光直射(窗边):LiDAR 失效
- ❌ 全黑环境:RGB 失效,IMU 漂移
- ❌ 完全镜面 / 玻璃墙:几何错乱(与 ZED 2i 共同弱点)
- ❌ 弱纹理大白墙:照片建模失败(LiDAR 可补)
- ⚠️ 家具被移动后:所有家具节点过时
- ⚠️ 动态物体(人/宠物):会被错误烘到 mesh
```
**一句话**iPhone 是**"建筑师的图纸 + 摄影师的照片"**——稀疏精确、有语义,但**冻结在过去某一时刻**。
---
## 1.3 ZED 2i (双目 + IMU) 画像
```yaml
名称: Stereolabs ZED 2i
角色: 在线感知器 (Live Perceptor)
WHEN:
- 机器人运行时持续工作
- 30 fps 流式输出
- 与控制循环同步
WHO:
- 装在机器人前向(建议 1.0–1.3 m 高度)
- 机器人随身携带
- 没有人参与
WHERE:
- 视锥级:水平 110° × 垂直 70°
- 深度有效范围: 0.320 mQUALITY 模式下 0.510 m 最稳)
- 单次只能看一个视锥(≈ 30% 房间)
HOW MUCH:
- 深度精度: ±1% @ 1 m, ±2% @ 3 m, ±4% @ 5 m
- VIO 位姿漂移: 0.1% 行驶距离(即 100 m 内 < 10 cm
- 长时间累计漂移: 1 km 后约 1 m
- IMU 短时积分: 角速度 ±2000 dps, 加速度 ±16 g, 400 Hz
WHAT:
原始数据:
- 左右 RGB 图像(2208×1242 @ 15fps,或 1280×720 @ 60fps
- 深度图(与左目对齐)
- IMU (陀螺 + 加速度 + 磁力计 + 气压计)
SDK 直接给出:
- 6-DoF 位姿(VIO
- 稀疏关键点轨迹
- 实时 spatial mappingmesh
- 物体检测(内置 SOTA 类别有限,建议外挂 YOLO-World)
没有语义:
- 默认不识别房间、不分割物体
- 需自己接 CLIP/SAM/Grounding-DINO
HOW FAST:
- 深度 + VIO: 30 Hz
- 1080p RGB: 30 Hz
- IMU: 400 Hz
- 端到端延迟(采集→深度可用): 5080 ms
WHY FAIL:
- ❌ 镜面、玻璃:双目失配,深度伪影(与 iPhone 共同弱点)
- ❌ 极弱纹理(白墙、纯色地毯):匹配失败
- ❌ 强光直射镜头:过曝
- ⚠️ 长时间静止 + 转动:VIO 漂移大(IMU bias 累积)
- ⚠️ 快速旋转(> 180°/s):图像运动模糊
- ⚠️ 跨房间(穿门瞬间):可能丢失定位 → 需重定位
```
**一句话**ZED 2i 是**"驾驶员的眼睛 + 内耳前庭"**——视锥窄但连续、稠密、随身,但**只看到当下、不记得过去**。
---
## 1.4 并排对比表
| 维度 | iPhone (RoomPlan/LiDAR) | ZED 2i (双目+IMU) | 谁占优 |
|------|-------------------------|-------------------|--------|
| 部署成本 | ¥10 k(一次性) | ¥4 k(一次性) | ZED |
| 单次覆盖 | 30–100 m² | 一个视锥 | **iPhone** |
| 几何精度 | ±3 cm(墙) | ±1–4%(深度) | iPhone(近场打平,远场胜出) |
| 语义丰富度 | 16 类家具,开箱即用 | 0 类(需外挂) | **iPhone** |
| 时间分辨率 | 离线 | 30 Hz | **ZED** |
| 动态物体处理 | 无 | 可在线检测 | **ZED** |
| 镜面/玻璃 | 失败 | 失败 | 平手(都差) |
| 弱纹理 | LiDAR 可救 | 失败 | **iPhone** |
| 大场景拼接 | 多扫多拼,易漂 | VIO 长漂 | 平手(都需校正) |
| 是否上机器人 | 否 | 是 | — |
---
## 1.5 互补性可视化
```mermaid
quadrantChart
title iPhone vs ZED 2i 能力象限
x-axis 低更新率 --> 高更新率
y-axis 低覆盖 --> 高覆盖
quadrant-1 高覆盖+高频率 理想不存在
quadrant-2 高覆盖+低频率 iPhone
quadrant-3 低覆盖+低频率 盲区
quadrant-4 低覆盖+高频率 ZED 2i
iPhone RoomPlan: [0.15, 0.85]
ZED 2i VIO Depth: [0.85, 0.20]
L2 度量层 会合点: [0.5, 0.5]
```
- **iPhone 在"高覆盖×低更新"象限** → 自然落位为 **L3/L4** 的稳定结构
- **ZED 2i 在"低覆盖×高更新"象限** → 自然落位为 **L1/L2** 的即时感知
- 中间的 **L2 度量层**是两者**必然相遇**的地方 → 配准与差异检测必须发生在这里
---
## 1.6 互补性的三个具体维度
### 维度 1:空间分布互补
- iPhone 覆盖**全场景**但**静态**
- ZED 2i 覆盖**视锥**但**穿越所有视锥后**也能覆盖全场景
- → ZED 2i 是 iPhone 的**时间扩展**(补未来的变化);iPhone 是 ZED 2i 的**空间扩展**(补它没看到的部分)
### 维度 2:语义粒度互补
- iPhone 给**粗粒度建筑语义**:房间、墙、门、大件家具
- ZED 2i + VLM 给**细粒度物品语义**:遥控器、水杯、毛巾
- → 大小语义嵌套形成 **L4 场景图的两级**(房间→家具→物品)
### 维度 3:失败模式互补
- iPhone 在**镜面**失败 → ZED 2i 也失败 → 这是**真共同弱点**,需第三方案(偏振相机,见 [`hotel_scene_implementation_plan_part2.md`](../hotel_scene_implementation_plan_part2.md)
- iPhone 在**弱纹理**仍能 LiDAR 救场 → ZED 2i 在此处需依赖 iPhone 的先验填充
- ZED 2i 在**动态场景**胜出 → 在此处需 ZED 来告诉 iPhone "你的图过期了"
---
## 1.7 反例:什么情况下单一传感器够用?
为了诚实,列出 PRISM **不必要**的场景:
| 场景 | 推荐 | 原因 |
|------|------|------|
| 仅做静态房间数字孪生展示(不上机器人) | 只用 iPhone | 不需要在线感知 |
| 已有完整 BIM/CAD 图纸的工厂 | BIM + ZED 2i(跳过 iPhone | BIM 比 RoomPlan 更准 |
| 完全开放的户外环境(公里级) | LiDAR 主导(如 Livox + FAST-LIO2 | RoomPlan 不支持户外 |
| 实验室桌面操作(毫米级) | 桌面级 RGB-D + AprilTag | RoomPlan/VIO 精度都不够 |
| 一次性快速 demo(不留长期记忆) | 只用 ZED 2i | 不需要先验 |
**适用 PRISM 的甜区**:**室内 + 多房间 + 服务机器人 + 需要长期运行 + 场景偶尔变化**。酒店、家居、办公、医院走廊都属于此。
---
## 1.8 把画像翻译为分层决策
| 画像观察 | 引出的设计决策 | 在 PRISM 中的体现 |
|----------|----------------|--------------------|
| iPhone 离线 + 高精度 + 有语义 | 应充当"先验/宪法" | L3/L4 主写者 |
| ZED 2i 在线 + 视锥窄 + 无语义 | 应充当"补丁/快讯" | L1 唯一写者,L2/L4 增量写者 |
| 两者都在镜面失败 | 镜面区单独打标"no-update" | 见 [`12_risks.md`](12_risks.md) |
| 两者精度量级相近(cm 级) | 配准用 ICP 足够,不必更复杂 | 见 [`05_pipeline_B_relocalization.md`](05_pipeline_B_relocalization.md) |
| iPhone 偶尔过时 | 必须有"差异检测 + 巩固"机制 | 见 [`06_pipeline_C_online_perception.md`](06_pipeline_C_online_perception.md), [`07_pipeline_D_consolidation.md`](07_pipeline_D_consolidation.md) |
| ZED 2i 会漂 | 必须有"锚点重定位刷新" | 见 [`05_pipeline_B_relocalization.md`](05_pipeline_B_relocalization.md) |
---
## 1.9 本章小结
| 关键词 | 一句话 |
|--------|--------|
| **iPhone 的本质** | 高质量但冻结的"过去快照",给 L3/L4 |
| **ZED 2i 的本质** | 实时但视锥窄的"当下流",给 L1/L2 |
| **不可调和的共同弱点** | 镜面/玻璃 → 单独打掩膜 |
| **天然互补的关键点** | 覆盖×频率象限完全错开 |
| **甜区** | 室内多房间服务机器人 |
读完本章你应知道:**为什么必须分层,以及每一层应该由谁主导。**
下一章 [`02_architecture.md`](02_architecture.md) 会把这 4 层结构完整展开,说明每一层的数据结构、更新规则、查询接口。
---
**章节版本**v1.0
**估计阅读时间**12 分钟
**关键收获**:建立"传感器画像 → 分层决策"的映射逻辑