| --- |
| license: cc-by-nc-4.0 |
| library_name: lerobot |
| tags: |
| - robotics |
| - manipulation |
| - isaac-lab |
| - lerobot |
| - so-arm101 |
| - simulation |
| --- |
| |
| # SO-ARM 101 Toy Sorting — Isaac Lab EnvHub |
|
|
| Simulation-first manipulation learning with Isaac Lab + LeRobot. |
| SO-ARM 101 sorts colored toys into matching trays on a wooden kitchen table. |
|
|
| ## LeRobot EnvHub |
|
|
| This repo follows the [LeRobot EnvHub](https://huggingface.co/docs/lerobot/en/envhub) standard. |
| `env.py` at the root exposes `make_env()` and is loadable via `trust_remote_code=True`. |
|
|
| ```python |
| from lerobot.envs.factory import make_env |
| envs = make_env("AshDash93/toy-sorting-env", trust_remote_code=True) |
| ``` |
|
|
| ## Quick Start |
|
|
| ```bash |
| # 1. Download scene assets from HuggingFace Hub |
| docker compose run sim uv run python assets/download.py --download |
| |
| # 2. Install Isaac Lab + Isaac Sim (pip, Linux only) |
| docker compose run sim uv sync --extra sim |
| |
| # 3. Visualise (headless) |
| docker compose run sim uv run python scripts/visualize_env.py --headless |
| |
| # 3b. Visualise with GUI (X forwarding — run these on the server first) |
| # ssh -X user@your-server-ip |
| # xhost +local:docker |
| docker compose run sim uv run python scripts/visualize_env.py |
| ``` |
|
|
| ## Assets |
|
|
| On a developer machine with the original Lightwheel packs, extract assets locally: |
|
|
| ```bash |
| uv run python assets/download.py --extract # populate assets/toy_sorting/ |
| uv run python assets/download.py --upload # push to HF Hub (needs HF_TOKEN in .env) |
| ``` |
|
|
| ## Layout |
|
|
| ``` |
| env.py # EnvHub entrypoint (make_env) |
| src/manipulator_learning/ |
| envhub.py # thin factory |
| envs/ |
| toy_sorting_env.py # ToySortingEnv (InteractiveScene-backed gym env) |
| toy_sorting_scene_cfg.py # InteractiveSceneCfg: table + robot + bowls + toys |
| so_arm101_cfg.py # ArticulationCfg for SO-ARM 101 |
| test_scene_cfg.py # minimal scene for robot-only testing (no USD assets) |
| zmq_server.py # Phase 2 stub (sim↔train bridge) |
| tasks/toy_sorting/ |
| task_spec.py # high-level task spec (colors, bin names, instruction) |
| assets/ |
| download.py # asset extract / upload / download |
| scripts/ |
| visualize_env.py # run full toy-sorting scene until window closed |
| test_robot.py # minimal robot URDF test (no scene assets required) |
| toy_sorting_envhub.py # backwards-compat wrapper; prefer visualize_env.py |
| inspect_assets.py # inspect USD asset bounding boxes (usd-core only) |
| ``` |
|
|
| ## Attribution |
|
|
| Table asset (`assets/toy_sorting/Table049/`) is from the Lightwheel Kitchen pack |
| by Lightwheel AI, licensed under |
| [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/). |
|
|
| Toy shapes and sorting containers (`assets/toy_sorting/Kit1/`) are from the |
| Lightwheel Toyroom pack by Lightwheel AI, licensed under |
| [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/). |
|
|
| SO-ARM 101 URDF and meshes are from |
| [TheRobotStudio/SO-ARM100](https://github.com/TheRobotStudio/SO-ARM100). |
|
|