Skip to content

Laura dev #2871

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

Closed
wants to merge 14 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
*.pt filter=lfs diff=lfs merge=lfs -text
*.jit filter=lfs diff=lfs merge=lfs -text
*.hdf5 filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,8 @@ _build
# Teleop Recorded Dataset
datasets

# path
docs/training_runs

# Tests
tests/
3 changes: 0 additions & 3 deletions docker/.env.base
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,3 @@ DOCKER_ISAACSIM_ROOT_PATH=/isaac-sim
DOCKER_ISAACLAB_PATH=/workspace/isaaclab
# Docker user directory - by default this is the root user's home directory
DOCKER_USER_HOME=/root
# Docker image and container name suffix (default "", set by the container_interface.py script)
# Example: "-custom"
DOCKER_NAME_SUFFIX=""
3 changes: 0 additions & 3 deletions docker/.env.ros2
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,3 @@ RMW_IMPLEMENTATION=rmw_fastrtps_cpp
FASTRTPS_DEFAULT_PROFILES_FILE=${DOCKER_USER_HOME}/.ros/fastdds.xml
# Path to cyclonedds.xml file to use (only needed when using cyclonedds)
CYCLONEDDS_URI=${DOCKER_USER_HOME}/.ros/cyclonedds.xml
# Docker image and container name suffix (default "", set by the container_interface.py script)
# Example: "-custom"
DOCKER_NAME_SUFFIX=""
11 changes: 11 additions & 0 deletions docker/.env.ros2_mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
###
# ROS2 specific settings
###
# Set the version of the ROS2 apt package to install (ros-base, desktop, desktop-full)
ROS2_APT_PACKAGE=ros-base
# Set ROS2 middleware implementation to use (e.g. rmw_fastrtps_cpp, rmw_cyclonedds_cpp)
RMW_IMPLEMENTATION=rmw_fastrtps_cpp
# Path to fastdds.xml file to use (only needed when using fastdds)
FASTRTPS_DEFAULT_PROFILES_FILE=${DOCKER_USER_HOME}/.ros/fastdds.xml
# Path to cyclonedds.xml file to use (only needed when using cyclonedds)
CYCLONEDDS_URI=${DOCKER_USER_HOME}/.ros/cyclonedds.xml
18 changes: 13 additions & 5 deletions docker/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ ENV DOCKER_USER_HOME=${DOCKER_USER_HOME_ARG}
# Set environment variables
ENV LANG=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive

ENV NVIDIA_DRIVER_CAPABILITIES=all
USER root

# Install dependencies and remove cache
Expand Down Expand Up @@ -88,9 +88,6 @@ RUN touch /bin/nvidia-smi && \
RUN --mount=type=cache,target=${DOCKER_USER_HOME}/.cache/pip \
${ISAACLAB_PATH}/isaaclab.sh --install

# 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 && \
Expand All @@ -100,7 +97,18 @@ RUN echo "export ISAACLAB_PATH=${ISAACLAB_PATH}" >> ${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

# installing nightly torch
# use pip caching to avoid reinstalling large packages
#RUN --mount=type=cache,target=${DOCKER_USER_HOME}/.cache/pip \
# pip install --upgrade --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
# install TensorFlow and nightly PyTorch
RUN --mount=type=cache,target=${DOCKER_USER_HOME}/.cache/pip \
${ISAACLAB_PATH}/_isaac_sim/python.sh -m pip install --upgrade --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128

RUN --mount=type=cache,target=${DOCKER_USER_HOME}/.cache/pip \
${ISAACLAB_PATH}/_isaac_sim/python.sh -m pip install tensorflow scikit-learn

# make working directory as the Isaac Lab directory
# this is the default directory when the container is run
WORKDIR ${ISAACLAB_PATH}
WORKDIR ${ISAACLAB_PATH}
7 changes: 2 additions & 5 deletions docker/Dockerfile.ros2
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@

# Everything past this stage is to install
# ROS2 Humble

# What is the docker name suffix for the base image to load? (defaults to empty string)
ARG DOCKER_NAME_SUFFIX=""

FROM isaac-lab-base${DOCKER_NAME_SUFFIX} AS ros2
FROM isaac-lab-base AS ros2

# Which ROS2 apt package to install
ARG ROS2_APT_PACKAGE
Expand Down
35 changes: 35 additions & 0 deletions docker/Dockerfile.ros2_mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Everything past this stage is to install
# ROS2 Humble
FROM isaac-lab-base AS ros2

# Which ROS2 apt package to install
ARG ROS2_APT_PACKAGE

# ROS2 Humble Apt installations
RUN --mount=type=cache,target=/var/cache/apt \
apt-get update && apt-get install -y --no-install-recommends \
curl \
# Install ROS2 Humble \
software-properties-common && \
add-apt-repository universe && \
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo jammy) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null && \
apt-get update && apt-get install -y --no-install-recommends \
ros-humble-${ROS2_APT_PACKAGE} \
ros-humble-vision-msgs \
# Install both FastRTPS and CycloneDDS
ros-humble-rmw-cyclonedds-cpp \
ros-humble-rmw-fastrtps-cpp \
# This includes various dev tools including colcon
ros-dev-tools && \
# Install rosdeps for extensions that declare a ros_ws in
# their extension.toml
${ISAACLAB_PATH}/isaaclab.sh -p ${ISAACLAB_PATH}/tools/install_deps.py rosdep ${ISAACLAB_PATH}/source && \
apt -y autoremove && apt clean autoclean && \
rm -rf /var/lib/apt/lists/* && \
# Add sourcing of setup.bash to .bashrc
echo "source /opt/ros/humble/setup.bash" >> ${HOME}/.bashrc

# Copy the RMW specifications for ROS2
# https://docs.isaacsim.omniverse.nvidia.com/latest/installation/install_ros.html
COPY docker/.ros/ ${DOCKER_USER_HOME}/.ros/
10 changes: 5 additions & 5 deletions docker/cluster/.env.cluster
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
CLUSTER_JOB_SCHEDULER=SLURM
# Docker cache dir for Isaac Sim (has to end on docker-isaac-sim)
# e.g. /cluster/scratch/$USER/docker-isaac-sim
CLUSTER_ISAAC_SIM_CACHE_DIR=/some/path/on/cluster/docker-isaac-sim
CLUSTER_ISAAC_SIM_CACHE_DIR=/users/ljones3/docker-isaac-sim
# Isaac Lab directory on the cluster (has to end on isaaclab)
# e.g. /cluster/home/$USER/isaaclab
CLUSTER_ISAACLAB_DIR=/some/path/on/cluster/isaaclab
CLUSTER_ISAACLAB_DIR=/users/ljones3/isaaclab
# Cluster login
CLUSTER_LOGIN=username@cluster_ip
CLUSTER_LOGIN=[email protected]
# Cluster scratch directory to store the SIF file
# e.g. /cluster/scratch/$USER
CLUSTER_SIF_PATH=/some/path/on/cluster/
CLUSTER_SIF_PATH=/users/ljones3/scratch
# Remove the temporary isaaclab code copy after the job is done
REMOVE_CODE_COPY_AFTER_JOB=false
# Python executable within Isaac Lab directory to run with the submitted job
CLUSTER_PYTHON_EXECUTABLE=scripts/reinforcement_learning/rsl_rl/train.py
CLUSTER_PYTHON_EXECUTABLE="./isaaclab.sh -p scripts/environments/list_envs.py"
17 changes: 1 addition & 16 deletions docker/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,6 @@ def parse_cli_args() -> argparse.Namespace:
" '.env.base' in their provided order."
),
)
parent_parser.add_argument(
"--suffix",
nargs="?",
default=None,
help=(
"Optional docker image and container name suffix. Defaults to None, in which case, the docker name"
" suffix is set to the empty string. A hyphen is inserted in between the profile and the suffix if"
' the suffix is a nonempty string. For example, if "base" is passed to profile, and "custom" is'
" passed to suffix, then the produced docker image and container will be named ``isaac-lab-base-custom``."
),
)

# Actual command definition begins here
subparsers = parser.add_subparsers(dest="command", required=True)
Expand Down Expand Up @@ -101,11 +90,7 @@ def main(args: argparse.Namespace):

# creating container interface
ci = ContainerInterface(
context_dir=Path(__file__).resolve().parent,
profile=args.profile,
yamls=args.files,
envs=args.env_files,
suffix=args.suffix,
context_dir=Path(__file__).resolve().parent, profile=args.profile, yamls=args.files, envs=args.env_files
)

print(f"[INFO] Using container profile: {ci.profile}")
Expand Down
30 changes: 23 additions & 7 deletions docker/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ x-default-isaac-lab-volumes: &default-isaac-lab-volumes
- type: volume
source: isaac-lab-data
target: ${DOCKER_ISAACLAB_PATH}/data_storage
# pull in nvoptix
- type: bind
source: /usr/share/nvidia/nvoptix.bin
target: /usr/share/nvidia/nvoptix.bin
read_only: true

x-default-isaac-lab-environment: &default-isaac-lab-environment
- ISAACSIM_PATH=${DOCKER_ISAACLAB_PATH}/_isaac_sim
Expand Down Expand Up @@ -87,8 +92,8 @@ services:
- ISAACSIM_ROOT_PATH_ARG=${DOCKER_ISAACSIM_ROOT_PATH}
- ISAACLAB_PATH_ARG=${DOCKER_ISAACLAB_PATH}
- DOCKER_USER_HOME_ARG=${DOCKER_USER_HOME}
image: isaac-lab-base${DOCKER_NAME_SUFFIX-}
container_name: isaac-lab-base${DOCKER_NAME_SUFFIX-}
image: isaac-lab-base
container_name: isaac-lab-base
environment: *default-isaac-lab-environment
volumes: *default-isaac-lab-volumes
network_mode: host
Expand All @@ -97,6 +102,10 @@ services:
entrypoint: bash
stdin_open: true
tty: true
devices:
- /dev/hidraw0:/dev/hidraw0
- /dev/hidraw1:/dev/hidraw1
- /dev/hidraw2:/dev/hidraw2

# This service adds a ROS2 Humble
# installation on top of the base image
Expand All @@ -113,11 +122,8 @@ services:
# avoid a warning message when building only the base profile
# with the .env.base file
- ROS2_APT_PACKAGE=${ROS2_APT_PACKAGE:-NONE}
# Make sure that the correct Docker Name Suffix is being passed to the dockerfile, to know which base image to
# start from.
- DOCKER_NAME_SUFFIX=${DOCKER_NAME_SUFFIX-}
image: isaac-lab-ros2${DOCKER_NAME_SUFFIX-}
container_name: isaac-lab-ros2${DOCKER_NAME_SUFFIX-}
image: isaac-lab-ros2
container_name: isaac-lab-ros2
environment: *default-isaac-lab-environment
volumes: *default-isaac-lab-volumes
network_mode: host
Expand All @@ -126,8 +132,18 @@ services:
entrypoint: bash
stdin_open: true
tty: true
devices:
- /dev/hidraw0:/dev/hidraw0
- /dev/hidraw1:/dev/hidraw1
- /dev/hidraw2:/dev/hidraw2
#- /dev/hidraw5:/dev/hidraw5





volumes:

# isaac-sim
isaac-cache-kit:
isaac-cache-ov:
Expand Down
3 changes: 3 additions & 0 deletions docs/beaker.obj
Git LFS file not shown
3 changes: 3 additions & 0 deletions docs/centre_beaker.obj
Git LFS file not shown
Loading