Skip to content

Commit

Permalink
Merge pull request #42 from NVIDIA-ISAAC-ROS/release-dp-1.1
Browse files Browse the repository at this point in the history
Isaac ROS 0.11.0 (DP1.1)
  • Loading branch information
hemalshahNV authored Sep 2, 2022
2 parents 60b57a1 + a688f8b commit bdfca13
Show file tree
Hide file tree
Showing 27 changed files with 240 additions and 206 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ COPY myfile.txt /myfile.txt

You could extend the base image launched as a container by `run_dev.sh` as follows.

`workspaces/isaac_ros-dev/ros_ws/src/isaac_ros_common/scripts/.isaac_ros_common_config`
`workspaces/isaac_ros-dev/ros_ws/src/isaac_ros_common/scripts/.isaac_ros_common-config`
```
CONFIG_IMAGE_KEY="humble.nav2.mine"
CONFIG_DOCKER_SEARCH_DIRS=(workspaces/isaac_ros-dev/ros_ws/docker)
Expand All @@ -79,22 +79,25 @@ This configures the image key to match with `mine` included and where to look fi
- [Updates](#updates)

## Latest Update
Update 2022-06-30: Support ROS2 Humble and miscellaneous bug fixes.
Update 2022-08-31: Update to be compatible with JetPack 5.0.2

## Supported Platforms
This package is designed and tested to be compatible with ROS2 Humble running on [Jetson](https://developer.nvidia.com/embedded-computing) or an x86_64 system with an NVIDIA GPU.

> **Note**: Versions of ROS2 earlier than Humble are **not** supported. This package depends on specific ROS2 implementation features that were only introduced beginning with the Humble release.

| Platform | Hardware | Software | Notes |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Jetson | [Jetson Orin](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/)<br/>[Jetson Xavier](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/) | [JetPack 5.0.1 DP](https://developer.nvidia.com/embedded/jetpack) | For best performance, ensure that [power settings](https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/PlatformPowerAndPerformance.html) are configured appropriately. |
| Jetson | [Jetson Orin](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/)<br/>[Jetson Xavier](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/) | [JetPack 5.0.2](https://developer.nvidia.com/embedded/jetpack) | For best performance, ensure that [power settings](https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/PlatformPowerAndPerformance.html) are configured appropriately. |
| x86_64 | NVIDIA GPU | [Ubuntu 20.04+](https://releases.ubuntu.com/20.04/) <br> [CUDA 11.6.1+](https://developer.nvidia.com/cuda-downloads) |


# Updates

| Date | Changes |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2022-08-31 | Update to be compatible with JetPack 5.0.2 |
| 2022-06-30 | Support ROS2 Humble and miscellaneous bug fixes. |
| 2022-06-16 | Update `run_dev.sh` and removed `isaac_ros_nvengine` |
| 2021-10-20 | Migrated to [NVIDIA-ISAAC-ROS](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common), added `isaac_ros_nvengine` and `isaac_ros_nvengine_interfaces` packages |
Expand Down
61 changes: 31 additions & 30 deletions docker/Dockerfile.aarch64
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# license agreement from NVIDIA CORPORATION is strictly prohibited.

# Docker file for aarch64 based Jetson device
ARG BASE_IMAGE="nvcr.io/nvidia/l4t-base:r34.1"
ARG BASE_IMAGE="nvcr.io/nvidia/l4t-base:r35.1.0"
FROM ${BASE_IMAGE}

# Disable terminal interaction for apt
Expand All @@ -18,7 +18,6 @@ SHELL ["/bin/bash", "-c"]
# Fundamentals
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
curl \
git \
lsb-release \
Expand All @@ -32,12 +31,24 @@ RUN apt-get update && apt-get install -y \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Upgrade cmake to 3.23.2
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null \
&& apt-get update \
&& rm /usr/share/keyrings/kitware-archive-keyring.gpg \
&& apt-get install -y kitware-archive-keyring \
&& apt-get remove cmake && apt-get purge cmake && apt-get remove cmake-data && apt-get purge cmake \
&& apt-get install -y cmake=3.23.2-0kitware1ubuntu20.04.1 cmake-data=3.23.2-0kitware1ubuntu20.04.1 \
&& cmake --version \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Set Python3 as default
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1

# Python basics
RUN apt-get update && apt-get install -y \
python3-flake8 \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-setuptools \
Expand Down Expand Up @@ -105,17 +116,6 @@ RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.d
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Upgrade cmake to latest
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null \
&& apt-get update \
&& rm /usr/share/keyrings/kitware-archive-keyring.gpg \
&& apt-get install -y kitware-archive-keyring \
&& apt-get install -y cmake \
&& cmake --version \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Install TensorRT and VPI
RUN apt-get update && apt-get install -y \
tensorrt \
Expand Down Expand Up @@ -144,16 +144,12 @@ ENV PATH="${PATH}:/usr/local/cuda/bin"
# https://forums.developer.nvidia.com/t/error-importerror-usr-lib-aarch64-linux-gnu-libgomp-so-1-cannot-allocate-memory-in-static-tls-block-i-looked-through-available-threads-already/166494/3
ENV LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libgomp.so.1"

# Restore using the default Foxy DDS middleware: FastRTPS
ENV RMW_IMPLEMENTATION=rmw_fastrtps_cpp

# Pytorch
RUN python3 -m pip install -U --extra-index-url https://download.pytorch.org/whl/cu113 \
torch \
torchvision \
torchaudio
# PyTorch (NV CUDA edition)
# https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html
RUN python3 -m pip install --no-cache \
https://developer.download.nvidia.cn/compute/redist/jp/v50/pytorch/torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl

# Install Triton server 2.13 from https://github.com/triton-inference-server/server/releases/tag/v2.13.0
# Install Triton server 2.24 from https://github.com/triton-inference-server/server/releases/tag/v2.24.0
RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
automake \
Expand All @@ -166,23 +162,28 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
patchelf \
rapidjson-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

RUN mkdir -p /opt/tritonserver && cd /opt/tritonserver \
&& wget https://github.com/triton-inference-server/server/releases/download/v2.20.0/tritonserver2.20.0-jetpack5.0.tgz \
&& tar -xzvf tritonserver2.20.0-jetpack5.0.tgz \
&& rm tritonserver2.20.0-jetpack5.0.tgz
&& wget https://github.com/triton-inference-server/server/releases/download/v2.24.0/tritonserver2.24.0-jetpack5.0.2.tgz \
&& tar -xzvf tritonserver2.24.0-jetpack5.0.2.tgz \
&& rm tritonserver2.24.0-jetpack5.0.2.tgz

ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/tritonserver/lib"

# Add MQTT binaries and libraries
RUN apt-add-repository ppa:mosquitto-dev/mosquitto-ppa \
&& apt-get update \
&& apt-get install -y mosquitto mosquitto-clients
&& apt-get update && apt-get install -y \
mosquitto \
mosquitto-clients \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Note: VPN cannot be on for pymongo download
RUN python3 -m pip install -U \
pymongo paho-mqtt
pymongo \
paho-mqtt

# Core dev libraries
RUN apt-get update && apt-get install -y \
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.aarch64.humble.nav2
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
# distribution of this software and related documentation without an express
# license agreement from NVIDIA CORPORATION is strictly prohibited.

FROM nvcr.io/nvidia/isaac/ros:aarch64-humble-nav2_661a3fb05aba6897468c8ded9fa42c11
FROM nvcr.io/nvidia/isaac/ros:aarch64-humble-nav2_35120f31b84976ec36009722e16f1524
17 changes: 10 additions & 7 deletions docker/Dockerfile.humble
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,8 @@ RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/r
# ROS fundamentals
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pybind11 \
python3-pytest-cov \
Expand All @@ -60,10 +58,15 @@ RUN python3 -m pip install -U \
pytest \
setuptools

# Avoid setup.py and easy_install deprecation warnings caused by colcon and setuptools
# https://github.com/colcon/colcon-core/issues/454
ENV PYTHONWARNINGS=ignore:::setuptools.command.install,ignore:::setuptools.command.easy_install,ignore:::pkg_resources
RUN echo "Warning: Using the PYTHONWARNINGS environment variable to silence setup.py and easy_install deprecation warnings caused by colcon"

ENV ROS_DISTRO=humble
ENV ROS_ROOT=/opt/ros/${ROS_DISTRO}

# Build ROS2 core from source source
# Build ROS2 core from source
RUN mkdir -p ${ROS_ROOT}/src && \
cd ${ROS_ROOT} && \
# https://answers.ros.org/question/325245/minimal-ros2-installation/?answer=325249#post-id-325249
Expand Down Expand Up @@ -115,8 +118,8 @@ RUN cd ${ROS_ROOT} \
--from-paths src \
--rosdistro ${ROS_DISTRO} \
--skip-keys "fastcdr rti-connext-dds-6.0.1 rti-connext-dds-5.3.1 urdfdom_headers libopencv-dev libopencv-contrib-dev libopencv-imgproc-dev python-opencv python3-opencv" \
&& rm -Rf /var/lib/apt/lists/* \
&& apt-get clean
&& rm -Rf /var/lib/apt/lists/* \
&& apt-get clean

# Build ROS2 source
RUN cd ${ROS_ROOT} \
Expand All @@ -137,5 +140,5 @@ RUN apt-get update && mkdir -p ${ROS_ROOT}/src && cd ${ROS_ROOT}/src \
&& rosdep install -y -r --ignore-src --from-paths src --rosdistro ${ROS_DISTRO} \
&& colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo --packages-up-to-regex negotiated* \
&& rm -Rf src logs build \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
2 changes: 1 addition & 1 deletion docker/Dockerfile.nav2
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ FROM ${BASE_IMAGE}
# Install nav2
RUN apt-get update && mkdir -p ${ROS_ROOT}/src && cd ${ROS_ROOT}/src \
&& git clone https://github.com/ros-planning/navigation2.git && cd navigation2 && git checkout humble && cd .. \
&& git clone https://github.com/BehaviorTree/BehaviorTree.CPP.git && cd BehaviorTree.CPP && git checkout master && cd .. \
&& git clone https://github.com/BehaviorTree/BehaviorTree.CPP.git && cd BehaviorTree.CPP && git checkout a363bdcae88350bc748598a7d2950e300859469c && cd .. \
&& source ${ROS_ROOT}/setup.bash && cd ${ROS_ROOT} \
&& rosdep install -y -r --ignore-src --from-paths src --rosdistro ${ROS_DISTRO} \
&& colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo --packages-up-to-regex nav2* --packages-ignore nav2_system_tests \
Expand Down
6 changes: 5 additions & 1 deletion docker/Dockerfile.user
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y \
# Reuse triton-server user as 'admin' user if exists
RUN if [ $(getent group triton-server) ]; then \
groupmod --gid ${USER_GID} -n ${USERNAME} triton-server ; \
usermod -l ${USERNAME} -m -d /home/${USERNAME} triton-server ; \
usermod -l ${USERNAME} -u ${USER_UID} -m -d /home/${USERNAME} triton-server ; \
mkdir -p /home/${USERNAME} ; \
sudo chown ${USERNAME}:${USERNAME} /home/${USERNAME} ; \
fi
Expand All @@ -44,6 +44,10 @@ RUN mkdir -p /usr/local/bin/scripts
COPY scripts/*entrypoint.sh /usr/local/bin/scripts/
RUN chmod +x /usr/local/bin/scripts/*.sh

# Copy middleware profiles
RUN mkdir -p /usr/local/share/middleware_profiles
COPY middleware_profiles/*profile.xml /usr/local/share/middleware_profiles/

ENV USERNAME=${USERNAME}
ENV USER_GID=${USER_GID}
ENV USER_UID=${USER_UID}
30 changes: 15 additions & 15 deletions docker/Dockerfile.x86_64
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1

# Python basics
RUN apt-get update && apt-get install -y \
python3-flake8 \
python3-pip \
python3-pybind11 \
python3-pytest-cov \
Expand All @@ -78,18 +77,12 @@ RUN apt-get update && apt-get install -y \
python3-opencv \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Pytorch
RUN python3 -m pip install -U --extra-index-url https://download.pytorch.org/whl/cu113 \
torch \
torchvision \
torchaudio

# Python3 (PIP)
RUN python3 -m pip install -U \
argcomplete \
autopep8 \
flake8 \
flake8==4.0.1 \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
Expand All @@ -112,12 +105,13 @@ RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.d
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# CMake
RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | apt-key add - && \
apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" && \
apt-get update && \
apt-get install -y --no-install-recommends --only-upgrade \
cmake \
# Upgrade cmake to 3.23.2
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null \
&& apt-get update \
&& apt-get update \
&& apt-get remove -y cmake && apt-get purge -y cmake && apt-get remove -y cmake-data && apt-get purge -y cmake \
&& apt-get install -y cmake=3.23.2-0kitware1ubuntu20.04.1 cmake-data=3.23.2-0kitware1ubuntu20.04.1 \
&& cmake --version \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
Expand All @@ -133,12 +127,18 @@ RUN apt-get update && apt-get install -y \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# Pytorch
RUN python3 -m pip install -U --extra-index-url https://download.pytorch.org/whl/cu113 \
torch \
torchvision \
torchaudio

# Install VPI packages
ARG HAS_GPU="true"
RUN if [ "$HAS_GPU" = "true" ]; then \
set -e ; \
apt-key adv --fetch-key https://repo.download.nvidia.com/jetson/jetson-ota-public.asc ; \
add-apt-repository 'deb http://repo.download.nvidia.com/jetson/x86_64/focal r34.1 main' ; \
add-apt-repository 'deb http://repo.download.nvidia.com/jetson/x86_64/focal r35.1 main' ; \
apt-get update ; \
apt-get install libnvvpi2 vpi2-dev ; \
rm -rf /var/lib/apt/lists/* ; \
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.x86_64.humble.nav2
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
# distribution of this software and related documentation without an express
# license agreement from NVIDIA CORPORATION is strictly prohibited.

FROM nvcr.io/nvidia/isaac/ros:x86_64-humble-nav2_6ffb6f904c4c6d286b16de5ca662ad5f
FROM nvcr.io/nvidia/isaac/ros:x86_64-humble-nav2_53c4c553a22864a0675e9b05bb7cf19b
30 changes: 30 additions & 0 deletions docker/middleware_profiles/rtps_udp_profile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>

<!--
Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
NVIDIA CORPORATION and its licensors retain all intellectual property
and proprietary rights in and to this software, related documentation
and any modifications thereto. Any use, reproduction, disclosure or
distribution of this software and related documentation without an express
license agreement from NVIDIA CORPORATION is strictly prohibited.
-->

<license>NVIDIA Isaac ROS Software License</license>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>UdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>

<participant profile_name="udp_transport_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>UdpTransport</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
2 changes: 2 additions & 0 deletions docker/realsense-dockerfile-example/.isaac_ros_common-config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
CONFIG_IMAGE_KEY=humble.nav2.realsense
CONFIG_DOCKER_SEARCH_DIRS=($DOCKER_DIR/realsense-dockerfile-example)

This file was deleted.

4 changes: 2 additions & 2 deletions docker/realsense-dockerfile-example/Dockerfile.realsense
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
ARG BASE_IMAGE
FROM ${BASE_IMAGE}

COPY realsense/buildLibrealsense.sh /opt/realsense/buildLibrealsense.sh
COPY realsense/installDependencies.sh /opt/realsense/installDependencies.sh
COPY buildLibrealsense.sh /opt/realsense/buildLibrealsense.sh
COPY installDependencies.sh /opt/realsense/installDependencies.sh

RUN chmod +x /opt/realsense/installDependencies.sh && /opt/realsense/installDependencies.sh
RUN chmod +x /opt/realsense/buildLibrealsense.sh && /opt/realsense/buildLibrealsense.sh
2 changes: 0 additions & 2 deletions docker/realsense-dockerfile-example/installDependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ apt-add-repository universe
apt-get update
echo "${green}Adding dependencies, graphics libraries and tools${reset}"
apt-get install libssl-dev libusb-1.0-0-dev pkg-config -y
# This is for ccmake
apt-get install build-essential cmake cmake-curses-gui -y

# Graphics libraries - for SDK's OpenGL-enabled examples
apt-get install libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev -y
Expand Down
Loading

0 comments on commit bdfca13

Please sign in to comment.