计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
openx-conversion【效率与协作】It guides Open X-Embodiment RLDS/TFDS-to-LeRobot conversion, OXE transform selection, and guarded Hub publication.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this route to plan, validate, or run a local conversion from an Open X-Embodiment (OXE) RLDS/TFDS dataset into a LeRobot dataset. It covers raw path identity, OXE standardization, state/action schema selection, RGB/depth handling, writer settings, and a separately approved Hub publication.
--use-videos controls.rlds-export route.generic-conversion route.The conversion behavior distilled here was designed for a LeRobot API that
provides LeRobotDataset.create, add_frame, save_episode, and
push_to_hub. Confirm that those methods and their arguments exist in the
selected environment before a real run. A successful import of a newer
LeRobot package is not proof of converter compatibility.
Treat the local destination as destructive: the reference behavior derives a
specific child directory under --local-dir and recursively removes that child
if it already exists. Never point --local-dir at an irreplaceable directory,
and do not use it as a resume mechanism. Use a distinct, empty staging parent.
This is an operating guide, not a bundled data converter. It never requires the source checkout to remain available. A user who needs execution must supply or write an implementation that satisfies the self-contained conversion contract in workflows.md. Do not assume a command named by a repository example is installed.
train split. Do not treat a dataset URL, archive,
or a partial download as a ready raw directory.major.minor.patch version, use its parent as dataset_name; otherwise use
the basename as dataset_name. This exact spelling controls both TFDS
builder lookup and OXE lookup.observation.state with eight
float32 values. Choose the action shape from the configured action encoding,
and include only supported RGB-like observations. Depth needs an explicit
alternative plan because the distilled converter excludes it.--use-videos changes every selected RGB
feature to video storage; without it, features are images. Size writer
processes and threads conservatively, then make a local-only staging run.See workflows.md for the full data and CLI/API contract. See troubleshooting.md at the first failed preflight rather than guessing an OXE mapping.
Before a conversion writes frames, record all of the following:
| Item | Required decision |
|---|---|
| Raw directory | Existing local TFDS data root and whether its final component is a strict semantic version |
| Dataset name | Exact derived TFDS/OXE identifier; no inferred spelling changes |
| Configuration | Catalogued entry, or an explicit unsupported-dataset decision |
| Standardizer | Exact OXE transform or an explicit statement that none exists |
| Modalities | Available RGB-like keys, excluded depth keys, expected height/width/channels |
| State/action | Transformed state-key availability, expected time length, state width 8, action width |
| Metadata | Explicit or catalogued FPS and normalized robot type |
| Output | New staging parent, derived child destination, storage mode, writer concurrency |
| Publication | Local review owner; repo_id and Hub consent only if publishing is approved |
If any row is unknown, stop before output creation. An unrecognised dataset falls back to all-zero state, unknown robot type, and 10 FPS in the distilled behavior; that fallback is diagnostic, not an acceptable production default.
For a raw path ending in droid/1.0.0, the identity is droid at version
1.0.0; the TFDS data root is the directory above droid. For a path ending in
droid, identity is droid with no version and the TFDS data root is its
parent. The derived output child uses <dataset>_<version>_lerobot, including
the empty-version separator when no version was detected.
A configuration maps one exact dataset name to state-key pieces, state/action
encoding, control frequency, and robot type. It is not merely descriptive: the
state builder concatenates configured state pieces and inserts a zero column for
each None placeholder. Standard transforms are a separate registry. A name
can be configured without a transform, transformed without a configuration, or
in neither registry; treat each case explicitly.
The contract selects observations whose key contains lowercase image or
rgb, excluding any key containing lowercase depth. It preserves the TFDS
feature shape and labels selected channels as RGB. Therefore:
video or image according to the
chosen storage mode, with shape taken from the builder.The state output is always an eight-wide float32 vector. For a known mapping,
each configured observation key contributes its transformed array; a None
entry contributes a one-wide zero column. The concatenation only produces width
eight if the source pieces have the expected widths. Validate rank, width, and
time length before writing.
The current catalog uses 7-wide end-effector actions (EEF_POS) or 8-wide
joint-position actions (JOINT_POS). Action values are standardized first when
a transform exists and then cast to float32; the conversion path does not pad,
truncate, or otherwise repair action arrays. Task text is taken from
language_instruction; it must exist after standardization and be decodable.
Detailed encoding names, padding behavior, catalog entries, and catalog asymmetries are in oxe-configurations.md.
openx-help)When assessing a candidate converter without processing data, invoke its help
mode only after confirming imports can resolve. Its interface should expose
--raw-dir, --local-dir, --repo-id, --push-to-hub, --robot-type,
--fps, --use-videos, --image-writer-process, and
--image-writer-threads. Help success establishes parser surface only; it does
not prove TFDS access, data validity, LeRobot compatibility, or output safety.
Do not silently substitute a candidate whose flags differ. Map its API or CLI to the contract in workflows.md, and record every semantic difference, especially output deletion, modality selection, and Hub privacy defaults.
--push-to-hub must remain absent until the local dataset passes review. A
push requires a nonempty repository identifier and valid authentication, but
those facts do not make publishing safe. The distilled behavior publishes
publicly, pushes videos, applies an Apache-2.0 license field, and uses tags that
include LeRobot, the dataset name, rlds, and sometimes openx/robot type.
Confirm those publication semantics independently before enabling it.
This guide distills the repository's OpenX README, RLDS-to-LeRobot entrypoint, OXE configuration catalog, standard-transform registry, and transform utility rules. The catalog contained 70 configuration entries and 73 transform entries when reviewed. No conversion, data download, writer run, simulator, cluster, or Hub operation was performed while constructing this guide.
The guide does not establish that every external dataset is obtainable, that all configurations work with a current TFDS release, or that a present LeRobot release is API-compatible. Keep those as runtime verification tasks.