Skip to content

Commit

Permalink
Isaac ROS v0.9.0 (EA1)
Browse files Browse the repository at this point in the history
  • Loading branch information
hemalshahNV committed Aug 11, 2021
1 parent 8a403d3 commit 8e25741
Show file tree
Hide file tree
Showing 31 changed files with 1,887 additions and 1 deletion.
16 changes: 16 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Images
*.gif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Archives
*.gz filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text
# Numpy data
*.npy filter=lfs diff=lfs merge=lfs -text
# Debian package
*.deb filter=lfs diff=lfs merge=lfs -text
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Ignore all pycache files
**/__pycache__/**
130 changes: 130 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# JetROS Test
# Isaac ROS Common

Isaac ROS common utilities for use in conjunction with the Isaac ROS suite of packages.
Note: Please refer to `scripts/README.md` for script used to setup dev environment
107 changes: 107 additions & 0 deletions docker/Dockerfile.aarch64.base
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Copyright (c) 2021, 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.

# Dockder file to aarch64 based Jetson device
ARG BASE_IMAGE=dustynv/ros:foxy-ros-base-l4t-r32.6.1
FROM ${BASE_IMAGE}

# Disable terminal interaction for apt
ENV DEBIAN_FRONTEND=noninteractive

# Fundamentals
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
curl \
git \
sudo \
unzip \
vim \
wget \
software-properties-common \
&& rm -rf /var/lib/apt/lists/*

# Install OpenCV dependencies
RUN apt-get update && apt-get install -y \
libavformat-dev \
libjpeg-dev \
libopenjp2-7-dev \
libpng-dev \
libpq-dev \
libswscale-dev \
libtbb2 \
libtbb-dev \
libtiff-dev \
pkg-config \
yasm \
&& rm -rf /var/lib/apt/lists/*

# Install additional packages needed for ROS2 dependencies
RUN apt-get update && apt-get install -y \
python3-distutils \
libboost-all-dev \
libboost-dev \
&& rm -rf /var/lib/apt/lists/*

# sklearn dependencies
RUN apt-get update && apt-get install -y \
gfortran \
libatlas-base-dev \
python3-scipy \
&& rm -rf /var/lib/apt/lists/*

# sklearn Python dependencies
RUN python3 -m pip install -U \
Cython \
wheel

# Install sklearn
RUN python3 -m pip install -U \
scikit-learn

# Install Git-LFS
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
apt-get update && apt-get install -y \
git-lfs \
&& rm -rf /var/lib/apt/lists/*

# Install Realsense
RUN apt update \
&& apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
&& add-apt-repository -y "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u \
&& apt-get install -y librealsense2-utils librealsense2-dev


# Update environment
ENV LD_LIBRARY_PATH="/opt/nvidia/vpi1/lib64:${LD_LIBRARY_PATH}"
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra:${LD_LIBRARY_PATH}"
ENV LD_LIBRARY_PATH="/usr/local/cuda-10.2/targets/aarch64-linux/lib:${LD_LIBRARY_PATH}"
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra-egl:${LD_LIBRARY_PATH}"

RUN echo "source /opt/ros/foxy/install/setup.bash" > /opt/ros/foxy/setup.bash

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

### -----------------------------

# Setup non-root admin user
ARG USERNAME=admin
ARG USER_UID=1000
ARG USER_GID=1001

# Create the 'admin' user
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME \
&& adduser admin video && adduser admin sudo

COPY scripts/workspace-entrypoint.sh /home/$USERNAME/workspace-entrypoint.sh
RUN chmod +x /home/$USERNAME/workspace-entrypoint.sh

141 changes: 141 additions & 0 deletions docker/Dockerfile.x86_64.base
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Copyright (c) 2021, 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.
#
# Docker file to build on x86_64
ARG BASE_IMAGE=nvidia/cuda:11.2.0-devel-ubuntu20.04
FROM ${BASE_IMAGE}

# disable terminal interaction for apt
ENV DEBIAN_FRONTEND=noninteractive

# Fundamentals
RUN apt-get update && apt-get install -y \
bash-completion \
build-essential \
clang-format \
cmake \
curl \
git \
gnupg2 \
locales \
lsb-release \
rsync \
software-properties-common \
wget \
vim \
mlocate \
&& rm -rf /var/lib/apt/lists/*

# Python basics
RUN apt-get update && apt-get install -y \
python3-flake8 \
python3-opencv \
python3-pip \
python3-pytest-cov \
python3-setuptools \
&& rm -rf /var/lib/apt/lists/*

# Video utilities
RUN apt-get update && apt-get install -y \
v4l-utils \
mesa-utils \
libcanberra-gtk-module \
libcanberra-gtk3-module \
&& rm -rf /var/lib/apt/lists/*

# Core dev libraries
RUN apt-get update && apt-get install -y \
libasio-dev \
libbullet-dev \
libtinyxml2-dev \
libcunit1-dev \
&& rm -rf /var/lib/apt/lists/*

# Python3 (PIP)
RUN python3 -m pip install -U \
argcomplete \
autopep8 \
flake8 \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
pydocstyle \
scikit-learn

# Install Git-LFS
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
apt-get update && apt-get install -y \
git-lfs \
&& rm -rf /var/lib/apt/lists/*

# Install VPI packages
ARG HAS_GPU
COPY vpi/*.deb /opt/install/
RUN if [ "$HAS_GPU" = "true" ]; then \
dpkg -i /opt/install/vpi-lib-1.1.11-cuda11-x86_64-linux.deb; \
dpkg -i /opt/install/vpi-dev-1.1.11-cuda11-x86_64-linux.deb; \
updatedb; \
fi

# Setup ROS2 Foxy
RUN locale-gen en_US en_US.UTF-8
RUN update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8

RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
RUN sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'

RUN apt-get update && apt-get install -y \
python3-colcon-common-extensions \
python3-rosdep \
python3-vcstool \
ros-foxy-camera-calibration-parsers \
ros-foxy-camera-info-manager \
ros-foxy-desktop \
ros-foxy-launch-testing-ament-cmake \
ros-foxy-rqt* \
ros-foxy-turtlesim \
ros-foxy-v4l2-camera \
ros-foxy-realsense2-camera \
&& rm -rf /var/lib/apt/lists/*

RUN rosdep init

# Install Realsense
RUN apt update \
&& apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
|| apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
&& add-apt-repository -y "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u \
&& apt-get install -y librealsense2-utils librealsense2-dev

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

# Setup non-root admin user
ARG USERNAME=admin
ARG USER_UID=1000
ARG USER_GID=1001

# Create the 'admin' user
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME \
&& adduser admin video && adduser admin sudo

COPY scripts/workspace-entrypoint.sh /home/$USERNAME/workspace-entrypoint.sh
RUN chmod +x /home/$USERNAME/workspace-entrypoint.sh

18 changes: 18 additions & 0 deletions docker/scripts/workspace-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
#
# Copyright (c) 2021, 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.

# Build ROS dependency
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source /opt/ros/foxy/setup.bash

sudo apt-get update
rosdep update

$@
3 changes: 3 additions & 0 deletions docker/vpi/vpi-dev-1.1.11-cuda11-x86_64-linux.deb
Git LFS file not shown
3 changes: 3 additions & 0 deletions docker/vpi/vpi-lib-1.1.11-cuda11-x86_64-linux.deb
Git LFS file not shown
58 changes: 58 additions & 0 deletions giistr-cla.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
## Individual Contributor License Agreement (CLA)

**Thank you for submitting your contributions to this project.**

By signing this CLA, you agree that the following terms apply to all of your past, present and future contributions
to the project.

### License.

You hereby represent that all present, past and future contributions are governed by the
[MIT License](https://opensource.org/licenses/MIT)
copyright statement.

This entails that to the extent possible under law, you transfer all copyright and related or neighboring rights
of the code or documents you contribute to the project itself or its maintainers.
Furthermore you also represent that you have the authority to perform the above waiver
with respect to the entirety of you contributions.

### Moral Rights.

To the fullest extent permitted under applicable law, you hereby waive, and agree not to
assert, all of your “moral rights” in or relating to your contributions for the benefit of the project.

### Third Party Content.

If your Contribution includes or is based on any source code, object code, bug fixes, configuration changes, tools,
specifications, documentation, data, materials, feedback, information or other works of authorship that were not
authored by you (“Third Party Content”) or if you are aware of any third party intellectual property or proprietary
rights associated with your Contribution (“Third Party Rights”),
then you agree to include with the submission of your Contribution full details respecting such Third Party
Content and Third Party Rights, including, without limitation, identification of which aspects of your
Contribution contain Third Party Content or are associated with Third Party Rights, the owner/author of the
Third Party Content and Third Party Rights, where you obtained the Third Party Content, and any applicable
third party license terms or restrictions respecting the Third Party Content and Third Party Rights. For greater
certainty, the foregoing obligations respecting the identification of Third Party Content and Third Party Rights
do not apply to any portion of a Project that is incorporated into your Contribution to that same Project.

### Representations.

You represent that, other than the Third Party Content and Third Party Rights identified by
you in accordance with this Agreement, you are the sole author of your Contributions and are legally entitled
to grant the foregoing licenses and waivers in respect of your Contributions. If your Contributions were
created in the course of your employment with your past or present employer(s), you represent that such
employer(s) has authorized you to make your Contributions on behalf of such employer(s) or such employer
(s) has waived all of their right, title or interest in or to your Contributions.

### Disclaimer.

To the fullest extent permitted under applicable law, your Contributions are provided on an "as is"
basis, without any warranties or conditions, express or implied, including, without limitation, any implied
warranties or conditions of non-infringement, merchantability or fitness for a particular purpose. You are not
required to provide support for your Contributions, except to the extent you desire to provide support.

### No Obligation.

You acknowledge that the maintainers of this project are under no obligation to use or incorporate your contributions
into the project. The decision to use or incorporate your contributions into the project will be made at the
sole discretion of the maintainers or their authorized delegates.
Loading

0 comments on commit 8e25741

Please sign in to comment.