Convert Dataset logo

Convert Dataset

OrganizationPopular
AgibotTech
convert-dataset

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/`).

Overview

PublisherAgibotTech
Repositorygenie_sim
Skill nameconvert-dataset
Stars
1.4K
Forks
119
Bundled files
Instructions only
LicenseMPL-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by AgibotTech on GitHub. Read the source before you install it.

Installation

Install the Convert Dataset AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AgibotTech/genie_sim.git /tmp/genie_sim
mkdir -p .claude/skills
cp -r /tmp/genie_sim/source/geniesim_benchmark/skills/convert-dataset .claude/skills/convert-dataset
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Convert Dataset in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Convert Dataset on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Convert Dataset is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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

bash
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)

bash
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

bash
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 --lerobot-ref-dir to leave those columns empty.

Tune FPS

bash
--fps 60   # default is 30

--fps is passed to ffmpeg (-r, -framerate) and baked into the v2.1 timestamps (frame_index / fps). The meta/info.json always records fps: 30 regardless — match this if you need consistency across a collection.

Programmatic use

The same conversion is callable from Python:

python
from pathlib import Path
from geniesim_benchmark.dataset.convert.agibot_to_lerobot import convert_agibot_to_lerobot

manifest = convert_agibot_to_lerobot(
    agibot_dir=Path("./agibot"),
    output_dir=Path("./lerobot_out"),
    lerobot_ref_dir=Path("./ref_lerobot"),  # optional
    fps=30.0,
)
print(manifest["total_episodes"], manifest["total_frames"])

The Python API raises RuntimeError for missing ffmpeg, missing heavy deps, or no detected episodes. The CLI wrapper catches those and prints the error to stderr with exit code 1.

Verify it worked

bash
ls -R lerobot_out/
# → data/chunk-000/episode_000000.parquet, ...
# → videos/chunk-000/{top_head,hand_left,hand_right,top_head_depth,...}/episode_*.mp4
# → meta/{info.json,tasks.jsonl,episodes.jsonl,episodes_stats.jsonl}

python3 -c "
import pyarrow.parquet as pq
t = pq.read_table('lerobot_out/data/chunk-000/episode_000000.parquet')
print(t.schema)
print('rows:', t.num_rows)
"

observation.state must be a fixed_size_list<float32, 159> and action a fixed_size_list<float32, 40> — those widths are part of the v2.1 contract and the converter writes them literally.

Troubleshooting

  • ffmpeg is not on PATH — install ffmpeg; see Prerequisites.
  • No episode directories found--agibot-dir neither contains aligned_joints.h5 directly nor has any subdir containing one. Re-check the path; common mistake is pointing at a parent that's one level too high.
  • ERROR encoding <key>: … — ffmpeg printed something to stderr. Common causes: missing input frames (camera/<N>/<stem>.jpg glob is sparse), unsupported codec (older ffmpeg without libx265 — install ffmpeg with HEVC support, e.g. the nasm/libx265 variant), or write permission errors on --output-dir.
  • Stats look wrongepisodes_stats.jsonl reads back the parquet rows; if the parquet wasn't written the stats entry is {}. Inspect the parquet first.

Resources

Frequently asked questions

What does the Convert Dataset AI skill do?

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/`).

Why use Convert Dataset on TypingMind?

Because you install it once and use it with any model. Convert Dataset is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Convert Dataset in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AgibotTech/genie_sim/tree/main/source/geniesim_benchmark/skills/convert-dataset. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Convert Dataset?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Convert Dataset?

As many as you like. As long as a model supports skills, you can use Convert Dataset with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Convert Dataset AI skill free?

Yes. It is published on GitHub by AgibotTech under the MPL-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇