14 KiB
14 KiB
title, date, draft, tags, categories
| title | date | draft | tags | categories | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chapter 12 — 风险与对策 | 2026-05-20 | false |
|
|
Chapter 12 — 风险与对策
本章目标:把 PRISM 全系统在采集 / 部署 / 运行 / 长期维护四个阶段可能出问题的地方系统化列出,并给出每项的缓解措施 / 监控指标 / 应急预案。
12.1 风险分类总览
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 §4.2.2)② 多次扫描融合 ③ 后期人工补点(MeshLab) |
| 监控 | prism qa 检查每房间是否闭合 polygon |
| 应急 | 立刻补扫;机器人在该区域加 2D LiDAR 兜底 |
R1.2 坐标系不一致(iPhone vs ZED map 帧)
| 项 | 内容 |
|---|---|
| 概率 | 高(如果不放 ArUco 几乎必失败) |
| 影响 | 致命(机器人位姿完全错) |
| 等级 | 🔴 高 |
| 对策 | ① 强制约定 ArUco 公共原点(05_pipeline_B_relocalization.md §5.9)② 重力对齐双校验 |
| 监控 | ingest 时若没检到 ArUco 直接报错退出(fail fast) |
| 应急 | 不允许部署没有 ArUco 的 LTM |
R1.3 镜面 / 玻璃区域几何错乱
| 项 | 内容 |
|---|---|
| 概率 | 高(任何卫生间/玻璃幕墙都有) |
| 影响 | 中(局部 mesh 坏 + 重定位失败) |
| 等级 | 🟡 中 |
| 对策 | ① iPhone 扫描时人工标镜面 → no_update_zone mask② 后期跑反射检测(偏振相机或 RGB 反射启发式)补打 ③ TSDF Worker 在该区域 weight=0 |
| 监控 | 每天巡逻一次镜面区,检查 TSDF noise level |
| 应急 | 卫生间默认整间标 no_update,宁可粗也不污染 |
12.3 R2 算法风险
R2.1 重定位失败(特别是冷启动)
| 项 | 内容 |
|---|---|
| 概率 | 低(< 5%,但出现就阻塞所有任务) |
| 影响 | 高(机器人不能工作) |
| 等级 | 🔴 高 |
| 触发 | 强光直射、视野遮挡、相似房间(连号客房) |
| 对策 | ① CLIP + DINOv2 双 backbone 投票 ② 多帧投票(5 帧) ③ ArUco 兜底(房间门口贴) ④ 遥控人工"我在这"按钮 |
| 监控 | prism eval reloc 每日跑;fitness 滑动均值 < 0.7 报警 |
| 应急 | 启动 ArUco 兜底;通知运维 |
R2.2 VIO 长时漂移
| 项 | 内容 |
|---|---|
| 概率 | 高(必发生) |
| 影响 | 中(位姿误差累积,但 anchor 校正可吸收) |
| 等级 | 🟡 中 |
| 对策 | ① 每见到 anchor 触发 ICP 校正 ② 每 5 min 主动重定位健康检查 ③ 漂移估计 > 50 cm 强制 reloc |
| 监控 | drift_estimate 时间序列;anchor 命中间隔 |
| 应急 | 触发完整重定位 |
R2.3 检测错配(YOLO 把椅子识成 sofa)
| 项 | 内容 |
|---|---|
| 概率 | 中(开放词表模型常见) |
| 影响 | 低(单次 → confidence 低 → 不会污染 LTM) |
| 等级 | 🟢 低 |
| 对策 | ① CLIP-rerank 二次验证 ② Consolidate 时的高门槛(min_obs / min_views) ③ 跨房间一致性检查 |
| 监控 | delta confirm 率(应在 10–30%) |
| 应急 | 暂停 detector,先查模型版本 |
R2.4 差异检测假阳性(沙发被坐了不是被搬走)
| 项 | 内容 |
|---|---|
| 概率 | 中(人活动时常触发) |
| 影响 | 低(不立即改 LTM) |
| 等级 | 🟢 低 |
| 对策 | ① 隐私过滤(检到 person 跳过该帧) ② min_obs ≥ 10、min_span_s ≥ 600 ③ iPhone 高 conf 节点门槛 1.5x |
| 监控 | delta reject 率 > 70% 反而正常(说明过滤起效) |
12.4 R3 工程风险
R3.1 Jetson 资源不足
| 项 | 内容 |
|---|---|
| 概率 | 中 |
| 影响 | 高(节点掉帧 / 崩溃) |
| 等级 | 🔴 高 |
| 对策 | ① TensorRT FP16/INT8(10_tech_stack.md §10.6)② Worker 频率自适应(移动时高,静止时低) ③ 选 Orin AGX 64 GB 而非 32 GB |
| 监控 | tegrastats 实时;任一 worker 延迟 > 2× 目标即降级 |
| 应急 | 优先停 ChangeDetector 与 3DGS;YOLO 类别动态裁剪 |
R3.2 依赖版本断裂(CUDA / PyTorch / Open3D)
| 项 | 内容 |
|---|---|
| 概率 | 高(每次升级都可能) |
| 影响 | 中(不能跑) |
| 等级 | 🟡 中 |
| 对策 | ① Docker 固化版本 ② pyproject.toml 钉死 minor 版本③ CI 跑 nightly 跨版本 smoke test |
| 监控 | CI badge 红即拒绝合并 |
R3.3 并发竞争(在线感知 ↔ Consolidation)
| 项 | 内容 |
|---|---|
| 概率 | 中(每次巩固) |
| 影响 | 中(可能数据丢失) |
| 等级 | 🟡 中 |
| 对策 | ① 巩固开始前调 set_readonly(true);感知此期间只能写 delta② staging 写完才原子切换 ③ 文件锁 + 进程级互斥 |
| 监控 | 巩固日志中的 lock 等待时间 |
R3.4 磁盘/IO 瓶颈
| 项 | 内容 |
|---|---|
| 概率 | 低 |
| 影响 | 中(关键帧丢) |
| 等级 | 🟢 低 |
| 对策 | ① SSD 而非 eMMC ② keyframes 用环形写(满了覆盖) ③ 巩固时压缩老 snapshot |
| 监控 | 磁盘空闲 < 20% 报警 |
12.5 R4 物理环境风险
R4.1 高反光(卫生间镜面、玻璃幕墙)
参见 R1.3。再加一条:
| 对策 | 在 LTM 中给整间卫生间标 category=high_reflection,机器人路径规划时绕远 |
R4.2 动态人 / 宠物
| 项 | 内容 |
|---|---|
| 概率 | 高(酒店满人) |
| 影响 | 中 |
| 等级 | 🟡 中 |
| 对策 | ① YOLO 检 person → 该帧跳过语义写入(保留几何用于避障)② Avoidance 优先;Nav stack 与 PRISM 解耦 ③ 跟随人时不写 delta |
| 监控 | 每小时 person-frame 比率,超 50% 触发"高密度模式" |
R4.3 突发遮挡(清洁车、行李堆)
| 对策 | ① 临时遮挡 < 30 s 不写 delta
② Avoidance 短期记忆(local OctoMap 持续 30 s) |
R4.4 极端光照(开灯/关灯切换)
| 对策 | ① ZED Auto Exposure
② 关灯时 fallback 到深度 + 几何重定位(CLIP 退化)
③ Anchor ICP 不依赖光照 |
12.6 R5 数据安全风险
R5.1 客人隐私(人脸 / 行李 / 身份信息)
| 项 | 内容 |
|---|---|
| 概率 | 必然 |
| 影响 | 高(法律与商业) |
| 等级 | 🔴 高 |
| 对策 | ① YOLO 检 person/face/luggage → 像素级模糊或丢弃② RGB 关键帧默认本地存储,不上传云 ③ Snapshot 加密 ④ 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② Consolidate 时这些节点门槛更低 ③ delta 中关于 mobile 的事件不报警 |
R6.2 LTM 老化(与现实偏离)
| 项 | 内容 |
|---|---|
| 概率 | 必然(30 天后偏差明显) |
| 影响 | 中 |
| 等级 | 🟡 中 |
| 对策 | ① 月度 deep consolidation ② anchor 失活率超 30% 自动提示重扫 ③ 季度人工重扫一次 |
| 监控 | prism health 给出 LTM 健康分(0–100) |
R6.3 团队人员流失 / 文档失同步
| 对策 | ① 本系列文档;② Schema 版本号 + migrate 函数;③ 每月 release notes |
R6.4 错误巩固导致 LTM 损坏
| 项 | 内容 |
|---|---|
| 概率 | 低 |
| 影响 | 致命 |
| 等级 | 🔴 高(罕见但毁灭) |
| 对策 | ① 巩固后 sanity_relocalize 自动校验 ② 失败回滚(保留 .prev)③ snapshots 保留 6 份 |
| 监控 | 每次巩固后 health 分变化 ≤ -5 即拒绝 |
| 应急 | 自动回滚 + 人工调查 |
12.8 风险矩阵(影响 × 概率)
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 的 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 给出系统的客观评测指标和数据集。
章节版本:v1.0 估计阅读时间:15 分钟 关键收获:把"可能出问题的事"变成"已被监控、已被准备好回滚的事"