get-embodied-tasks 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- get_embodied_tasks-0.1.0/.gitignore +8 -0
- get_embodied_tasks-0.1.0/PKG-INFO +88 -0
- get_embodied_tasks-0.1.0/README.md +71 -0
- get_embodied_tasks-0.1.0/SKILL.md +105 -0
- get_embodied_tasks-0.1.0/docs/backends/lerobot/cli_reference.md +26 -0
- get_embodied_tasks-0.1.0/docs/backends/lerobot/components_reference.md +150 -0
- get_embodied_tasks-0.1.0/docs/backends/lerobot/troubleshooting.md +55 -0
- get_embodied_tasks-0.1.0/docs/scripts/gen_lerobot_reference.py +216 -0
- get_embodied_tasks-0.1.0/install.sh +19 -0
- get_embodied_tasks-0.1.0/pyproject.toml +39 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/__init__.py +4 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/__init__.py +1 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/base.py +35 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/lerobot.py +99 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends.toml +8 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/catalog.py +335 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/cli.py +195 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/__init__.py +1 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/lerobot_datasets.py +69 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/robomme_task_descriptions.json +22 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/robotwin_task_descriptions.json +56 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/discovery.py +66 -0
- get_embodied_tasks-0.1.0/src/get_embodied_tasks/matching.py +46 -0
- get_embodied_tasks-0.1.0/tests/conftest.py +26 -0
- get_embodied_tasks-0.1.0/tests/test_catalog.py +46 -0
- get_embodied_tasks-0.1.0/tests/test_cli.py +54 -0
- get_embodied_tasks-0.1.0/tests/test_discovery.py +50 -0
- get_embodied_tasks-0.1.0/tests/test_matching.py +35 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: get-embodied-tasks
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Resolve an embodied-AI task description to its dataset and ready-to-run train/eval commands across pluggable backends (LeRobot, ...).
|
|
5
|
+
Project-URL: Homepage, https://github.com/OpenGHz/get-embodied-tasks
|
|
6
|
+
Project-URL: Repository, https://github.com/OpenGHz/get-embodied-tasks
|
|
7
|
+
Author: OpenGHz
|
|
8
|
+
License: Apache-2.0
|
|
9
|
+
Keywords: agent-skill,benchmark,datasets,embodied-ai,lerobot,robotics
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Provides-Extra: test
|
|
15
|
+
Requires-Dist: pytest; extra == 'test'
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# get-embodied-tasks
|
|
19
|
+
|
|
20
|
+
Resolve an embodied-AI task description to its **existing dataset** and
|
|
21
|
+
**ready-to-run train/eval commands**, across pluggable backends. **LeRobot** is the
|
|
22
|
+
first backend; more can be added. Ships as both a CLI and an agent skill (Claude +
|
|
23
|
+
Codex).
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
get-embodied-tasks "stack blocks"
|
|
27
|
+
# → [lerobot] RoboTwin stack_blocks_two
|
|
28
|
+
# Dataset: lerobot/robotwin_unified
|
|
29
|
+
# Train: lerobot-train --policy.type=smolvla --dataset.repo_id=lerobot/robotwin_unified ...
|
|
30
|
+
# Eval: lerobot-eval --env.type=robotwin --env.task=stack_blocks_two ...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Design
|
|
34
|
+
|
|
35
|
+
- **Facts in the tool, judgment in the skill.** The CLI emits real dataset ids and
|
|
36
|
+
command flags (never model-recalled). The `SKILL.md` playbook parses a fuzzy task
|
|
37
|
+
description, calls the CLI, and on a miss researches alternatives or drafts a plan.
|
|
38
|
+
- **Backends are read, not vendored.** The LeRobot adapter reads a *vanilla* LeRobot
|
|
39
|
+
checkout by AST over its `envs/` source (no import of torch/gymnasium; no patches to
|
|
40
|
+
LeRobot). RoboTwin/RoboMME task descriptions ship here in `data/`.
|
|
41
|
+
- **Drift is surfaced, never hidden.** If a backend's expected constant/file changes,
|
|
42
|
+
the catalog emits structured warnings (stderr, `--json` `warnings`, `--strict`,
|
|
43
|
+
`doctor`) so it can be fixed.
|
|
44
|
+
|
|
45
|
+
## Install
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install -e .
|
|
49
|
+
bash install.sh # symlink into ~/.agents/skills (Claude + Codex pick it up)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Backend discovery
|
|
53
|
+
|
|
54
|
+
For each backend, in order: `$<ENV_VAR>` → `./third_party/ei_ws/<name>` →
|
|
55
|
+
`~/ei_ws/<name>` → installed package. For LeRobot set `LEROBOT_HOME=<checkout>` or
|
|
56
|
+
just `pip install lerobot`. Configure backends in
|
|
57
|
+
[`src/get_embodied_tasks/backends.toml`](src/get_embodied_tasks/backends.toml).
|
|
58
|
+
|
|
59
|
+
## CLI
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
get-embodied-tasks "<query>" [-b BENCHMARK] [--backend NAME] [-n N] [--policy P] [--json]
|
|
63
|
+
get-embodied-tasks --benchmark <b> # list a benchmark
|
|
64
|
+
get-embodied-tasks --dump # whole catalog as JSON
|
|
65
|
+
get-embodied-tasks doctor # backend health / drift report
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Reference docs (per backend)
|
|
69
|
+
|
|
70
|
+
[`docs/backends/lerobot/`](docs/backends/lerobot/) holds reference material for the
|
|
71
|
+
LeRobot backend, regeneratable from a vanilla checkout:
|
|
72
|
+
|
|
73
|
+
- [`cli_reference.md`](docs/backends/lerobot/cli_reference.md) — every `lerobot-*` command + its extra (generated)
|
|
74
|
+
- [`components_reference.md`](docs/backends/lerobot/components_reference.md) — registered policies/robots/teleops/cameras/optimizers/schedulers/processors (generated)
|
|
75
|
+
- [`troubleshooting.md`](docs/backends/lerobot/troubleshooting.md) — consolidated FAQ (hand-written, links upstream)
|
|
76
|
+
|
|
77
|
+
Refresh the generated ones:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
python docs/scripts/gen_lerobot_reference.py --lerobot-root <checkout> # or rely on discovery
|
|
81
|
+
python docs/scripts/gen_lerobot_reference.py --check # CI: fail if stale
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Adding a backend
|
|
85
|
+
|
|
86
|
+
Add an adapter under `src/get_embodied_tasks/backends/` implementing
|
|
87
|
+
`backends/base.py:Backend`, register it in `cli.py:_ADAPTERS`, and add a table to
|
|
88
|
+
`backends.toml`.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# get-embodied-tasks
|
|
2
|
+
|
|
3
|
+
Resolve an embodied-AI task description to its **existing dataset** and
|
|
4
|
+
**ready-to-run train/eval commands**, across pluggable backends. **LeRobot** is the
|
|
5
|
+
first backend; more can be added. Ships as both a CLI and an agent skill (Claude +
|
|
6
|
+
Codex).
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
get-embodied-tasks "stack blocks"
|
|
10
|
+
# → [lerobot] RoboTwin stack_blocks_two
|
|
11
|
+
# Dataset: lerobot/robotwin_unified
|
|
12
|
+
# Train: lerobot-train --policy.type=smolvla --dataset.repo_id=lerobot/robotwin_unified ...
|
|
13
|
+
# Eval: lerobot-eval --env.type=robotwin --env.task=stack_blocks_two ...
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Design
|
|
17
|
+
|
|
18
|
+
- **Facts in the tool, judgment in the skill.** The CLI emits real dataset ids and
|
|
19
|
+
command flags (never model-recalled). The `SKILL.md` playbook parses a fuzzy task
|
|
20
|
+
description, calls the CLI, and on a miss researches alternatives or drafts a plan.
|
|
21
|
+
- **Backends are read, not vendored.** The LeRobot adapter reads a *vanilla* LeRobot
|
|
22
|
+
checkout by AST over its `envs/` source (no import of torch/gymnasium; no patches to
|
|
23
|
+
LeRobot). RoboTwin/RoboMME task descriptions ship here in `data/`.
|
|
24
|
+
- **Drift is surfaced, never hidden.** If a backend's expected constant/file changes,
|
|
25
|
+
the catalog emits structured warnings (stderr, `--json` `warnings`, `--strict`,
|
|
26
|
+
`doctor`) so it can be fixed.
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install -e .
|
|
32
|
+
bash install.sh # symlink into ~/.agents/skills (Claude + Codex pick it up)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Backend discovery
|
|
36
|
+
|
|
37
|
+
For each backend, in order: `$<ENV_VAR>` → `./third_party/ei_ws/<name>` →
|
|
38
|
+
`~/ei_ws/<name>` → installed package. For LeRobot set `LEROBOT_HOME=<checkout>` or
|
|
39
|
+
just `pip install lerobot`. Configure backends in
|
|
40
|
+
[`src/get_embodied_tasks/backends.toml`](src/get_embodied_tasks/backends.toml).
|
|
41
|
+
|
|
42
|
+
## CLI
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
get-embodied-tasks "<query>" [-b BENCHMARK] [--backend NAME] [-n N] [--policy P] [--json]
|
|
46
|
+
get-embodied-tasks --benchmark <b> # list a benchmark
|
|
47
|
+
get-embodied-tasks --dump # whole catalog as JSON
|
|
48
|
+
get-embodied-tasks doctor # backend health / drift report
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Reference docs (per backend)
|
|
52
|
+
|
|
53
|
+
[`docs/backends/lerobot/`](docs/backends/lerobot/) holds reference material for the
|
|
54
|
+
LeRobot backend, regeneratable from a vanilla checkout:
|
|
55
|
+
|
|
56
|
+
- [`cli_reference.md`](docs/backends/lerobot/cli_reference.md) — every `lerobot-*` command + its extra (generated)
|
|
57
|
+
- [`components_reference.md`](docs/backends/lerobot/components_reference.md) — registered policies/robots/teleops/cameras/optimizers/schedulers/processors (generated)
|
|
58
|
+
- [`troubleshooting.md`](docs/backends/lerobot/troubleshooting.md) — consolidated FAQ (hand-written, links upstream)
|
|
59
|
+
|
|
60
|
+
Refresh the generated ones:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
python docs/scripts/gen_lerobot_reference.py --lerobot-root <checkout> # or rely on discovery
|
|
64
|
+
python docs/scripts/gen_lerobot_reference.py --check # CI: fail if stale
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Adding a backend
|
|
68
|
+
|
|
69
|
+
Add an adapter under `src/get_embodied_tasks/backends/` implementing
|
|
70
|
+
`backends/base.py:Backend`, register it in `cli.py:_ADAPTERS`, and add a table to
|
|
71
|
+
`backends.toml`.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: get-embodied-tasks
|
|
3
|
+
description: >-
|
|
4
|
+
For an embodied-AI / robot-manipulation task description (scene, device, objects,
|
|
5
|
+
operation, steps, perturbation, memory, etc.), find the matching existing simulation
|
|
6
|
+
task across pluggable backends (LeRobot today, more later) — its dataset (download
|
|
7
|
+
link) and the exact train/eval commands to run it. If nothing fits, research other
|
|
8
|
+
open-source projects/datasets, and if none exist, draft an implementation plan. Use
|
|
9
|
+
when the user asks "which dataset/benchmark has task X", "how do I train/eval on X",
|
|
10
|
+
"给我这个任务的数据集和训练/推理命令", "哪个 benchmark 有这个任务",
|
|
11
|
+
"找一个搭积木/带光照扰动/需要记忆的数据集", or describes a manipulation task and wants
|
|
12
|
+
data + runnable configs.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# get-embodied-tasks
|
|
16
|
+
|
|
17
|
+
Turn a task description into **(1) the existing dataset + download link** and
|
|
18
|
+
**(2) ready-to-run training/evaluation commands**, sourced from real backends. When
|
|
19
|
+
no backend covers it, **research** alternatives or **draft an implementation plan**.
|
|
20
|
+
|
|
21
|
+
## Core principle
|
|
22
|
+
|
|
23
|
+
**Facts come from the tool, judgment comes from you.** Dataset repo ids and command
|
|
24
|
+
flags MUST come verbatim from the `get-embodied-tasks` CLI — never invent a dataset
|
|
25
|
+
id or a command from memory. Your job: translate the description into the right
|
|
26
|
+
query/benchmark, pick among results, and explain.
|
|
27
|
+
|
|
28
|
+
Scope: **simulation** tasks that already have datasets. Backends are discovered, not
|
|
29
|
+
hard-coded (see "Backends" below).
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
### 1. Parse the description → query + facet
|
|
34
|
+
|
|
35
|
+
Pull the salient noun/verb ("stack blocks", "insert peg", "open drawer"). Map
|
|
36
|
+
distinctive requirements to a benchmark with `--benchmark`:
|
|
37
|
+
|
|
38
|
+
| Mentions… | `--benchmark` |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| memory / counting / occlusion / history-dependent | `robomme` |
|
|
41
|
+
| perturbation / robustness / viewpoint / lighting / distractor | `libero_plus` |
|
|
42
|
+
| bimanual / dual-arm / handover | `robotwin` |
|
|
43
|
+
| language-conditioned multi-task tabletop | `libero`, `metaworld` |
|
|
44
|
+
| kitchen / household | `robocasa` |
|
|
45
|
+
| long-horizon reasoning, tool use | `vlabench` |
|
|
46
|
+
|
|
47
|
+
If unsure, omit `--benchmark` (searches everything; a task may match several
|
|
48
|
+
benchmarks — present the best fit and note the alternatives).
|
|
49
|
+
|
|
50
|
+
### 2. Call the tool (source of truth)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
get-embodied-tasks "<query>" # dataset + train/eval per match
|
|
54
|
+
get-embodied-tasks "<query>" --benchmark <b> # scope to a benchmark
|
|
55
|
+
get-embodied-tasks --benchmark <b> # list a whole benchmark
|
|
56
|
+
get-embodied-tasks "<query>" --json # structured
|
|
57
|
+
get-embodied-tasks --dump # whole catalog as JSON (reason over it yourself)
|
|
58
|
+
get-embodied-tasks doctor # backend health / drift check
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Install if missing: `pip install -e /home/ghz/Work/skills/get-embodied-tasks`. It is
|
|
62
|
+
stdlib-only (no torch/GPU) and reads the backend in place.
|
|
63
|
+
|
|
64
|
+
### 3. Present the result
|
|
65
|
+
|
|
66
|
+
For each chosen task: the task + description, the **dataset link**, and the **train**
|
|
67
|
+
and **eval** commands exactly as emitted. Note the policy is a swappable default
|
|
68
|
+
(`--policy.type=`) and that `lerobot-eval` is the sim "inference".
|
|
69
|
+
|
|
70
|
+
### 4. Handle diagnostics (drift) — don't ignore warnings
|
|
71
|
+
|
|
72
|
+
If the CLI prints `⚠ Diagnostics` (stderr) or `--json` has a non-empty `warnings`
|
|
73
|
+
array, a backend's catalog drifted (e.g. LeRobot renamed/moved a constant, or the
|
|
74
|
+
dataset map is stale). **Tell the user what drifted** (the warning names the file/
|
|
75
|
+
constant) and **offer to fix it**: the fix is an edit to the backend adapter
|
|
76
|
+
(`src/get_embodied_tasks/catalog.py` constant names, or `data/lerobot_datasets.py`).
|
|
77
|
+
Run `get-embodied-tasks doctor` for the full health report. Do not silently proceed
|
|
78
|
+
on partial data.
|
|
79
|
+
|
|
80
|
+
For reference while fixing (current registry/CLI names of the LeRobot backend), see
|
|
81
|
+
`docs/backends/lerobot/{components_reference,cli_reference,troubleshooting}.md`;
|
|
82
|
+
regenerate the first two with `python docs/scripts/gen_lerobot_reference.py`.
|
|
83
|
+
|
|
84
|
+
### 5. Fallback — when nothing fits
|
|
85
|
+
|
|
86
|
+
1. **Research** other open-source benchmarks/datasets (use the `deep-research` skill
|
|
87
|
+
or web search). Report concrete links, not guesses.
|
|
88
|
+
2. **If none exist**, draft an **implementation plan** (delegate to the `Plan` agent):
|
|
89
|
+
how to get data (generate in sim / record), which policy, the train/eval setup.
|
|
90
|
+
State plainly that the task is not currently covered.
|
|
91
|
+
|
|
92
|
+
## Backends
|
|
93
|
+
|
|
94
|
+
`get-embodied-tasks` is backend-pluggable; **LeRobot** is the first backend. Each
|
|
95
|
+
backend is located by discovery: `$<ENV_VAR>` → `./third_party/ei_ws/<name>` →
|
|
96
|
+
`~/ei_ws/<name>` → installed package. For LeRobot, point `LEROBOT_HOME` at a checkout
|
|
97
|
+
or just have `lerobot` installed. Adding a backend = a new adapter under
|
|
98
|
+
`src/get_embodied_tasks/backends/` + an entry in `backends.toml`.
|
|
99
|
+
|
|
100
|
+
## Don'ts
|
|
101
|
+
|
|
102
|
+
- Don't output a dataset id or command the CLI didn't emit.
|
|
103
|
+
- Don't claim a task is covered when there was no match — go to step 5.
|
|
104
|
+
- Don't ignore `⚠ Diagnostics` — surface and offer to fix (step 4).
|
|
105
|
+
- Sim-only: no real-robot `lerobot-record`/`lerobot-rollout` commands.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# LeRobot CLI Reference
|
|
2
|
+
|
|
3
|
+
<!-- AUTO-GENERATED by docs/scripts/gen_lerobot_reference.py; do not edit by hand. Run it to refresh. -->
|
|
4
|
+
|
|
5
|
+
All `lerobot-*` commands of the discovered LeRobot checkout. Run any with `--help`.
|
|
6
|
+
Install a command's extra with `pip install 'lerobot[<extra>]'`.
|
|
7
|
+
|
|
8
|
+
| Command | Installs with | Summary |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `lerobot-calibrate` | `hardware` | Helper to recalibrate your device (robot or teleoperator). |
|
|
11
|
+
| `lerobot-dataset-viz` | `dataset` | Visualize data of **all** frames of any episode of a dataset of type LeRobotDataset. |
|
|
12
|
+
| `lerobot-edit-dataset` | `dataset` | Edit LeRobot datasets using various transformation tools. |
|
|
13
|
+
| `lerobot-eval` | `evaluation` | Evaluate a policy on an environment by running rollouts and computing metrics. |
|
|
14
|
+
| `lerobot-find-cameras` | `hardware` | Helper to find the camera devices available in your system. |
|
|
15
|
+
| `lerobot-find-joint-limits` | `hardware` | Script to find joint limits and end-effector bounds via teleoperation. |
|
|
16
|
+
| `lerobot-find-port` | `hardware` | Helper to find the USB port associated with your MotorsBus. |
|
|
17
|
+
| `lerobot-imgtransform-viz` | `dataset` | Visualize effects of image transforms for a given configuration. |
|
|
18
|
+
| `lerobot-info` | `—` | Use this script to get a quick summary of your system config. |
|
|
19
|
+
| `lerobot-record` | `core_scripts` | Records a dataset via teleoperation. This is a pure data-collection |
|
|
20
|
+
| `lerobot-replay` | `core_scripts` | Replays the actions of an episode from a dataset on a robot. |
|
|
21
|
+
| `lerobot-rollout` | `—` | Policy deployment engine with pluggable rollout strategies. |
|
|
22
|
+
| `lerobot-setup-can` | `—` | Setup and debug CAN interfaces for Damiao motors (e.g., OpenArms). |
|
|
23
|
+
| `lerobot-setup-motors` | `hardware` | Helper to set motor ids and baudrate. |
|
|
24
|
+
| `lerobot-teleoperate` | `core_scripts` | Simple script to control a robot from teleoperation. |
|
|
25
|
+
| `lerobot-train` | `training` | Train a policy. |
|
|
26
|
+
| `lerobot-train-tokenizer` | `—` | Train FAST tokenizer for action encoding. |
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# LeRobot Components Reference
|
|
2
|
+
|
|
3
|
+
<!-- AUTO-GENERATED by docs/scripts/gen_lerobot_reference.py; do not edit by hand. Run it to refresh. -->
|
|
4
|
+
|
|
5
|
+
Every component registered in the LeRobot codebase, by kind. Generated by AST-scanning
|
|
6
|
+
the registries of the discovered LeRobot checkout, so it matches that version.
|
|
7
|
+
|
|
8
|
+
## Policies (16)
|
|
9
|
+
|
|
10
|
+
Pass as `--policy.type=<type>` to `lerobot-train`, or load a trained one with `--policy.path=`.
|
|
11
|
+
|
|
12
|
+
| Type | Class | Summary |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `act` | `ACTConfig` | Configuration class for the Action Chunking Transformers policy. |
|
|
15
|
+
| `diffusion` | `DiffusionConfig` | Configuration class for DiffusionPolicy. |
|
|
16
|
+
| `eo1` | `EO1Config` | Configuration for native EO1 policy integration in LeRobot. |
|
|
17
|
+
| `gaussian_actor` | `GaussianActorConfig` | Gaussian actor configuration. |
|
|
18
|
+
| `groot` | `GrootConfig` | Configuration for Groot policy wrapper. |
|
|
19
|
+
| `molmoact2` | `MolmoAct2Config` | MolmoAct2 policy backed by the converted HF checkpoint implementation. |
|
|
20
|
+
| `multi_task_dit` | `MultiTaskDiTConfig` | Configuration for the Multi-Task Diffusion Transformer (DiT) policy. |
|
|
21
|
+
| `pi0` | `PI0Config` | |
|
|
22
|
+
| `pi05` | `PI05Config` | |
|
|
23
|
+
| `pi0_fast` | `PI0FastConfig` | |
|
|
24
|
+
| `smolvla` | `SmolVLAConfig` | |
|
|
25
|
+
| `tdmpc` | `TDMPCConfig` | Configuration class for TDMPCPolicy. |
|
|
26
|
+
| `vla_jepa` | `VLAJEPAConfig` | |
|
|
27
|
+
| `vqbet` | `VQBeTConfig` | Configuration class for VQ-BeT. |
|
|
28
|
+
| `wall_x` | `WallXConfig` | Configuration class for Wall-X policy. |
|
|
29
|
+
| `xvla` | `XVLAConfig` | Configuration class for the XVLA (Extended Vision-Language-Action) policy so it can |
|
|
30
|
+
|
|
31
|
+
## Robots (17)
|
|
32
|
+
|
|
33
|
+
Pass as `--robot.type=<type>` to `lerobot-record`, `lerobot-teleoperate`, `lerobot-calibrate`, etc.
|
|
34
|
+
|
|
35
|
+
| Type | Class | Summary |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `bi_openarm_follower` | `BiOpenArmFollowerConfig` | Configuration class for Bi OpenArm Follower robots. |
|
|
38
|
+
| `bi_rebot_b601_follower` | `BiRebotB601FollowerConfig` | Configuration class for the bimanual reBot B601-DM follower robot. |
|
|
39
|
+
| `bi_so_follower` | `BiSOFollowerConfig` | Configuration class for Bi SO Follower robots. |
|
|
40
|
+
| `earthrover_mini_plus` | `EarthRoverMiniPlusConfig` | Configuration for EarthRover Mini Plus robot using Frodobots SDK. |
|
|
41
|
+
| `hope_jr_arm` | `HopeJrArmConfig` | |
|
|
42
|
+
| `hope_jr_hand` | `HopeJrHandConfig` | |
|
|
43
|
+
| `koch_follower` | `KochFollowerConfig` | |
|
|
44
|
+
| `lekiwi` | `LeKiwiConfig` | |
|
|
45
|
+
| `lekiwi_client` | `LeKiwiClientConfig` | |
|
|
46
|
+
| `mujoco_env` | `MujocoEnvRobotConfig` | Configuration for wrapping a UnifiedMujocoEnv as a LeRobot robot. |
|
|
47
|
+
| `omx_follower` | `OmxFollowerConfig` | |
|
|
48
|
+
| `openarm_follower` | `OpenArmFollowerConfig` | |
|
|
49
|
+
| `reachy2` | `Reachy2RobotConfig` | |
|
|
50
|
+
| `rebot_b601_follower` | `RebotB601FollowerRobotConfig` | Registered configuration for the reBot B601-DM follower robot. |
|
|
51
|
+
| `so100_follower` | `SOFollowerRobotConfig` | |
|
|
52
|
+
| `so101_follower` | `SOFollowerRobotConfig` | |
|
|
53
|
+
| `unitree_g1` | `UnitreeG1Config` | |
|
|
54
|
+
|
|
55
|
+
## Teleoperators (19)
|
|
56
|
+
|
|
57
|
+
Pass as `--teleop.type=<type>`.
|
|
58
|
+
|
|
59
|
+
| Type | Class | Summary |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| `bi_openarm_leader` | `BiOpenArmLeaderConfig` | Configuration class for Bi OpenArm Follower robots. |
|
|
62
|
+
| `bi_rebot_102_leader` | `BiRebotArm102LeaderConfig` | Configuration class for the bimanual reBot Arm 102 leader teleoperator. |
|
|
63
|
+
| `bi_so_leader` | `BiSOLeaderConfig` | Configuration class for Bi SO Leader teleoperators. |
|
|
64
|
+
| `gamepad` | `GamepadTeleopConfig` | |
|
|
65
|
+
| `homunculus_arm` | `HomunculusArmConfig` | |
|
|
66
|
+
| `homunculus_glove` | `HomunculusGloveConfig` | |
|
|
67
|
+
| `keyboard` | `KeyboardTeleopConfig` | KeyboardTeleopConfig |
|
|
68
|
+
| `keyboard_ee` | `KeyboardEndEffectorTeleopConfig` | Configuration for keyboard end-effector teleoperator. |
|
|
69
|
+
| `keyboard_rover` | `KeyboardRoverTeleopConfig` | Configuration for keyboard rover teleoperator. |
|
|
70
|
+
| `koch_leader` | `KochLeaderConfig` | |
|
|
71
|
+
| `omx_leader` | `OmxLeaderConfig` | |
|
|
72
|
+
| `openarm_leader` | `OpenArmLeaderConfig` | |
|
|
73
|
+
| `openarm_mini` | `OpenArmMiniConfig` | Configuration for OpenArm Mini teleoperator with Feetech motors (dual arms). |
|
|
74
|
+
| `phone` | `PhoneConfig` | |
|
|
75
|
+
| `reachy2_teleoperator` | `Reachy2TeleoperatorConfig` | |
|
|
76
|
+
| `rebot_102_leader` | `RebotArm102LeaderTeleopConfig` | Registered configuration for the reBot Arm 102 leader teleoperator. |
|
|
77
|
+
| `so100_leader` | `SOLeaderTeleopConfig` | |
|
|
78
|
+
| `so101_leader` | `SOLeaderTeleopConfig` | |
|
|
79
|
+
| `unitree_g1` | `UnitreeG1TeleoperatorConfig` | |
|
|
80
|
+
|
|
81
|
+
## Cameras (4)
|
|
82
|
+
|
|
83
|
+
Used inside `--robot.cameras="{ name: {type: <type>, ...} }"`.
|
|
84
|
+
|
|
85
|
+
| Type | Class | Summary |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| `intelrealsense` | `RealSenseCameraConfig` | Configuration class for Intel RealSense cameras. |
|
|
88
|
+
| `opencv` | `OpenCVCameraConfig` | Configuration class for OpenCV-based camera devices or video files. |
|
|
89
|
+
| `reachy2_camera` | `Reachy2CameraConfig` | Configuration class for Reachy 2 camera devices. |
|
|
90
|
+
| `zmq` | `ZMQCameraConfig` | |
|
|
91
|
+
|
|
92
|
+
## Optimizers (5)
|
|
93
|
+
|
|
94
|
+
Pass as `--optimizer.type=<type>`.
|
|
95
|
+
|
|
96
|
+
| Type | Class | Summary |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| `adam` | `AdamConfig` | |
|
|
99
|
+
| `adamw` | `AdamWConfig` | |
|
|
100
|
+
| `multi_adam` | `MultiAdamConfig` | Configuration for multiple Adam optimizers with different parameter groups. |
|
|
101
|
+
| `sgd` | `SGDConfig` | |
|
|
102
|
+
| `xvla-adamw` | `XVLAAdamWConfig` | Custom AdamW optimizer for XVLA with differential learning rates. |
|
|
103
|
+
|
|
104
|
+
## Schedulers (3)
|
|
105
|
+
|
|
106
|
+
Pass as `--scheduler.type=<type>`.
|
|
107
|
+
|
|
108
|
+
| Type | Class | Summary |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| `cosine_decay_with_warmup` | `CosineDecayWithWarmupSchedulerConfig` | Used by Physical Intelligence to train Pi0. |
|
|
111
|
+
| `diffuser` | `DiffuserSchedulerConfig` | |
|
|
112
|
+
| `vqbet` | `VQBeTSchedulerConfig` | |
|
|
113
|
+
|
|
114
|
+
## Processor steps (31)
|
|
115
|
+
|
|
116
|
+
Pipeline building blocks, referenced by name when (de)serializing a pipeline.
|
|
117
|
+
|
|
118
|
+
| Type | Class |
|
|
119
|
+
|---|---|
|
|
120
|
+
| `absolute_actions_processor` | `AbsoluteActionsProcessorStep` |
|
|
121
|
+
| `action_tokenizer_processor` | `ActionTokenizerProcessorStep` |
|
|
122
|
+
| `add_teleop_action_as_complementary_data` | `AddTeleopActionAsComplimentaryDataStep` |
|
|
123
|
+
| `add_teleop_action_as_info` | `AddTeleopEventsAsInfoStep` |
|
|
124
|
+
| `device_processor` | `DeviceProcessorStep` |
|
|
125
|
+
| `gripper_penalty_processor` | `GripperPenaltyProcessorStep` |
|
|
126
|
+
| `gym_hil_adapter_processor` | `GymHILAdapterProcessorStep` |
|
|
127
|
+
| `image_crop_resize_processor` | `ImageCropResizeProcessorStep` |
|
|
128
|
+
| `intervention_action_processor` | `InterventionActionProcessorStep` |
|
|
129
|
+
| `isaaclab_arena_processor` | `IsaaclabArenaProcessorStep` |
|
|
130
|
+
| `libero_processor` | `LiberoProcessorStep` |
|
|
131
|
+
| `map_delta_action_to_robot_action` | `MapDeltaActionToRobotActionStep` |
|
|
132
|
+
| `map_tensor_to_delta_action_dict` | `MapTensorToDeltaActionDictStep` |
|
|
133
|
+
| `normalizer_processor` | `NormalizerProcessorStep` |
|
|
134
|
+
| `numpy2torch_action_processor` | `Numpy2TorchActionProcessorStep` |
|
|
135
|
+
| `observation_processor` | `VanillaObservationProcessorStep` |
|
|
136
|
+
| `policy_action_to_robot_action_processor` | `PolicyActionToRobotActionProcessorStep` |
|
|
137
|
+
| `relative_actions_processor` | `RelativeActionsProcessorStep` |
|
|
138
|
+
| `rename_observations_processor` | `RenameObservationsProcessorStep` |
|
|
139
|
+
| `render_messages_processor` | `RenderMessagesStep` |
|
|
140
|
+
| `reward_classifier_processor` | `RewardClassifierProcessorStep` |
|
|
141
|
+
| `robot_action_to_policy_action_processor` | `RobotActionToPolicyActionProcessorStep` |
|
|
142
|
+
| `smolvla_new_line_processor` | `NewLineTaskProcessorStep` |
|
|
143
|
+
| `time_limit_processor` | `TimeLimitProcessorStep` |
|
|
144
|
+
| `to_batch_processor` | `AddBatchDimensionProcessorStep` |
|
|
145
|
+
| `to_batch_processor_action` | `AddBatchDimensionActionStep` |
|
|
146
|
+
| `to_batch_processor_complementary_data` | `AddBatchDimensionComplementaryDataStep` |
|
|
147
|
+
| `to_batch_processor_observation` | `AddBatchDimensionObservationStep` |
|
|
148
|
+
| `tokenizer_processor` | `TokenizerProcessorStep` |
|
|
149
|
+
| `torch2numpy_action_processor` | `Torch2NumpyActionProcessorStep` |
|
|
150
|
+
| `unnormalizer_processor` | `UnnormalizerProcessorStep` |
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# LeRobot Troubleshooting & FAQ
|
|
2
|
+
|
|
3
|
+
A consolidated entry point for common LeRobot problems, organized by pipeline stage.
|
|
4
|
+
This is a router — each item links to the authoritative upstream page for the detail.
|
|
5
|
+
Upstream docs: <https://huggingface.co/docs/lerobot>. Repo: <https://github.com/huggingface/lerobot>.
|
|
6
|
+
|
|
7
|
+
> Quick triage: most "timeout" / "device not found" errors are **physical** (wiring,
|
|
8
|
+
> power, USB), not software. Check hardware before code.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
- **Build fails on `av` / `ffmpeg` / native deps** → ensure `ffmpeg` is on `PATH`
|
|
12
|
+
(`lerobot-info` prints the detected version); see the upstream Installation guide.
|
|
13
|
+
- **A command is "not found"** → it's behind a pip extra. See the
|
|
14
|
+
[CLI reference](./cli_reference.md) for the extra, then `pip install 'lerobot[<extra>]'`.
|
|
15
|
+
- **What's my environment?** → run `lerobot-info`.
|
|
16
|
+
|
|
17
|
+
## Hardware: motors, ports, power
|
|
18
|
+
- **Feetech timeout / comms error (SO-100/101)** → check motor LEDs first: all steady
|
|
19
|
+
red = wiring OK; one dark = reseat the 3-pin cables / check power; blinking = error
|
|
20
|
+
state (overload, or **wrong PSU voltage** — 5V/7.4V vs 12V builds are not
|
|
21
|
+
interchangeable).
|
|
22
|
+
- **Can't find the USB port** → `lerobot-find-port` (unplug when prompted); on Linux
|
|
23
|
+
`sudo chmod 666 /dev/ttyACM0` may be needed.
|
|
24
|
+
- **Motors unresponsive after assembly** → `lerobot-setup-motors`, then
|
|
25
|
+
`lerobot-calibrate`; reuse the same `--robot.id` everywhere after.
|
|
26
|
+
- **Damiao / CAN bus** → `lerobot-setup-can`; see the upstream Damiao page.
|
|
27
|
+
|
|
28
|
+
## Cameras
|
|
29
|
+
- **Camera not detected / wrong index** → `lerobot-find-cameras`; camera types are in
|
|
30
|
+
the [components reference](./components_reference.md).
|
|
31
|
+
- **Policy ignores the object** → camera framing/lighting, not the model. "Can you do
|
|
32
|
+
the task from the camera view alone?" If not, fix the cameras first.
|
|
33
|
+
|
|
34
|
+
## Data collection / recording
|
|
35
|
+
- **Recording keys** → `→` next, `←` re-record last, `ESC` finish & upload.
|
|
36
|
+
- **Fix a dataset** (delete/merge/split episodes) → `lerobot-edit-dataset`.
|
|
37
|
+
- **Inspect before training** → the Hub dataset visualizer
|
|
38
|
+
(<https://huggingface.co/spaces/lerobot/visualize_dataset>).
|
|
39
|
+
|
|
40
|
+
## Training
|
|
41
|
+
- **Out of GPU memory** → lower `--batch_size`, use gradient accumulation, or a lighter
|
|
42
|
+
policy; see the upstream Compute Hardware Guide.
|
|
43
|
+
- **LR never decays on short runs** → set `--policy.scheduler_decay_steps ≈ --steps`.
|
|
44
|
+
- **Which optimizer/scheduler/policy types exist?** → [components reference](./components_reference.md).
|
|
45
|
+
|
|
46
|
+
## Evaluation & benchmarks
|
|
47
|
+
- **Which benchmark has my task? how to run it?** → use `get-embodied-tasks "<query>"`
|
|
48
|
+
(this repo) or the upstream benchmark docs.
|
|
49
|
+
- **Benchmark env won't install locally** → use the pre-baked `docker/Dockerfile.benchmark.*`.
|
|
50
|
+
- **Unstable success rate** → use `--eval.n_episodes ≥ 50`.
|
|
51
|
+
|
|
52
|
+
## Still stuck?
|
|
53
|
+
- Run `lerobot-info` and include its output.
|
|
54
|
+
- `get-embodied-tasks doctor` checks whether the LeRobot backend is correctly located.
|
|
55
|
+
- Upstream Discord: <https://discord.com/invite/s3KuuzsPFb>.
|