| name | convert-dataset |
| description | Convert robot trajectory datasets between formats — currently agibot v1 → LeRobot v2.1 (parquet + HEVC/PNG-encoded MP4). Uses the `geniesim dataset convert agibot-to-lerobot` CLI verb, which wraps the `geniesim_benchmark.dataset.convert.agibot_to_lerobot` Python API. Trigger: When the user asks to "convert agibot to lerobot", "convert dataset", "transcode trajectory data", "build a LeRobot dataset", "把 agibot 数据转成 lerobot", or provides an agibot episode dir / batch dir and wants the LeRobot v2.1 layout (`data/chunk-*/*.parquet` + `videos/…/*.mp4` + `meta/`).
|
| license | MPL-2.0 |
| metadata | {"author":"genie-sim","version":"1.0"} |
| prerequisites | ["geniesim_cli:fresh-machine-setup"] |
| inputs | [{"name":"agibot_dir","desc":"agibot episode dir (single) or parent dir containing multiple episode subdirs","required":true},{"name":"output_dir","desc":"Destination for the LeRobot dataset","required":true},{"name":"lerobot_ref_dir","desc":"Reference LeRobot dataset to fill missing fisheye / head_back extrinsic columns from","required":false},{"name":"fps","desc":"Video frame rate","required":false,"default":"30"}] |
| outputs | [{"desc":"LeRobot v2.1 dataset at output_dir (data/chunk-NNN/episode_*.parquet, videos/chunk-NNN/<key>/episode_*.mp4, meta/info.json + tasks.jsonl + episodes.jsonl + episodes_stats.jsonl)"}] |
When to Use
- User has agibot v1 trajectory data and wants the LeRobot v2.1 layout (e.g.
to feed an upstream LeRobot training pipeline, or compare against an
existing LeRobot reference).
- User provides a parent dir of multiple episode subdirs — the converter
auto-detects single vs batch from layout.
Do not use for:
- Just running a benchmark task →
run-benchmark skill.
- Probing an inference server →
check-inference skill.
Prerequisites
geniesim_benchmark installed (tier-1 peer — comes with geniesim bootstrap).
ffmpeg on PATH. Used for both RGB encoding (HEVC / libx265) and
depth encoding (PNG / gray16le). The converter pre-flights ffmpeg; if
missing it surfaces the install hint (sudo apt install ffmpeg on
Debian/Ubuntu, brew install ffmpeg on macOS).
h5py, numpy, pyarrow are declared deps of geniesim_benchmark;
nothing to install separately.
Workflow
Single episode
geniesim dataset convert agibot-to-lerobot \
--agibot-dir ./agibot/episode_000 \
--output-dir ./lerobot_out
--agibot-dir is treated as a single episode iff it contains
aligned_joints.h5 directly. The resulting dataset has
total_episodes = 1.
Batch (auto-detect)
geniesim dataset convert agibot-to-lerobot \
--agibot-dir ./agibot \
--output-dir ./lerobot_out
When --agibot-dir does not contain aligned_joints.h5 directly, the
converter scans for episode subdirectories (each must contain
aligned_joints.h5). Episodes are indexed in sorted order of their
directory name.
With a reference LeRobot dataset
geniesim dataset convert agibot-to-lerobot \
--agibot-dir ./agibot \
--output-dir ./lerobot_out \
--lerobot-ref-dir /path/to/reference/lerobot_dataset
When the agibot episode is missing the fisheye / head_back extrinsics
(common — those cameras aren't on every rig), the converter pulls the
missing columns from
<lerobot-ref-dir>/data/chunk-000/episode_000000.parquet. Omit
to leave those columns empty.