mirror of
https://github.com/huggingface/lerobot.git
synced 2026-07-26 11:16:00 +00:00
3fccf57965
- envs(robocasa): hoist the duplicated `_parse_camera_names` helper out of `libero.py` and `robocasa.py` into `envs/utils.py` as the public `parse_camera_names`; call sites updated. - envs(robocasa): give each factory a distinct `episode_index` (`0..n_envs-1`) and derive a per-worker seed series in `reset()` so n_envs workers don't all roll the same scene under a shared outer seed. - envs(robocasa): drop the unused `**kwargs` on `_make_env`; declare `visualization_height` / `visualization_width` on both the wrapper and the `RoboCasaEnv` config + propagate via `gym_kwargs`. - envs(robocasa): emit `info["final_info"]` on termination (matching MetaWorld) so downstream vector-env auto-reset keeps the terminal task/success flags. - docs(robocasa): add `--rename_map` (robot0_agentview_left/ eye_in_hand/agentview_right → camera1/2/3) plus CI-parity flags to all three eval snippets. - docker(robocasa): pin robocasa + robosuite git SHAs and the pip dep versions (pygame, Pillow, opencv-python, pyyaml, pynput, tqdm, termcolor, imageio, h5py, lxml, hidapi, gymnasium) for reproducible benchmark images. - ci(robocasa): update the workflow comment — there is no `lerobot[robocasa]` extra; robocasa/robosuite are installed manually because upstream's `lerobot==0.3.3` pin shadows ours. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
3.7 KiB
Docker
72 lines
3.7 KiB
Docker
# Copyright 2025 The HuggingFace Inc. team. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Benchmark image for RoboCasa365 integration tests.
|
|
# Extends the nightly GPU image (which already has all extras installed)
|
|
# with the PR's source code and RoboCasa-specific asset setup.
|
|
#
|
|
# Build: docker build -f docker/Dockerfile.benchmark.robocasa -t lerobot-benchmark-robocasa .
|
|
# Run: docker run --gpus all --rm lerobot-benchmark-robocasa lerobot-eval ...
|
|
|
|
FROM huggingface/lerobot-gpu:latest
|
|
|
|
# Install robocasa + robosuite as editable clones. pip-installing from git
|
|
# omits data files like robocasa/models/assets/box_links/box_links_assets.json
|
|
# (not declared in package_data), which download_kitchen_assets needs at import.
|
|
#
|
|
# `--no-deps` on robocasa is deliberate: its setup.py pins `lerobot==0.3.3`
|
|
# in install_requires, which would shadow the editable lerobot baked into
|
|
# this image. We install robocasa's actual runtime deps explicitly instead.
|
|
# Pinned SHAs for reproducible benchmark runs. Bump when you need an
|
|
# upstream fix; don't rely on `main`/`master` drift.
|
|
ARG ROBOCASA_SHA=56e355ccc64389dfc1b8a61a33b9127b975ba681
|
|
ARG ROBOSUITE_SHA=aaa8b9b214ce8e77e82926d677b4d61d55e577ab
|
|
RUN git clone https://github.com/robocasa/robocasa.git ~/robocasa && \
|
|
git -C ~/robocasa checkout ${ROBOCASA_SHA} && \
|
|
git clone https://github.com/ARISE-Initiative/robosuite.git ~/robosuite && \
|
|
git -C ~/robosuite checkout ${ROBOSUITE_SHA} && \
|
|
uv pip install --no-cache -e ~/robocasa --no-deps && \
|
|
uv pip install --no-cache -e ~/robosuite && \
|
|
uv pip install --no-cache \
|
|
"numpy==2.2.5" "numba==0.61.2" "scipy==1.15.3" "mujoco==3.3.1" \
|
|
"pygame==2.6.1" "Pillow==12.2.0" "opencv-python==4.13.0.92" \
|
|
"pyyaml==6.0.3" "pynput==1.8.1" "tqdm==4.67.3" "termcolor==3.3.0" \
|
|
"imageio==2.37.3" "h5py==3.16.0" "lxml==6.0.4" "hidapi==0.14.0.post4" \
|
|
"tianshou==0.4.10" "gymnasium==1.2.3"
|
|
|
|
# Set up robocasa macros and download kitchen assets. We need:
|
|
# - tex : base environment textures
|
|
# - tex_generative : AI-generated textures; kitchen fixture XMLs embed
|
|
# refs to generative_textures/wall/tex*.png
|
|
# unconditionally, so MjModel.from_xml_string fails
|
|
# at reset time without them (even if the env is
|
|
# constructed with generative_textures=None).
|
|
# - fixtures_lw : lightwheel kitchen fixtures (fridge, counters...)
|
|
# - objs_lw : lightwheel object meshes (stools, misc props)
|
|
# We skip the objaverse/aigen object packs (~30GB combined) by pairing
|
|
# this with --env.obj_registries=["lightwheel"] on the lerobot side.
|
|
# The download script prompts interactively, so pipe 'y' to auto-accept.
|
|
RUN python -m robocasa.scripts.setup_macros && \
|
|
yes y | python -m robocasa.scripts.download_kitchen_assets \
|
|
--type tex tex_generative fixtures_lw objs_lw
|
|
|
|
# Overlay the PR's source code on top of the nightly image.
|
|
COPY --chown=user_lerobot:user_lerobot . .
|
|
|
|
# Re-install lerobot editably so the new source (with RoboCasaEnv registration)
|
|
# replaces the stale package baked into the nightly image.
|
|
RUN uv pip install --no-cache --no-deps -e .
|
|
|
|
CMD ["/bin/bash"]
|