REPLAY

通过 dataset 传输层回放一段录制好的 episode——无需策略服务器,可连续播放或逐 chunk 放行。

REPLAY:左侧加载一段录制好的 episode,右侧在实时 3D 机械臂与相机上观看回放。

概览

REPLAY 是控制台六个标签页(DEBUG · MANUAL · COLLECT · REPLAY · EVAL · RESULT)之一。DEBUG 向实时策略询问下一步动作;REPLAY 则从磁盘上的录制文件读取动作并按顺序重新发布。COLLECT 与推理运行录下的内容都能回放——两者保存的都是 LeRobot v2.1 格式。磁盘布局见数据采集

加载 episode

以数据集回放预设启动控制台(具体文件见用配置使 REPLAY 就绪):

bash
eva --config configs/00_openloop/dual_agilex_AGILEX_openloop.py --web-port 8080

打开 http://localhost:8080 并点击 REPLAY。填入左侧面板的输入项后,控制台便将该 episode 挂载为本次会话的只读源——无需重启。

输入项填什么
数据集目录录制文件的根目录路径——即包含 meta/data/videos/ 的那个文件夹。示例:examples/agilex_dataset/。控制台会先读取该目录,得知 episode 数量与列。
Episode要播放哪一次录制,从 0 开始计数。5 个 episode 的数据集合法取值为 0–4。探查目录后会显示数量。
状态 / 动作列用哪些保存的列提供状态与动作。留空则从数据集自动推断。
动作模式录制的动作是 qpos 还是 eef。EEF 动作会经由实时运行所用的同一套 IK 步骤还原。

加载后可调整播放速率,并通过拖动条定位到任意帧、将 3D 机械臂冻结在该帧。当前帧与总帧数显示在状态信息中。

回放:连续或逐步

与 DEBUG 一样,REPLAY 提供两种模式:连续播放,或在每个 chunk 之前暂停、逐段放行。与 DEBUG 唯一的区别在于 chunk 的来源——磁盘上的录制,而非实时策略。

控件作用
RUN / STOP / RESET连续播放、停止、或让机械臂回到起始位姿。
SIM ↻前进一个 chunk,仅在仿真机械臂上演示——真机不动。
REAL ▶把刚预览的 chunk 下发到真机。

「先 SIM 后 REAL」是与 DEBUG 完全一致的分段放行流程——见 DEBUG → STEP

实时视图

右侧是各标签页共用的 3D 视图。回放期间:

实时视图完整机制:DEBUG → 实时舞台

用配置使 REPLAY 就绪

REPLAY 也可完全由配置就绪,使控制台一启动就从磁盘读取动作。EVA 为每种机器人提供数据集回放预设,位于 configs/00_openloop/<robot>_openloop.py。这些预设把传输层设为从已保存的数据集读取——无需真机、ROS 或策略服务器。

复制对应机器人的预设(双臂 AGILEX 为 configs/00_openloop/dual_agilex_AGILEX_openloop.py),只改两个指向你录制的字段。transport 字段:

字段(位于 transport 下)用途
type'dataset'。保持原样。
dataset_dir必填——录制文件的根目录路径。
episode_id播放哪个 episode,从 0 开始计数。默认 0。
dataset_keys把保存的列映射到状态/动作/视频。默认值与 EVA 录制相符;video_keys 为空时回退到 observation.images.{相机名}
python
transport = dict(
    type='dataset',
    dataset_dir='<你的数据集路径>',    # ← 必填。
    episode_id=0,
)

启动:

bash
eva --config <你的_openloop.py 路径> --web-port 8080
replay 策略后端的区别。单纯播放用数据集回放预设。只有当录制必须走一遍正常的策略流程时,才改用 replay 策略后端;见后端

你能回放什么

EVA 产出的任何 LeRobot v2.1 录制:

来源包含内容
COLLECT episode遥操作录制——测得状态与人演示动作配对。
推理运行每次运行一个 episode——状态与策略实际下发的动作配对。

示例数据集随附在 examples/agilex_dataset/(带三个相机的双臂 AGILEX 录制)。把数据集目录dataset_dir 指向它即可。磁盘布局见数据采集