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.
Files changed (28) hide show
  1. get_embodied_tasks-0.1.0/.gitignore +8 -0
  2. get_embodied_tasks-0.1.0/PKG-INFO +88 -0
  3. get_embodied_tasks-0.1.0/README.md +71 -0
  4. get_embodied_tasks-0.1.0/SKILL.md +105 -0
  5. get_embodied_tasks-0.1.0/docs/backends/lerobot/cli_reference.md +26 -0
  6. get_embodied_tasks-0.1.0/docs/backends/lerobot/components_reference.md +150 -0
  7. get_embodied_tasks-0.1.0/docs/backends/lerobot/troubleshooting.md +55 -0
  8. get_embodied_tasks-0.1.0/docs/scripts/gen_lerobot_reference.py +216 -0
  9. get_embodied_tasks-0.1.0/install.sh +19 -0
  10. get_embodied_tasks-0.1.0/pyproject.toml +39 -0
  11. get_embodied_tasks-0.1.0/src/get_embodied_tasks/__init__.py +4 -0
  12. get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/__init__.py +1 -0
  13. get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/base.py +35 -0
  14. get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends/lerobot.py +99 -0
  15. get_embodied_tasks-0.1.0/src/get_embodied_tasks/backends.toml +8 -0
  16. get_embodied_tasks-0.1.0/src/get_embodied_tasks/catalog.py +335 -0
  17. get_embodied_tasks-0.1.0/src/get_embodied_tasks/cli.py +195 -0
  18. get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/__init__.py +1 -0
  19. get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/lerobot_datasets.py +69 -0
  20. get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/robomme_task_descriptions.json +22 -0
  21. get_embodied_tasks-0.1.0/src/get_embodied_tasks/data/robotwin_task_descriptions.json +56 -0
  22. get_embodied_tasks-0.1.0/src/get_embodied_tasks/discovery.py +66 -0
  23. get_embodied_tasks-0.1.0/src/get_embodied_tasks/matching.py +46 -0
  24. get_embodied_tasks-0.1.0/tests/conftest.py +26 -0
  25. get_embodied_tasks-0.1.0/tests/test_catalog.py +46 -0
  26. get_embodied_tasks-0.1.0/tests/test_cli.py +54 -0
  27. get_embodied_tasks-0.1.0/tests/test_discovery.py +50 -0
  28. get_embodied_tasks-0.1.0/tests/test_matching.py +35 -0
@@ -0,0 +1,8 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.egg-info/
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ build/
7
+ dist/
8
+ .venv/
@@ -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>.