-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Adds SkillGen framework to Isaac Lab with cuRobo support #3303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 26 commits
27eefb9
be0a45d
5ccb27f
7d1c284
048ab03
beaeaa9
a2e64cd
aed7dcb
025f15e
6a91163
52c5e32
5234119
f016d58
76b9d95
7dd4e26
c3226cb
5184660
c6716a7
253e506
af2c7ff
a4c8187
4b5a2c1
31af671
3d6d2ee
56f863c
fbb4605
1fd97bb
3cee172
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
| @@ -0,0 +1,144 @@ | ||||
| # Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). | ||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this dockerfile should inherit from the isaaclab-base image so that the commands do not have to be repeated and the build process is speed up. See the ros image as example IsaacLab/docker/Dockerfile.ros2 Line 7 in 2e2c57c
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See reply on the above comment.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes agreed, this will be a TODO for the follow-up PR |
||||
| # All rights reserved. | ||||
| # | ||||
| # SPDX-License-Identifier: BSD-3-Clause | ||||
|
|
||||
| # Nvidia Dockerfiles: https://github.com/NVIDIA-Omniverse/IsaacSim-dockerfiles | ||||
| # Please check above link for license information. | ||||
|
|
||||
| # Base image | ||||
| ARG ISAACSIM_BASE_IMAGE_ARG | ||||
| ARG ISAACSIM_VERSION_ARG | ||||
| FROM ${ISAACSIM_BASE_IMAGE_ARG}:${ISAACSIM_VERSION_ARG} AS base | ||||
| ENV ISAACSIM_VERSION=${ISAACSIM_VERSION_ARG} | ||||
|
|
||||
| # Set default RUN shell to bash | ||||
| SHELL ["/bin/bash", "-c"] | ||||
|
|
||||
| # Adds labels to the Dockerfile | ||||
| LABEL version="2.1.1" | ||||
| LABEL description="Dockerfile for building and running the Isaac Lab framework inside Isaac Sim container image." | ||||
|
|
||||
| # Arguments | ||||
| # Path to Isaac Sim root folder | ||||
| ARG ISAACSIM_ROOT_PATH_ARG | ||||
| ENV ISAACSIM_ROOT_PATH=${ISAACSIM_ROOT_PATH_ARG} | ||||
| # Path to the Isaac Lab directory | ||||
| ARG ISAACLAB_PATH_ARG | ||||
| ENV ISAACLAB_PATH=${ISAACLAB_PATH_ARG} | ||||
| # Home dir of docker user, typically '/root' | ||||
| ARG DOCKER_USER_HOME_ARG | ||||
| ENV DOCKER_USER_HOME=${DOCKER_USER_HOME_ARG} | ||||
|
|
||||
| # Set environment variables | ||||
| ENV LANG=C.UTF-8 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
|
|
||||
| USER root | ||||
|
|
||||
| # Install dependencies and remove cache | ||||
| RUN --mount=type=cache,target=/var/cache/apt \ | ||||
| apt-get update && apt-get install -y --no-install-recommends \ | ||||
| build-essential \ | ||||
| cmake \ | ||||
| git \ | ||||
| libglib2.0-0 \ | ||||
| ncurses-term \ | ||||
| wget && \ | ||||
| apt -y autoremove && apt clean autoclean && \ | ||||
| rm -rf /var/lib/apt/lists/* | ||||
|
|
||||
| # Detect Ubuntu version and install CUDA 12.8 via NVIDIA network repo (cuda-keyring) | ||||
| RUN set -euo pipefail && \ | ||||
| . /etc/os-release && \ | ||||
| case "$ID" in \ | ||||
| ubuntu) \ | ||||
| case "$VERSION_ID" in \ | ||||
| "20.04") cuda_repo="ubuntu2004";; \ | ||||
| "22.04") cuda_repo="ubuntu2204";; \ | ||||
| "24.04") cuda_repo="ubuntu2404";; \ | ||||
| *) echo "Unsupported Ubuntu $VERSION_ID"; exit 1;; \ | ||||
| esac ;; \ | ||||
| *) echo "Unsupported base OS: $ID"; exit 1 ;; \ | ||||
| esac && \ | ||||
| apt-get update && apt-get install -y --no-install-recommends wget gnupg ca-certificates && \ | ||||
| wget -q https://developer.download.nvidia.com/compute/cuda/repos/${cuda_repo}/x86_64/cuda-keyring_1.1-1_all.deb && \ | ||||
| dpkg -i cuda-keyring_1.1-1_all.deb && \ | ||||
| rm -f cuda-keyring_1.1-1_all.deb && \ | ||||
| wget -q https://developer.download.nvidia.com/compute/cuda/repos/${cuda_repo}/x86_64/cuda-${cuda_repo}.pin && \ | ||||
| mv cuda-${cuda_repo}.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \ | ||||
| apt-get update && \ | ||||
| apt-get install -y --no-install-recommends cuda-toolkit-12-8 && \ | ||||
| apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* | ||||
|
|
||||
|
|
||||
| ENV CUDA_HOME=/usr/local/cuda-12.8 | ||||
| ENV PATH=${CUDA_HOME}/bin:${PATH} | ||||
| ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH} | ||||
| ENV TORCH_CUDA_ARCH_LIST=8.0+PTX | ||||
|
|
||||
| # Copy the Isaac Lab directory (files to exclude are defined in .dockerignore) | ||||
| COPY ../ ${ISAACLAB_PATH} | ||||
|
|
||||
| # Ensure isaaclab.sh has execute permissions | ||||
| RUN chmod +x ${ISAACLAB_PATH}/isaaclab.sh | ||||
|
|
||||
| # Set up a symbolic link between the installed Isaac Sim root folder and _isaac_sim in the Isaac Lab directory | ||||
| RUN ln -sf ${ISAACSIM_ROOT_PATH} ${ISAACLAB_PATH}/_isaac_sim | ||||
|
|
||||
| # Install toml dependency | ||||
| RUN ${ISAACLAB_PATH}/isaaclab.sh -p -m pip install toml | ||||
|
|
||||
| # Install apt dependencies for extensions that declare them in their extension.toml | ||||
| RUN --mount=type=cache,target=/var/cache/apt \ | ||||
| ${ISAACLAB_PATH}/isaaclab.sh -p ${ISAACLAB_PATH}/tools/install_deps.py apt ${ISAACLAB_PATH}/source && \ | ||||
| apt -y autoremove && apt clean autoclean && \ | ||||
| rm -rf /var/lib/apt/lists/* | ||||
|
|
||||
| # for singularity usage, have to create the directories that will binded | ||||
| RUN mkdir -p ${ISAACSIM_ROOT_PATH}/kit/cache && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.cache/ov && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.cache/pip && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.cache/nvidia/GLCache && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.nv/ComputeCache && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.nvidia-omniverse/logs && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/.local/share/ov/data && \ | ||||
| mkdir -p ${DOCKER_USER_HOME}/Documents | ||||
|
|
||||
| # for singularity usage, create NVIDIA binary placeholders | ||||
| RUN touch /bin/nvidia-smi && \ | ||||
| touch /bin/nvidia-debugdump && \ | ||||
| touch /bin/nvidia-persistenced && \ | ||||
| touch /bin/nvidia-cuda-mps-control && \ | ||||
| touch /bin/nvidia-cuda-mps-server && \ | ||||
| touch /etc/localtime && \ | ||||
| mkdir -p /var/run/nvidia-persistenced && \ | ||||
| touch /var/run/nvidia-persistenced/socket | ||||
|
|
||||
| # installing Isaac Lab dependencies | ||||
| # use pip caching to avoid reinstalling large packages | ||||
| RUN --mount=type=cache,target=${DOCKER_USER_HOME}/.cache/pip \ | ||||
| ${ISAACLAB_PATH}/isaaclab.sh --install | ||||
|
|
||||
| # Install cuRobo from source (pinned commit); needs CUDA env and Torch | ||||
| RUN ${ISAACLAB_PATH}/isaaclab.sh -p -m pip install --no-build-isolation \ | ||||
| "nvidia-curobo @ git+https://github.com/NVlabs/curobo.git@ebb71702f3f70e767f40fd8e050674af0288abe8" | ||||
|
|
||||
| # HACK: Remove install of quadprog dependency | ||||
| RUN ${ISAACLAB_PATH}/isaaclab.sh -p -m pip uninstall -y quadprog | ||||
|
|
||||
| # aliasing isaaclab.sh and python for convenience | ||||
| RUN echo "export ISAACLAB_PATH=${ISAACLAB_PATH}" >> ${HOME}/.bashrc && \ | ||||
| echo "alias isaaclab=${ISAACLAB_PATH}/isaaclab.sh" >> ${HOME}/.bashrc && \ | ||||
| echo "alias python=${ISAACLAB_PATH}/_isaac_sim/python.sh" >> ${HOME}/.bashrc && \ | ||||
| echo "alias python3=${ISAACLAB_PATH}/_isaac_sim/python.sh" >> ${HOME}/.bashrc && \ | ||||
| echo "alias pip='${ISAACLAB_PATH}/_isaac_sim/python.sh -m pip'" >> ${HOME}/.bashrc && \ | ||||
| echo "alias pip3='${ISAACLAB_PATH}/_isaac_sim/python.sh -m pip'" >> ${HOME}/.bashrc && \ | ||||
| echo "alias tensorboard='${ISAACLAB_PATH}/_isaac_sim/python.sh ${ISAACLAB_PATH}/_isaac_sim/tensorboard'" >> ${HOME}/.bashrc && \ | ||||
| echo "export TZ=$(date +%Z)" >> ${HOME}/.bashrc && \ | ||||
| echo "shopt -s histappend" >> /root/.bashrc && \ | ||||
| echo "PROMPT_COMMAND='history -a'" >> /root/.bashrc | ||||
|
|
||||
| # make working directory as the Isaac Lab directory | ||||
| # this is the default directory when the container is run | ||||
| WORKDIR ${ISAACLAB_PATH} | ||||
Uh oh!
There was an error while loading. Please reload this page.