chore: initial commit — import worldmodel workspace (plans/, research/)

This commit is contained in:
gaojie
2026-05-20 21:43:57 +08:00
commit bec8a9a4a3
98 changed files with 44128 additions and 0 deletions
+244
View File
@@ -0,0 +1,244 @@
# 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 分钟
**关键收获**:建立"传感器画像 → 分层决策"的映射逻辑