Skip to content

update: dockerfile rheo - #230

Open
hermixbr wants to merge 4 commits into
isaac-for-healthcare:mainfrom
hermixbr:main
Open

update: dockerfile rheo#230
hermixbr wants to merge 4 commits into
isaac-for-healthcare:mainfrom
hermixbr:main

Conversation

@hermixbr

Copy link
Copy Markdown

Fixes #ISSUE_NUMBER

Description

@greptile-apps

greptile-apps Bot commented Jun 15, 2026

Copy link
Copy Markdown

Greptile Summary

This PR updates the Rheo workflow Dockerfile with a heavily refactored IsaacLab installation strategy (granular pinned-version pip installs, WebRTC deps, removed jupyter/typing_extensions), expands PYTHONPATH to include the workflows/rheo root, and adds a new dataset toolchain (validator.py, lerobot_to_hdf5.py, README) for LeRobot → HDF5 conversion used by the Cosmos augmentation pipeline.

  • Dockerfile.x86: Replaces the monolithic isaaclab.sh -i with staged, --no-deps pip installs and explicit version pins; adds aiohttp, av==12.3.0, and aiortc==1.10.1 for WebRTC camera support; adds a --force-reinstall pip==24.3.1 cleanup step to restore pip's vendored packaging after installs.
  • dataset/scripts/: Introduces validator.py (LeRobot v2/v3 structure and video validation), lerobot_to_hdf5.py (converter to Agentic/Cosmos HDF5 layout), requirements.txt, and a full pipeline README.
  • docs + scripts: Adds draw.io control-flow diagrams (PT and EN), evaluation result logs, an interactive trigger_menu.sh for direct robot triggering, and a .bkp backup file that was likely committed accidentally.

Confidence Score: 5/5

Safe to merge; all findings are style-level suggestions with no impact on runtime correctness.

The Dockerfile refactor is well-commented and the pinned-version approach is more reproducible than the previous isaaclab.sh -i. The new Python scripts are logically correct and well-structured. No logic errors, security issues, or breaking changes were found.

The accidentally committed workflows/rheo/docs/.$controle.drawio.bkp backup file is worth cleaning up before or after merge.

Important Files Changed

Filename Overview
workflows/rheo/docker/Dockerfile.x86 Major refactor of IsaacLab installation: replaces the single isaaclab.sh -i invocation with granular, pinned pip install steps and pre-installs all runtime deps before editable installs. Also adds WebRTC packages (aiohttp, av, aiortc), expands PYTHONPATH with workflows/rheo, and removes jupyter/typing_extensions.
dataset/scripts/validator.py New LeRobot dataset validator covering metadata, parquet structure, action/state shapes, and optional video frame checks. Well-structured with typed dataclasses; minor concern about cv2.CAP_PROP_FRAME_COUNT reliability for the --check-videos path.
dataset/scripts/lerobot_to_hdf5.py New LeRobot-to-HDF5 converter script. Imports five private helpers from validator.py, creating a fragile coupling. Conversion logic is correct; compression, camera mapping, and episode filtering are handled cleanly.
workflows/rheo/scripts/trigger_menu.sh New interactive curl-based trigger menu for the Rheo robot. Straightforward bash script; curl calls lack --max-time so the menu can hang silently if the server is unreachable.
workflows/rheo/docs/.$controle.drawio.bkp Auto-generated draw.io backup file; should not be committed to version control.
.gitignore Adds ignore rules for HDF5 files, dataset directories (keeping dataset/scripts/), Cosmos workspaces, and LeRobot parquet chunks. Rules are correct and use the standard negation pattern.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["LeRobot Dataset\n(meta/, data/, videos/)"] --> B["validator.py\n--check-videos"]
    B -->|"PASS"| C["lerobot_to_hdf5.py"]
    C --> D["dataset.hdf5\n(obs/actions, obs/joint_pos,\nobs/camera)"]
    D --> E["workflows/agentic/cosmos/run.sh\n--run-cosmos"]
    E --> F["Cosmos Transfer 2.5\n(Docker, GPU)"]
    F --> G["cosmos.hdf5\n(augmented demos)"]
    G --> H["workflows/agentic/dataset/run.sh"]
    H --> I["LeRobot expanded\n(local/real_ur_cosmos)"]
    I --> J["validator.py\n--check-videos (revalidate)"]
    K["trigger_menu.sh\ncurl POST :8081"] --> L["triggered_policy_runner\n:8081/trigger"]
    L --> M["GR00T Policy\nIsaac Sim"]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A["LeRobot Dataset\n(meta/, data/, videos/)"] --> B["validator.py\n--check-videos"]
    B -->|"PASS"| C["lerobot_to_hdf5.py"]
    C --> D["dataset.hdf5\n(obs/actions, obs/joint_pos,\nobs/camera)"]
    D --> E["workflows/agentic/cosmos/run.sh\n--run-cosmos"]
    E --> F["Cosmos Transfer 2.5\n(Docker, GPU)"]
    F --> G["cosmos.hdf5\n(augmented demos)"]
    G --> H["workflows/agentic/dataset/run.sh"]
    H --> I["LeRobot expanded\n(local/real_ur_cosmos)"]
    I --> J["validator.py\n--check-videos (revalidate)"]
    K["trigger_menu.sh\ncurl POST :8081"] --> L["triggered_policy_runner\n:8081/trigger"]
    L --> M["GR00T Policy\nIsaac Sim"]
Loading

Reviews (4): Last reviewed commit: "Script Syntetic Data" | Re-trigger Greptile

RUN /isaac-sim/python.sh -c "import isaaclab; print(isaaclab.__file__)"
# Build deps and apt packages required by Isaac Lab extensions (see IsaacLab/docker/Dockerfile.base)
RUN ${ISAACLAB_PATH}/isaaclab.sh -p -m pip install toml
RUN ${ISAACLAB_PATH}/isaaclab.sh -p ${ISAACLAB_PATH}/tools/install_deps.py apt ${ISAACLAB_PATH}/source

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 apt-get update missing before install_deps.py apt

install_deps.py apt will call apt-get install internally, but apt-get update ran in a separate, earlier RUN layer. Docker's layer cache means that if IsaacLab is updated (invalidating the COPY layer), this step runs against stale apt metadata from the cached apt-get update layer. If any package required by install_deps.py has been updated or moved in the apt repository since that cached update, the build will fail with a E: Unable to locate package error. Running apt-get update in the same RUN instruction as any apt-get install call is the standard fix.

Comment on lines +122 to +130
RUN ${ISAACLAB_PATH}/isaaclab.sh -p -m pip install --no-build-isolation --prefer-binary \
pytest \
jupyter \
typing_extensions==4.12.2 \
onnxruntime

# lwlabs deps
RUN /isaac-sim/python.sh -m pip install --upgrade pip && \
/isaac-sim/python.sh -m pip install \
onnxruntime \
vuer[all] \
lightwheel-sdk
lightwheel-sdk \
aiohttp \
av==12.3.0 \
aiortc==1.10.1 && \
${ISAACLAB_PATH}/isaaclab.sh -p -m pip install --force-reinstall --no-deps pip==24.3.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 vuer[all] may transitively install typing_extensions or jupyter

Line 119-120 explicitly states that typing_extensions and jupyter must not be installed here because they pull in a standalone packaging library that breaks pip's vendored copy inside the kit Python. However, vuer[all] is installed without pinned extras and without --no-deps, so if vuer's [all] extras declare a dependency on either package, those packages will be installed transitively — defeating the intent of the comment. Consider auditing vuer[all]'s dependency tree for these packages, or switching to a tighter extras selection that excludes notebook/Jupyter dependencies.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant