1. 课程导入

在机器人学习项目中,训练出一个策略只是第一步。真正决定策略能否落地、能否稳定复现、能否持续迭代的,是评测与回放工程。很多团队在训练阶段投入大量算力,却因为缺少系统化评测,无法判断模型是“真的学会了”还是“记住了训练轨迹”。本课程围绕 LeRobot 生态,带你建立一套可复现、可量化、可追踪的策略评测与回放体系。

本课程的核心目标不是教你“跑一次 eval 脚本”,而是让你掌握从数据、策略、环境、指标、回放、报告六个环节构成的完整闭环,并能把这套闭环接入真实机器人或仿真环境。

一、学习目标:从“能跑”到“可信”

完成本课程后,你应当具备以下能力:

  • 理解 LeRobot 中策略、数据集、环境、回放器之间的接口关系,能独立搭建评测流水线。
  • 掌握离线评测与在线评测的区别,能根据任务选择合适指标,如成功率、轨迹误差、动作平滑度、推理延迟。
  • 能够使用回放工具复现训练数据、策略输出和真实执行结果,定位“训练好但部署差”的根因。
  • 能够设计评测配置、批量运行实验、汇总结果并生成可对比的报告。
  • 能够识别常见评测陷阱,例如数据泄漏、环境随机性未固定、指标口径不一致。

二、核心概念:策略评测与回放工程是什么

策略评测是指在给定环境、初始状态和评价指标下,系统性地衡量策略表现的过程。它既包括离线指标,如动作预测误差、负对数似然,也包括在线指标,如任务成功率、完成时间、碰撞次数。评测的关键在于可重复:同样的策略、同样的种子、同样的环境配置,必须得到可解释的结果。

回放工程则是评测的基础设施。它负责记录和重放三类数据:训练数据集中的状态-动作序列、策略推理时的输入输出、以及真实机器人执行时的传感器与动作流。回放的价值在于把“黑盒策略”变成可观察、可断点、可对比的对象。没有回放,评测只能看到最终分数;有了回放,才能看到策略在每一步为什么成功或失败。

在 LeRobot 中,策略通常以 PreTrainedPolicy 或自定义 nn.Module 形式存在,数据集以 LeRobotDataset 组织,环境通过 gym 或自定义 wrapper 接入。评测与回放工程要做的,就是把这些组件用统一配置和日志串起来。

三、整体框架:六层评测与回放体系

下图展示了本课程贯穿始终的整体框架。它从数据层出发,经过策略层、环境层、评测层、回放层,最终汇聚到报告层,形成闭环。

LeRobot 策略评测与回放工程整体框架 数据层 LeRobotDataset 状态/动作/图像 策略层 ACT / Diffusion 推理与动作输出 环境层 仿真 / 真机 Gym Wrapper 评测层 指标与种子 批量运行 回放层 Replay Engine 轨迹记录 · 断点重放 · 输入输出对齐 · 可视化 支持离线数据集回放与在线策略回放 报告层 Report 成功率 · 误差曲线 · 延迟分布 · 失败案例聚类 反馈迭代 数据 → 策略 → 环境 → 评测 → 回放 → 报告 → 反馈迭代,形成可复现闭环

这六层不是线性流水线,而是带反馈的闭环。报告层发现的失败模式,会反向驱动数据补充、策略微调和环境配置修正。回放层则贯穿始终,为每一层提供可观察性。

四、方法流程:一次标准评测的步骤

下面给出一次标准评测的推荐流程,后续章节会逐步展开每个环节。

  1. 确定评测目标:是验证策略泛化性、比较两个 checkpoint,还是排查真机部署问题。
  2. 固定配置:设置随机种子、环境版本、动作频率、观测裁剪范围,写入配置文件。
  3. 准备数据与策略:加载 LeRobotDataset 和策略权重,确认输入输出维度一致。
  4. 运行评测:批量执行多个 episode,记录每步状态、动作、奖励和成功标志。
  5. 回放分析:对失败 episode 进行逐帧回放,对比策略动作与专家动作。
  6. 汇总报告:计算均值、方差、置信区间,输出对比表格和曲线。
# 示例:评测配置片段
eval:
  policy_path: outputs/train/act_pusht/checkpoints/last
  dataset_repo: lerobot/pusht
  env: pusht
  episodes: 50
  seed: 42
  metrics:
    - success_rate
    - action_mse
    - inference_latency_ms
  replay:
    save_trajectories: true
    output_dir: eval/replay/act_pusht_seed42

五、案例场景:从失败回放中定位问题

假设你在 PushT 任务上训练了一个 ACT 策略,离线动作误差很低,但在线成功率只有 30%。直接看分数无法解释原因。通过回放工程,你发现策略在接近目标区域时动作抖动明显,且推理延迟从 8ms 上升到 25ms,导致控制频率下降。进一步对比专家轨迹,发现训练数据中该区域样本稀少。于是你补充了 20 条该区域演示数据,重新微调后成功率提升到 72%。这个案例说明:评测给出信号,回放给出证据,数据给出解法。

六、常见误区与复盘清单

误区 后果 正确做法
只跑一次评测就下结论 结果受随机性影响大,不可信 固定多种子,跑多 episode,报告均值与方差
离线指标好就认为策略好 忽略分布偏移和闭环误差累积 离线指标与在线成功率结合看
回放只存视频不存动作 无法逐帧对比策略与专家动作 同时保存状态、动作、时间戳和推理延迟
评测环境与训练环境不一致 指标虚高或虚低,无法归因 统一环境版本、动作频率和观测处理
没有失败案例聚类 只看到总分,看不到系统性问题 按失败模式分组,定位高频失败场景
建议把每次评测的配置、代码版本、数据集版本、随机种子和结果目录统一记录。后续章节会介绍如何用实验管理工具自动完成这件事。
不要用训练集本身作为评测集来报告成功率。即使只做离线评测,也要划分独立验证集,否则指标会严重高估。

七、实战路线图

本课程后续将按以下路线推进:先建立评测环境与数据加载的基线,再实现离线指标与在线 rollout;随后深入回放引擎,支持轨迹记录、断点重放和可视化;接着引入批量实验与报告生成;最后通过真机部署案例,把评测与回放工程应用到实际机器人上。每一章都会围绕一个可运行的小目标展开,最终拼成完整系统。

现在,你已经了解了本课程的目标、核心概念、整体框架和路线图。接下来,我们将从评测环境与数据基线开始,动手搭建第一套可复现的评测流程。