v2_humanoid_navigation_tutorial

chapter21.md — 评测基准、离线 A/B 与在线监控(算法侧)

21.0 开篇段落

如果说算法是导航系统的心脏,那么评测与监控体系就是其免疫系统与神经中枢。一个能在演示中表现惊艳的算法原型,与一个能在数千个动态、未知环境中 7x24 小时可靠运行的产品级方案之间,隔着一道由数据、指标和流程构成的鸿沟。本章的目标是系统性地阐述如何构建这道桥梁。我们将深入探讨一套分层、闭环的评测哲学,从零成本、高效率的离线回放开始,作为算法迭代的“培养皿”;进而引入虚实结合的混合基准测试,作为算法进入真实世界前的“压力测试”;最终覆盖在线部署的灰度、A/B与实时监控,构成保障线上安全的“最后防线”。本章将穿插具体的指标定义、数学工具与工程实践,旨在为算法的安全发布、性能优化与长期迭代,提供一个可量化、可执行的框架。


21.1 离线回放评测:日志→重放→决策重评分

离线回放(Offline Replay),或称日志回放(Log Replay),是算法开发周期中最高频、最低成本的验证手段。它利用线上采集的真实数据日志,在服务器上“重演”历史,以评估新算法在相同情境下的决策优劣。其核心价值在于大规模、自动化地筛除有明显退步(Regression)的算法版本

核心流程详解

  1. 高保真日志记录 (High-Fidelity Logging)
    • 数据内容:需要记录算法决策所需的所有上游输入。这不仅仅是原始传感器数据,还包括中间处理结果,以解耦评测。
      • 原始数据流:多视角同步图像(sensor_msgs/Image)、IMU 据(sensor_msgs/Imu)、关节/轮速计状态(sensor_msgs/JointState)。
      • 状态估计流:VIO/SLAM 输出的机器人位姿 T_{world \leftarrow robot} (t)。
      • 环境感知流:3D 场景表示(如局部点云、OCC Grid 更新)、动态障碍物列表及其预测轨迹。
      • 旧策略决策流:作为基线(Baseline),需要记录旧版本算法输出的规划轨迹、控制指令以及关键的内部状态(如注意力图、价值估计)。
    • 技术挑战
      • 时间同步:所有数据流必须拥有来自统一时钟源(如 NTP 或 PTP 同步后的系统时钟)的精确时间戳。微秒级的误差都可能导致因果倒置。
      • 数据格式与压缩:使用高效的序列化格式(如 Protobuf、Rosbag2 with MCAP)和流式压缩(如 Zstd)来处理巨大的数据量(尤其是多摄视频)。
  2. 反事实困境 (The Counterfactual Problem): 这是离线回放的根本局限性。新算法的一个微小动作差异,就可能导致真实世界后续的观测完全不同。例如,新算法选择向左避让,而日志中的旧算法是向右,那么新算法永远无法得知向左之后会看到什么。因此,我们不能直接在离线回放中评估长期的、交互性的任务成功率 (SR)。评估必须聚焦于短期、可验证的决策质量

  3. 多维度决策评分 (Multi-faceted Decision Scoring): 评分系统是离线评测的核心。它从多个维度量化新旧策略的优劣。

    • I. 安全性 (Safety Score)一票否决项
      • 预测碰撞 (Predicted Collision):将新算法规划的轨迹(一个时空管廊)与日志中记录的障碍物体素进行时空碰撞检测。任何碰撞都应导致该样本的安全性得分为零。
      • 违反约束 (Constraint Violation):检查是否违反速度/加速度限制、是否侵入虚拟禁区(Keep-out Zone)、是否反社交距离模型。
    • II. 决策稳定性与一致性 (Stability & Consistency Score)
      • 动作分布散度 (Action Distribution Divergence):对于概率性策略(如 VLA),比较新旧模型在同一状态 $s$ 下输出的动作分布 $P_{new}(a|s)$ 和 $P_{old}(a|s)$。KL 散度是常用指标,但它不对称。Jensen-Shannon (JS) 散度 更为稳健: $D_{JS}(P_{new} || P_{old}) = \frac{1}{2} D_{KL}(P_{new} || M) + \frac{1}{2} D_{KL}(P_{old} || M)$ (其中 $M = \frac{1}{2}(P_{new} + P_{old})$) 一个剧烈的分布变化(高 JS 散度)是潜在不稳定的信号,需要人工介入审查。
      • 轨迹几何相似度 (Trajectory Geometric Similarity):比较新旧局部轨迹的形状。简单的 L2 距离对时间上的微小偏移很敏感。动态时间规整 (Dynamic Time Warping, DTW)Fréchet 距离 更能鲁棒地衡量两条曲线的相似性。
    • III. 效率与舒适度 (Efficiency & Comfort Score)
      • 预期进展 (Expected Progress):新轨迹在朝向目标的路径上取得了多大进展。
      • 能量/时间成本 (Energy/Time Cost):路径长度、执行时间、以及考虑了加减速和转向的能量代理模型。
      • 平顺度 (Smoothness):计算轨迹的加加速度 (Jerk) 和更高阶的 Snap。高 Jerk 意味着顿挫感,体验差且对硬件有损耗。 $Jerk(t) = ||\frac{d^3 \mathbf{p}(t)}{dt^3}||_2$

集成到 CI/CD

Git Push (New Model)
       |
       v
+------------------+
| CI Pipeline Trig |
+------------------+
       |
       v
+---------------------------------------+
|  Run Offline Replay on Golden Dataset |
|  - Log Player                         |
|  - New Model Inference                |
|  - Scorer                             |
+---------------------------------------+
       |
       v
+---------------------------------------+
|  Generate Report                      |
|  - Safety Score: 100%? (GATE)         |
|  - Stability Score: < Threshold? (GATE)|
|  - Efficiency Delta: > -5%? (WARN)    |
+---------------------------------------+
       |
       v
+------------------+      +------------------+
|  All Gates PASS? |----->|   Merge Allowed  |
+------------------+      +------------------+
       | (No)
       v
+------------------+
|  Block Merge     |
+------------------+

经验法则 (Rule-of-Thumb): 离线回放是必要但不充分的测试。将它视为一个自动化代码审查机器人:它能帮你发现明显的拼写错误(灾难性碰撞)和不符合规范的风格(行为剧变),但无法判断代码的商业逻辑是否正确(任务能否成功)。


21.2 合成与真实混评:配比与权重

真实日志数据虽然保真度高,但存在“长尾分布”问题:绝大多数数据是简单的“走廊巡航”,而高风险、高价值的边缘场景(如电梯交互、人群拥挤)极其稀疏。仿真(合成据)正是为了弥补这一短板。一个健壮的评测基准必须是两者的结合。

构建策略

  1. 场景分类学 (Scenario Taxonomy): 系统化地定义评测场景库,并为每个场景打上标签。 | 场景类别 | 场景示例 | 主要挑战 | 数据来源 | | :— | :— | :— | :— | | 常规导航 | 直线、转弯、穿门 | 基础移动性、效率 | 真实(大量), 合成 | | 动态交互 | 人群避让、窄道会车 | 预测、社交合规性 | 真实, 合成(关键) | | 特殊物体 | 玻璃门、镜面、地毯 | 感知鲁棒性 | 合成(主), 真实(少) | | 结构化交互 | 乘电梯、过闸机 | 状态机、多步协议 | 合成(主), 真实(少) | | 对抗/压力 | 突然闯入、强光/弱光 | 应急反应、感知极限 | 合成(关键) |

  2. 仿真中的“上帝视角”指标: 仿真环境最大的优势在于拥有绝对真值 (Ground Truth),这使得我们可以计算在真实界中无法获得的诊断性指标。
    • 最小碰撞时间 (Time To Collision, TTC):在每一时刻,假设所有物体按当前速度匀速直线运动,计算机器人与它们发生碰撞需要的最短时间。持续的低 TTC 值是危险信号。
    • 真值定位误差 (Ground-Truth Localization Error):直接评估 SLAM/VIO 模块的精度。
    • 语义分割/检测 mAP:使用仿真器提供的像素级真值标签,精确评估感知模块的性能。
  3. 加权评分体系: 最终得分是所有场景得分的加权总和,权重体现了业务优先级。 Total Score = $\sum_{i \in Scenarios} w_i \cdot (\alpha \cdot \text{Score}{real, i} + (1-\alpha) \cdot \text{Score}{sim, i})$
    • 场景权重 $w_i$:根据场景的重要性、发生频率和风险等级来设定。例如,$w_{elevator} = 10 \cdot w_{corridor}$。这些权重应由产品、算法和安全团队共同商定。
    • 真实性权重 $\alpha$:反映了我对仿真环境的信任程度,通常 $\alpha \in [0.6, 0.8]$。随着 Sim2Real 差距的缩小,$\alpha$ 可以适当降低。

经验法则 (Rule-of-Thumb): 仿真评测的目的是发现未知缺陷,真实数据评测的目的是验证已知性能。当一个模型在仿真中表现优异但在真实数据上失败时,说明存在 Sim2Real Gap;反之,则可能意味着仿真场景的设计不够有挑战性或不贴近现实。


21.3 在线指标与告警:安全事件、近碰、急停率

当算法部署到实体机器人上时,我们需要一套实时、灵敏的监控系统来捕捉那些无法在离线阶段预见的风险。

在线指标金字塔: 这是一个从下到上、严重性递减的指标体系。

智能告警系统: 简单的静态阈值告警(如 急停次数 > 5次/小时)非常脆弱。更高级的系统应具备:


21.4 长期回归测试与地图演化一致性

导航系统的性能会随着时间漂移,这不仅是因为算法本身,更是因为其核心资产——地图——在不断演化。


21.5 发布与回滚的算法闸门(Gating)

一个负责任的发布流程必须是渐进式的,通过一系列闸门(Gates)来控制风险暴露面,并具备快速回滚能力。

分阶段发布与 A/B 测试

  1. 影子模式 (Shadow Mode):新算法在部分线上机器人上并行空转。它的决策被详细记录,并与旧算法的决策进行实时对比,但不执行。这是在真实数据流上对离线评测的终极验证。
    • 门禁:影子决策的预测碰撞率、约束违反率必须持续为零。与线上决策的 JS 散度应在一个预期范围内(既不应毫无变化,也不应剧烈振荡)。
  2. 金丝雀/灰度发布 (Canary Release):将新算法部署到一小撮(如 1%)机器人上,并建立一个同质的控制组(Holdback Group)
    • 门禁:通过统计检验(如 t-检验、卡方检验)来证金丝察组的关键在线指标(如任务成功率、近碰率)是否在统计上显著优于控制组。仅仅是数值上更好是不够的。
  3. 分级全量 (Staged Rollout):逐步扩大发布比例(5% -> 20% -> 50% -> 100%),在每个阶段都持续监控指标稳定性,确保没有因为规模效应而出现新的问题。

快速回滚机制 (Rapid Rollback): 整个发布系统必须构建在特性标志(Feature Flags)之上。当在线监控系统触发 P0 级告警时,应有自动化机制触发对应特性标志的关闭,使所有受影响的机器人瞬间回退到上一个稳定版本,并将发布流程锁定,等待人工干预。


本章小结


常见陷阱与错误 (Gotchas)

  1. 离线指标的虚假繁荣:在离线回放中,一个“更激进”的算法可能会因为总能规划出更短的路径而获得高分,但在真实世界里,这种激进可能导致与动态障碍物的交互失败。切勿将离线效率指标与在线任务成率划等号
  2. 指标的“古德哈特”陷阱:当你过度优化一个指标时,它就不再是一个好的衡量标准。例如,过度优化“急停率”,可能导致算法变得过于保守,频繁地不必要减速,严重影响通行效率。评测体系必须是多目标的、均衡的
  3. 忽略“非功能性”退步:新模型可能在所有任务指标上都表现更佳,但其推理延迟增加了 50ms,或者内存占用翻了一倍。这些非功能性指标的退步同样是致命的,必须纳入发布闸门的考量范围。
  4. 评估集的时效性与偏差:世界是变化的。使用一年前的“黄金数据集”来评测为应对新场景设计的算法,无异于刻舟求剑。评测集必须持续从线上高价值场景中采样更新,并警惕其中存在的采样偏差(如数据大部分来自白天、简单环境)。
  5. A/B 测试的辛普森悖论:在进行 A/B 测试时,如果不对流量进行精细划分,可能会得出错误的结论。例如,新算法在“商场”和“办公室”两个场景下都表现更好,但由于灰度发布时“办公室”场景的机器人比例碰巧更高,总体指标反而可能显示新算法更差。必须对核心场景进行分层分析(stratified analysis)