367 lines
14 KiB
Markdown
367 lines
14 KiB
Markdown
---
|
||
title: "Chapter 12 — 风险与对策"
|
||
date: 2026-05-20
|
||
draft: false
|
||
tags: ["PRISM", "世界模型", "空间记忆", "机器人", "隐私", "iOS"]
|
||
categories: ["PRISM"]
|
||
---
|
||
|
||
# Chapter 12 — 风险与对策
|
||
|
||
> 本章目标:把 PRISM 全系统在**采集 / 部署 / 运行 / 长期维护**四个阶段可能出问题的地方系统化列出,并给出每项的**缓解措施 / 监控指标 / 应急预案**。
|
||
|
||
---
|
||
|
||
## 12.1 风险分类总览
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
ROOT["<b>PRISM 风险地图</b>"]
|
||
R1["<b>R1 数据风险</b><br/>扫描漏点<br/>坐标系错<br/>镜面区无效"]
|
||
R2["<b>R2 算法风险</b><br/>重定位失败<br/>漂移<br/>检测错配"]
|
||
R3["<b>R3 工程风险</b><br/>资源不足<br/>依赖断裂<br/>并发竞争"]
|
||
R4["<b>R4 物理环境风险</b><br/>高反光<br/>动态人<br/>突发遮挡"]
|
||
R5["<b>R5 数据安全风险</b><br/>客人隐私<br/>数据出境<br/>AGPL 传染"]
|
||
R6["<b>R6 长期维护风险</b><br/>家具频繁变化<br/>LTM 老化<br/>人员流失"]
|
||
ROOT --> R1 & R2 & R3 & R4 & R5 & R6
|
||
style ROOT fill:#fff7d6,stroke:#c97a00,stroke-width:2px
|
||
style R1 fill:#e3f2fd,stroke:#1565c0
|
||
style R2 fill:#fde2e2,stroke:#a33
|
||
style R3 fill:#d4f0d4,stroke:#2e7d32
|
||
style R4 fill:#fff1c1,stroke:#a87a00
|
||
style R5 fill:#f5e1ff,stroke:#7b1fa2
|
||
style R6 fill:#d8e4ff,stroke:#1565c0
|
||
```
|
||
|
||
每个风险给出:**概率 × 影响 → 等级 → 对策 → 监控指标**。
|
||
|
||
---
|
||
|
||
## 12.2 R1 数据风险
|
||
|
||
### R1.1 iPhone 扫描漏点 / 几何不闭合
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 中(每次扫描 30% 概率有漏点) |
|
||
| **影响** | 中(机器人可能撞到墙或穿墙规划) |
|
||
| **等级** | 🟡 中 |
|
||
| **触发条件** | 弱纹理大白墙、强光下、扫描速度过快 |
|
||
| **对策** | ① 采集 SOP([`04_pipeline_A_iphone_offline.md`](04_pipeline_A_iphone_offline.md) §4.2.2)<br>② 多次扫描融合<br>③ 后期人工补点(MeshLab) |
|
||
| **监控** | `prism qa` 检查每房间是否闭合 polygon |
|
||
| **应急** | 立刻补扫;机器人在该区域加 2D LiDAR 兜底 |
|
||
|
||
### R1.2 坐标系不一致(iPhone vs ZED `map` 帧)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(如果不放 ArUco 几乎必失败) |
|
||
| **影响** | 致命(机器人位姿完全错) |
|
||
| **等级** | 🔴 高 |
|
||
| **对策** | ① 强制约定 ArUco 公共原点([`05_pipeline_B_relocalization.md`](05_pipeline_B_relocalization.md) §5.9)<br>② 重力对齐双校验 |
|
||
| **监控** | ingest 时若没检到 ArUco 直接报错退出(fail fast) |
|
||
| **应急** | 不允许部署没有 ArUco 的 LTM |
|
||
|
||
### R1.3 镜面 / 玻璃区域几何错乱
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(任何卫生间/玻璃幕墙都有) |
|
||
| **影响** | 中(局部 mesh 坏 + 重定位失败) |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① iPhone 扫描时人工标镜面 → `no_update_zone` mask<br>② 后期跑反射检测(偏振相机或 RGB 反射启发式)补打<br>③ TSDF Worker 在该区域 weight=0 |
|
||
| **监控** | 每天巡逻一次镜面区,检查 TSDF noise level |
|
||
| **应急** | 卫生间默认整间标 no_update,宁可粗也不污染 |
|
||
|
||
---
|
||
|
||
## 12.3 R2 算法风险
|
||
|
||
### R2.1 重定位失败(特别是冷启动)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 低(< 5%,但出现就阻塞所有任务) |
|
||
| **影响** | 高(机器人不能工作) |
|
||
| **等级** | 🔴 高 |
|
||
| **触发** | 强光直射、视野遮挡、相似房间(连号客房) |
|
||
| **对策** | ① CLIP + DINOv2 双 backbone 投票<br>② 多帧投票(5 帧)<br>③ ArUco 兜底(房间门口贴)<br>④ 遥控人工"我在这"按钮 |
|
||
| **监控** | `prism eval reloc` 每日跑;fitness 滑动均值 < 0.7 报警 |
|
||
| **应急** | 启动 ArUco 兜底;通知运维 |
|
||
|
||
### R2.2 VIO 长时漂移
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(必发生) |
|
||
| **影响** | 中(位姿误差累积,但 anchor 校正可吸收) |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① 每见到 anchor 触发 ICP 校正<br>② 每 5 min 主动重定位健康检查<br>③ 漂移估计 > 50 cm 强制 reloc |
|
||
| **监控** | drift_estimate 时间序列;anchor 命中间隔 |
|
||
| **应急** | 触发完整重定位 |
|
||
|
||
### R2.3 检测错配(YOLO 把椅子识成 sofa)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 中(开放词表模型常见) |
|
||
| **影响** | 低(单次 → confidence 低 → 不会污染 LTM) |
|
||
| **等级** | 🟢 低 |
|
||
| **对策** | ① CLIP-rerank 二次验证<br>② Consolidate 时的高门槛(min_obs / min_views)<br>③ 跨房间一致性检查 |
|
||
| **监控** | delta confirm 率(应在 10–30%) |
|
||
| **应急** | 暂停 detector,先查模型版本 |
|
||
|
||
### R2.4 差异检测假阳性(沙发被坐了不是被搬走)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 中(人活动时常触发) |
|
||
| **影响** | 低(不立即改 LTM) |
|
||
| **等级** | 🟢 低 |
|
||
| **对策** | ① 隐私过滤(检到 person 跳过该帧)<br>② min_obs ≥ 10、min_span_s ≥ 600<br>③ iPhone 高 conf 节点门槛 1.5x |
|
||
| **监控** | delta reject 率 > 70% 反而正常(说明过滤起效) |
|
||
|
||
---
|
||
|
||
## 12.4 R3 工程风险
|
||
|
||
### R3.1 Jetson 资源不足
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 中 |
|
||
| **影响** | 高(节点掉帧 / 崩溃) |
|
||
| **等级** | 🔴 高 |
|
||
| **对策** | ① TensorRT FP16/INT8([`10_tech_stack.md`](10_tech_stack.md) §10.6)<br>② Worker 频率自适应(移动时高,静止时低)<br>③ 选 Orin AGX 64 GB 而非 32 GB |
|
||
| **监控** | `tegrastats` 实时;任一 worker 延迟 > 2× 目标即降级 |
|
||
| **应急** | 优先停 ChangeDetector 与 3DGS;YOLO 类别动态裁剪 |
|
||
|
||
### R3.2 依赖版本断裂(CUDA / PyTorch / Open3D)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(每次升级都可能) |
|
||
| **影响** | 中(不能跑) |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① Docker 固化版本<br>② `pyproject.toml` 钉死 minor 版本<br>③ CI 跑 nightly 跨版本 smoke test |
|
||
| **监控** | CI badge 红即拒绝合并 |
|
||
|
||
### R3.3 并发竞争(在线感知 ↔ Consolidation)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 中(每次巩固) |
|
||
| **影响** | 中(可能数据丢失) |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① 巩固开始前调 `set_readonly(true)`;感知此期间只能写 delta<br>② staging 写完才原子切换<br>③ 文件锁 + 进程级互斥 |
|
||
| **监控** | 巩固日志中的 lock 等待时间 |
|
||
|
||
### R3.4 磁盘/IO 瓶颈
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 低 |
|
||
| **影响** | 中(关键帧丢) |
|
||
| **等级** | 🟢 低 |
|
||
| **对策** | ① SSD 而非 eMMC<br>② keyframes 用环形写(满了覆盖)<br>③ 巩固时压缩老 snapshot |
|
||
| **监控** | 磁盘空闲 < 20% 报警 |
|
||
|
||
---
|
||
|
||
## 12.5 R4 物理环境风险
|
||
|
||
### R4.1 高反光(卫生间镜面、玻璃幕墙)
|
||
|
||
参见 R1.3。再加一条:
|
||
|
||
| 对策 | 在 LTM 中给整间卫生间标 `category=high_reflection`,机器人路径规划时绕远 |
|
||
|
||
### R4.2 动态人 / 宠物
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(酒店满人) |
|
||
| **影响** | 中 |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① YOLO 检 `person` → 该帧跳过语义写入(保留几何用于避障)<br>② Avoidance 优先;Nav stack 与 PRISM 解耦<br>③ 跟随人时不写 delta |
|
||
| **监控** | 每小时 person-frame 比率,超 50% 触发"高密度模式" |
|
||
|
||
### R4.3 突发遮挡(清洁车、行李堆)
|
||
|
||
| 对策 | ① 临时遮挡 < 30 s 不写 delta<br>② Avoidance 短期记忆(local OctoMap 持续 30 s) |
|
||
|
||
### R4.4 极端光照(开灯/关灯切换)
|
||
|
||
| 对策 | ① ZED Auto Exposure<br>② 关灯时 fallback 到深度 + 几何重定位(CLIP 退化)<br>③ Anchor ICP 不依赖光照 |
|
||
|
||
---
|
||
|
||
## 12.6 R5 数据安全风险
|
||
|
||
### R5.1 客人隐私(人脸 / 行李 / 身份信息)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 必然 |
|
||
| **影响** | 高(法律与商业) |
|
||
| **等级** | 🔴 高 |
|
||
| **对策** | ① YOLO 检 `person/face/luggage` → 像素级模糊或丢弃<br>② RGB 关键帧默认本地存储,不上传云<br>③ Snapshot 加密<br>④ 30 天后自动删除 stm/keyframes |
|
||
| **监控** | 每周抽样 100 张关键帧人工检查 |
|
||
| **应急** | 客人投诉立即下机检查 |
|
||
|
||
### R5.2 数据出境(GPT-4o)
|
||
|
||
| 对策 | 国内场景全栈本地化:Qwen2.5-VL + BGE-M3 + 本地 Cypher |
|
||
|
||
### R5.3 LICENSE 传染(YOLO AGPL)
|
||
|
||
| 对策 | ① 商用购 Ultralytics 商业 license;② 或换 PaddleDetection / NanoDet |
|
||
|
||
---
|
||
|
||
## 12.7 R6 长期维护风险
|
||
|
||
### R6.1 家具频繁被移动
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 高(每天清洁) |
|
||
| **影响** | 中 |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① 给易移动家具打 `mobile=true`,不作 anchor<br>② Consolidate 时这些节点门槛更低<br>③ delta 中关于 mobile 的事件不报警 |
|
||
|
||
### R6.2 LTM 老化(与现实偏离)
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 必然(30 天后偏差明显) |
|
||
| **影响** | 中 |
|
||
| **等级** | 🟡 中 |
|
||
| **对策** | ① 月度 deep consolidation<br>② anchor 失活率超 30% 自动提示重扫<br>③ 季度人工重扫一次 |
|
||
| **监控** | `prism health` 给出 LTM 健康分(0–100) |
|
||
|
||
### R6.3 团队人员流失 / 文档失同步
|
||
|
||
| 对策 | ① 本系列文档;② Schema 版本号 + migrate 函数;③ 每月 release notes |
|
||
|
||
### R6.4 错误巩固导致 LTM 损坏
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| **概率** | 低 |
|
||
| **影响** | 致命 |
|
||
| **等级** | 🔴 高(罕见但毁灭) |
|
||
| **对策** | ① 巩固后 sanity_relocalize 自动校验<br>② 失败回滚(保留 `.prev`)<br>③ snapshots 保留 6 份 |
|
||
| **监控** | 每次巩固后 health 分变化 ≤ -5 即拒绝 |
|
||
| **应急** | 自动回滚 + 人工调查 |
|
||
|
||
---
|
||
|
||
## 12.8 风险矩阵(影响 × 概率)
|
||
|
||
```mermaid
|
||
quadrantChart
|
||
title 风险矩阵 影响 x 概率
|
||
x-axis 低影响 --> 高影响
|
||
y-axis 低概率 --> 高概率
|
||
quadrant-1 高概率高影响 必须立即处理
|
||
quadrant-2 高概率低影响 容忍但要监控
|
||
quadrant-3 低概率低影响 可接受
|
||
quadrant-4 低概率高影响 建预案
|
||
R1-2 ArUco 公共原点: [0.88, 0.85]
|
||
R5-1 客人隐私: [0.85, 0.82]
|
||
R2-2 漂移: [0.65, 0.82]
|
||
R6-1 家具频繁变化: [0.62, 0.80]
|
||
R4-4 高反光: [0.20, 0.85]
|
||
R3-1 Jetson 资源不足: [0.78, 0.55]
|
||
R6-4 巩固回滚: [0.75, 0.52]
|
||
R1-1 扫描漏点: [0.55, 0.50]
|
||
R1-3 坐标系错: [0.58, 0.48]
|
||
R3-3 依赖断裂: [0.55, 0.45]
|
||
R4-2 动态人: [0.52, 0.42]
|
||
R2-4 检测错配: [0.22, 0.55]
|
||
R2-1 重定位失败: [0.82, 0.20]
|
||
R5-2 数据出境: [0.78, 0.18]
|
||
R6-2 LTM 老化: [0.55, 0.22]
|
||
R3-4 并发竞争: [0.20, 0.22]
|
||
```
|
||
|
||
🔴 高风险高影响项必须在 8 周原型期前解决:
|
||
- R1.2 ArUco 公共原点(W1 必做)
|
||
- R2.1 重定位双 backbone(W3-W4)
|
||
- R3.1 Jetson 资源监控(W6)
|
||
- R5.1 隐私过滤(W5)
|
||
- R6.4 巩固回滚(W7)
|
||
|
||
---
|
||
|
||
## 12.9 风险登记表(Risk Register)
|
||
|
||
| ID | 风险 | 概率 | 影响 | 等级 | Owner | 状态 | 触发指标 |
|
||
|----|------|------|------|------|-------|------|----------|
|
||
| R1.1 | 漏点 | 中 | 中 | 🟡 | iOS dev | open | polygon 闭合率 |
|
||
| R1.2 | 坐标系错 | 高 | 致命 | 🔴 | iOS dev | mitigated by ArUco | ArUco 未检出 |
|
||
| R1.3 | 镜面 | 高 | 中 | 🟡 | ML | open | TSDF 噪声 |
|
||
| R2.1 | reloc 失败 | 低 | 高 | 🔴 | ML | open | fitness 滑均 |
|
||
| R2.2 | VIO 漂 | 高 | 中 | 🟡 | Robotics | mitigated by anchor | drift_estimate |
|
||
| R2.3 | 误检 | 中 | 低 | 🟢 | ML | open | delta confirm 率 |
|
||
| R3.1 | 资源不足 | 中 | 高 | 🔴 | System | mitigated by Orin64 | tegrastats |
|
||
| R3.3 | 竞争 | 中 | 中 | 🟡 | System | mitigated by lock | lock wait |
|
||
| R5.1 | 隐私 | 必然 | 高 | 🔴 | System+ML | mitigated | 抽样审查 |
|
||
| R6.4 | 错误巩固 | 低 | 致命 | 🔴 | System | mitigated by rollback | health Δ |
|
||
| ... | | | | | | | |
|
||
|
||
→ 用 Notion / 飞书表格维护,每周 review。
|
||
|
||
---
|
||
|
||
## 12.10 应急联动手册(Runbook)
|
||
|
||
| 报警 | 自动动作 | 人工动作 | 升级 |
|
||
|------|----------|----------|------|
|
||
| reloc 失败 ≥ 3 次 | 启用 ArUco 兜底 | 检查 RGB 是否过曝 | 1 h 内修不好 → 下机 |
|
||
| drift > 50 cm | 强制 reloc | 看 anchor 是否被搬走 | 24 h 后重扫 |
|
||
| delta confirm < 1% 持续 1 周 | 警告 | 检查检测器 / 模型版本 | 升级 ML 工程师 |
|
||
| consolidate 失败回滚 | 自动 + 邮件 | 查 sanity 报告 | 24 h 内查清 |
|
||
| 隐私抽检发现人脸未模糊 | 全量下机 | 修复后回归 | 法务介入 |
|
||
| LTM 健康分 < 60 | 提示重扫 | 安排现场 | — |
|
||
|
||
---
|
||
|
||
## 12.11 与 [`09_roadmap.md`](09_roadmap.md) 的 Gate 联动
|
||
|
||
每个 Gate 必须扫一遍本章 🔴 高风险项:
|
||
|
||
| Gate | 必查项 |
|
||
|------|--------|
|
||
| W2 | R1.2 ArUco 实装 |
|
||
| W4 | R2.1 reloc 成功率达标 |
|
||
| W6 | R3.1 资源 + R5.1 隐私 |
|
||
| W7 | R6.4 回滚机制 |
|
||
| W8 | 所有 🔴 通过 |
|
||
| M4 | 72 h 压测覆盖所有 R |
|
||
|
||
---
|
||
|
||
## 12.12 本章小结
|
||
|
||
| 关键 | 一句话 |
|
||
|------|--------|
|
||
| **致命风险** | 坐标系错 + 隐私 + 错误巩固 |
|
||
| **常见但可控** | 漂移、误检、家具搬动 |
|
||
| **应急核心** | 自动回滚 + ArUco 兜底 + 隐私一键下机 |
|
||
| **维护核心** | 月度巩固 + 季度重扫 + Risk Register 每周 review |
|
||
|
||
读完本章你应能:
|
||
- ✅ 给老板列出"PRISM 上线前必须解决的 5 件事"
|
||
- ✅ 设计 SLO / SLI 与报警阈值
|
||
- ✅ 写出 Runbook 给运维
|
||
|
||
下一章 [`13_evaluation.md`](13_evaluation.md) 给出系统的客观评测指标和数据集。
|
||
|
||
---
|
||
|
||
**章节版本**:v1.0
|
||
**估计阅读时间**:15 分钟
|
||
**关键收获**:把"可能出问题的事"变成"已被监控、已被准备好回滚的事"
|