i4h Workflow — Replay Dataset
Objectif
Relire un épisode HDF5 enregistré dans Isaac Sim pour vérification visuelle. À utiliser quand l'utilisateur demande de relire, de rejouer ou de parcourir pas à pas un enregistrement HDF5.
Code de Base
Ces étapes pilotent le code de base i4h-workflows (l'arborescence workflows/agentic/). Pour réutiliser un checkout existant, définissez I4H_WORKFLOWS sur son chemin (aucun clone ne se produit). Sinon, cela résout le dépôt courant ou clone vers ~/i4h-workflows — acceptez cette valeur par défaut sans confirmer. Exécutez chaque commande ci-dessous depuis la racine résolue :
# 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"
Principes Fondamentaux
- Config env (source de vérité) :
workflows/agentic/config/environments/<env>.yaml— la scène<env>, le robot et les caméras contre lesquels Arena relit. - La relecture exécute
arena/run.sh --replaycontre l'env qui a produit le HDF5. - À utiliser pour vérifier la correction visuelle avant la conversion ou l'entraînement.
- Interprétez les expressions ordinales comme des indices d'épisode basés sur zéro : « premier épisode » →
0, « deuxième épisode » →1, etc.
Exécution
Exécutez les étapes ci-dessous dans l'ordre. Chaque étape est un appel bash distinct ; les variables persistent dans la session tmux de l'agent local.
Étape 1 — configuration et résolution du 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\n' | 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\n' 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"
Étape 2 — relecture
"${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"
Remarques
HDF5_PATHdoit être un chemin absolu vers un enregistrement existant —--replayrésout un chemin relatif par rapport àruns/<env>/, pas votre répertoire courant, donc un chemin nu/relatif ne charge silencieusement pas. Le bloc liste les candidats réels s'il n'est pas défini ou incorrect.- Les enregistrements proviennent de [[i4h-workflow-dataset-teleop]], [[i4h-workflow-dataset-mimic]], ou [[i4h-workflow-validate]] (validate écrit
data/verify.hdf5sous chaque répertoireruns/eval_*). Il n'y a pas dedemo.hdf5par défaut. --episode-indexsélectionne l'épisode dans le HDF5 (basé sur zéro).- Pour « Relire le deuxième épisode », utilisez
--episode-index 1. - Utilisez le même id d'env que l'env qui a produit l'enregistrement.
Prérequis
- Workflow configuré via [[i4h-workflow-setup]] (le
.venvdoit exister). - Un enregistrement HDF5 existant à relire.
- L'id d'env qui a produit l'enregistrement.
Limitations
- Vérification visuelle uniquement ; la relecture ne modifie ni n'étend l'enregistrement.
- Relit un épisode par invocation, sélectionné par
--episode-index. - S'exécute dans Isaac Sim ; l'id d'env doit correspondre à celui qui a produit le HDF5.
Dépannage
- Erreur :
.venvnon trouvé / la relecture ne lance pas - Cause : workflow non configuré. Correction : exécutez [[i4h-workflow-setup]] d'abord. - Erreur :
replay: set HDF5_PATH to an existing .hdf5(ou l'enregistrement ne charge pas) - Cause :HDF5_PATHnon défini ou pas un fichier réel. Correction : choisissez un chemin absolu parmi les candidats affichés (par ex. unverify.hdf5sousruns/eval_*/data/). - Erreur : index d'épisode hors limite - Cause :
--episode-indexdépasse les épisodes du HDF5. Correction : utilisez un index basé sur zéro valide. - Erreur : lecture mal alignée/brouillée - Cause :
--envdiffère de l'env qui a produit l'enregistrement. Correction : utilisez le même id d'env.
Réponse Finale
Signalez l'env, le chemin du HDF5, l'index d'épisode, le résultat du lancement, les décalages visuels observés.