i4h工作流数据集回放Skill i4h-workflow-dataset-replay

该技能在 Isaac Sim 中回放已录制的 HDF5 数据集片段,用于医疗机器人(如手术机器人)等场景的视觉验证,确认环境配置与录制一致。支持通过 --episode-index 选择指定片段。关键词:i4h、HDF5、数据集回放、Isaac Sim、医疗机器人、视觉验证、数据回放工作流。

医疗工作流 0 次安装 0 次浏览 更新于 9/6/2026
名称 i4h-workflow-dataset-replay
版本 “0.6.0”
描述 在 Isaac Sim 内回放录制的 HDF5 片段,用于视觉验证。当用户要求回放、播放或逐步查看 HDF5 录制时使用。
开源协议 Apache-2.0 metadata:
作者 “Isaac for Healthcare Team isaac-for-healthcare-support@nvidia.com” tags: - isaac-for-healthcare - i4h - dataset - replay - hdf5

i4h 工作流 — 数据集回放

目的

在 Isaac Sim 内回放录制的 HDF5 片段,进行视觉验证。当用户要求回放、播放或逐步查看 HDF5 录制时使用。

基础代码

这些步骤驱动 i4h 工作流基础代码(workflows/agentic/ 树)。若要复用现有检出,请将 I4H_WORKFLOWS 设置为其路径(不会发生克隆)。否则,解析当前仓库,或克隆到 ~/i4h-workflows —— 直接采用该默认值,无需提示。从解析出的根目录运行后面的每一条命令:

# Resolve the i4h-workflows base code (provides workflows/agentic/).
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/agentic" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
  [ -d "$ROOT/workflows/agentic" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"

基础知识

  • 环境配置(事实来源): workflows/agentic/config/environments/<env>.yaml — Arena 回放所根据的 <env> 场景、机器人和相机。
  • 回放会针对生成该 HDF5 的环境运行 arena/run.sh --replay
  • 在转换或训练之前用它来验证视觉正确性。
  • 将序数说法解释为零基片段索引:“第一个片段” -> 0、“第二个片段” -> 1,依此类推。

运行

按顺序运行以下步骤。每个步骤是单独的 bash 调用;变量会在本地 agent 的 tmux 会话中保留。

步骤 1 — 设置并解析 HDF5

REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/agentic" ] || REPO_ROOT="$HOME/i4h-workflows"
ENV_ID=scissor_pick_and_place
RUNS_ROOT="${REPO_ROOT}/workflows/agentic/runs"
EPISODE_INDEX="${EPISODE_INDEX:-0}"  # For "Replay second episode", set EPISODE_INDEX=1.

# Point HDF5_PATH at a real recording (absolute path). Recordings come from teleop, mimic, or
# validate (which writes data/verify.hdf5 under each runs/eval_* dir). List candidates newest-first:
#   find "${RUNS_ROOT}" -name '*.hdf5' -printf '%TY-%Tm-%Td %TH:%TM  %p
' | sort -r | head
HDF5_PATH="${HDF5_PATH:-}"
if [ ! -f "${HDF5_PATH}" ]; then
  echo "replay: set HDF5_PATH to an existing .hdf5 (got '${HDF5_PATH:-<unset>}'). Candidates:" >&2
  find "${RUNS_ROOT}" -name '*.hdf5' -printf '%TY-%Tm-%Td %TH:%TM  %p
' 2>/dev/null | sort -r | head
  exit 1
fi

RUN_DIR="${RUNS_ROOT}/replay_${ENV_ID}_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${RUNS_ROOT}/.latest"

步骤 2 — 回放

"${REPO_ROOT}/workflows/agentic/arena/run.sh" \
  --env "${ENV_ID}" \
  --replay "${HDF5_PATH}" \
  --episode-index "${EPISODE_INDEX}" \
  2>&1 | tee "${RUN_DIR}/logs/replay.log"

说明

  • HDF5_PATH 必须是到现有文件的绝对路径 —— --replay 会相对于 runs/<env>/ 解析相对路径,而不是你当前的工作目录,因此裸路径或相对路径会静默加载失败。该块会列出真实候选,若其未设置或错误的话。
  • 录制来自 [[i4h-workflow-dataset-teleop]]、[[i4h-workflow-dataset-mimic]] 或 [[i4h-workflow-validate]](validate 会在每个 runs/eval_* 目录下写入 data/verify.hdf5)。不存在默认的 demo.hdf5
  • --episode-index 在 HDF5 内选择片段(从零开始)。
  • 对于“回放第二个片段”,请使用 --episode-index 1
  • 使用与产生该录制的环境相同的 env id。

先决条件

  • 已通过 [[i4h-workflow-setup]] 设置工作流(.venv 必须存在)。
  • 要回放的现有 HDF5 录制。
  • 产生该录制的 env id。

局限性

  • 仅用于视觉验证;回放不会修改或扩展录制。
  • 每次调用只回放一个片段,由 --episode-index 选择。
  • 在 Isaac Sim 中运行;env id 必须与产生 HDF5 的环境一致。

故障排除

  • 错误: 未找到 .venv / 回放无法启动 - 原因:工作流未设置。解决方法:先运行 [[i4h-workflow-setup]]。
  • 错误: replay: set HDF5_PATH to an existing .hdf5(或录制加载失败) - 原因:HDF5_PATH 未设置或不是真实文件。解决方法:从打印的候选中选一个绝对路径(例如 runs/eval_*/data/ 下的 verify.hdf5)。
  • 错误: 片段索引超出范围 - 原因:--episode-index 超出了 HDF5 中的片段数。解决方法:使用有效的从零开始索引。
  • 错误: 不匹配/播放失真 - 原因:--env 与产生该录制的环境不同。解决方法:使用相同的 env id。

最终响应

报告环境、HDF5 路径、片段索引、启动结果、可见的不匹配。