
Skill
i4h-workflow-dataset-convert
convert agentic HDF5 recordings to LeRobot datasets
Description
Convert an agentic HDF5 recording into a LeRobot dataset (parquet, meta, videos). Use when asked to convert HDF5, prepare for training, or export to LeRobot; not for viewing — use [[i4h-lerobot-viz]].
SKILL.md
i4h Workflow — Convert Dataset
Purpose
Convert an agentic HDF5 recording into a LeRobot dataset (parquet + meta + videos). Use when the user asks to convert HDF5, prepare for training, or export to LeRobot.
Base Code
These steps drive the i4h-workflows base code (the workflows/agentic/ tree). To reuse an existing checkout, set I4H_WORKFLOWS to its path (no clone happens). Otherwise this resolves the current repo, or clones to ~/i4h-workflows — pick that default without prompting. Run every command below from the resolved root:
# 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"
Basics
- Use the same
--envthat produced the HDF5. - Env config (source of truth):
workflows/agentic/config/environments/<env>.yamlsupplies the robot, task, cameras, anddataset.*(action/state names, splits, modality) converter defaults. - Output goes to
HF_LEROBOT_HOME/<repo-id>.
Run
Run the steps below in order. Each step is a separate bash call; variables persist in the local agent's tmux session.
Step 1 — setup and resolve 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"
# 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 "convert: 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}/convert_${ENV_ID}_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${RUNS_ROOT}/.latest"
export HF_LEROBOT_HOME="${RUN_DIR}/lerobot"
Step 2 — convert
"${REPO_ROOT}/workflows/agentic/dataset/run.sh" \
--env "${ENV_ID}" \
--hdf5-path "${HDF5_PATH}" \
--repo-id "local/${ENV_ID}" \
--video-codec h264 \
--overwrite \
2>&1 | tee "${RUN_DIR}/logs/convert.log"
Notes
--video-codec h264is required. The converter's default AV1 codec breaks GR00T'sdecordvideo reader at finetune time.- Scissor SO-ARM generates
meta/modality.jsonfrom YAML splits and does not needdataset.modality_template_path. - G1 locomanip and assemble-trocar use
dataset.modality_template_pathfrom the env YAML. - All camera streams are resized to the env YAML
policy.image_size(override with--image-size H W), normalizing mixed-resolution cameras (e.g. head cam + overview cam) to the one size the modality config expects.
Verify
${HF_LEROBOT_HOME}/local/${ENV_ID}/meta/info.jsonexists.- Log reports the saved episode count.
- Per-episode video files are present under
${HF_LEROBOT_HOME}/local/${ENV_ID}/.
Prerequisites
- Workflow set up via [[i4h-workflow-setup]] (the
.venvmust exist). - An existing HDF5 recording to convert (set
HDF5_PATHto an absolute path; the Run block lists candidates if it's unset or wrong). - The same
--envthat produced the HDF5 (its YAML supplies robot, task, camera, modality, and converter defaults). HF_LEROBOT_HOMEset to the output location for<repo-id>.
Limitations
--video-codec h264is required; the converter's default AV1 codec breaks GR00T'sdecordreader at finetune time.- All camera streams are resized to the env YAML
policy.image_size(override with--image-size H W). - G1 locomanip and assemble-trocar require
dataset.modality_template_pathfrom the env YAML; scissor SO-ARM generatesmeta/modality.jsonfrom YAML splits.
Troubleshooting
- Error:
.venvnot found / module import fails - Cause: workflow not set up. Fix: run [[i4h-workflow-setup]] first. - Error: input HDF5 not found - Cause: wrong or missing
--hdf5-path. Fix: pointHDF5_PATHat an existing recording. - Error:
decordfails to read video at finetune time - Cause: dataset written with the default AV1 codec. Fix: re-convert with--video-codec h264. - Error: missing/incorrect modality config - Cause: wrong
--env, so robot/task/camera/modality defaults do not match the HDF5. Fix: use the same--envthat produced the recording.
Final Response
Report source HDF5, dataset path, repo id, episode count, skipped or failed episodes.
More skills from the skills repository
View all 305 skillsaccelerated-computing-cudf
accelerate data processing with cuDF
Jul 14Data AnalysisData EngineeringNVIDIAPerformanceaiq-deploy
deploy and manage NVIDIA AI-Q infrastructure
Jul 14DeploymentInfrastructureNVIDIAaiq-research
conduct deep research with AI-Q
Jul 14AgentsNVIDIAResearchamc-run-sample-calibration
run AMC sample dataset calibration
Jul 17Data AnalysisNVIDIATestingamc-run-video-calibration
calibrate video datasets with AutoMagicCalib
Jul 17AutomationImagingNVIDIAVideoamc-setup-calibration-stack
deploy AutoMagicCalib microservice with Docker
Jul 17DeploymentDockerNVIDIAOperations
More from NVIDIA
View publishernemoclaw-user-guide
retrieve NemoClaw documentation and configuration
NemoClaw
Jul 20DocumentationMCPSearchmcore-build-and-dependency
manage Megatron-LM development environments
Megatron-LM
Jul 27ContainersDeploymentPythonmcore-bump-base-image
update NVIDIA PyTorch base images
Megatron-LM
Jul 14CI/CDDeploymentmcore-cicd
manage CI/CD pipelines for Megatron-LM
Megatron-LM
Jul 27CI/CDDeploymentGitHubmcore-create-issue
investigate CI failures and create issues
Megatron-LM
Jul 14DebuggingGitHubTriagemcore-linting-and-formatting
lint and format Megatron-LM code
Megatron-LM
Jul 14Best PracticesCode Analysis