| 名称 | 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 路径、片段索引、启动结果、可见的不匹配。