181 lines
6.3 KiB
Docker
181 lines
6.3 KiB
Docker
##
|
|
## Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
##
|
|
## NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
|
|
## property and proprietary rights in and to this material, related
|
|
## documentation and any modifications thereto. Any use, reproduction,
|
|
## disclosure or distribution of this material and related documentation
|
|
## without an express license agreement from NVIDIA CORPORATION or
|
|
## its affiliates is strictly prohibited.
|
|
##
|
|
FROM nvcr.io/nvidia/l4t-pytorch:r35.1.0-pth1.13-py3 AS l4t_pytorch
|
|
|
|
# Install ros components:
|
|
RUN apt-get update &&\
|
|
apt-get install -y sudo git bash unattended-upgrades glmark2 &&\
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
# Deal with getting tons of debconf messages
|
|
# See: https://github.com/phusion/baseimage-docker/issues/58
|
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
|
|
|
# TODO: Don't hardcode timezone setting to Los_Angeles, pull from host computer
|
|
# Set timezone info
|
|
RUN apt-get update && apt-get install -y \
|
|
tzdata \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime \
|
|
&& echo "America/Los_Angeles" > /etc/timezone \
|
|
&& dpkg-reconfigure -f noninteractive tzdata
|
|
|
|
# Install apt-get packages necessary for building, downloading, etc
|
|
# NOTE: Dockerfile best practices recommends having apt-get update
|
|
# and install commands in one line to avoid apt-get caching issues.
|
|
# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
lsb-core \
|
|
software-properties-common \
|
|
wget \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN add-apt-repository -y ppa:git-core/ppa
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
cmake \
|
|
git \
|
|
git-lfs \
|
|
iputils-ping \
|
|
make \
|
|
openssh-server \
|
|
openssh-client \
|
|
libeigen3-dev \
|
|
libssl-dev \
|
|
python3-pip \
|
|
python3-ipdb \
|
|
python3-tk \
|
|
python3-wstool \
|
|
sudo git bash unattended-upgrades \
|
|
apt-utils \
|
|
terminator \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ARG ROS_PKG=ros_base # desktop does not work
|
|
ENV ROS_DISTRO=noetic
|
|
ENV ROS_ROOT=/opt/ros/${ROS_DISTRO}
|
|
ENV ROS_PYTHON_VERSION=3
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
WORKDIR /workspace
|
|
|
|
|
|
#
|
|
# add the ROS deb repo to the apt sources list
|
|
#
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
git \
|
|
cmake \
|
|
build-essential \
|
|
curl \
|
|
wget \
|
|
gnupg2 \
|
|
lsb-release \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
|
|
RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
|
|
|
|
|
|
#
|
|
# install bootstrap dependencies
|
|
#
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
libpython3-dev \
|
|
python3-rosdep \
|
|
python3-rosinstall-generator \
|
|
python3-vcstool \
|
|
build-essential && \
|
|
rosdep init && \
|
|
rosdep update && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
#
|
|
# download/build the ROS source
|
|
#
|
|
RUN mkdir ros_catkin_ws && \
|
|
cd ros_catkin_ws && \
|
|
rosinstall_generator ${ROS_PKG} vision_msgs --rosdistro ${ROS_DISTRO} --deps --tar > ${ROS_DISTRO}-${ROS_PKG}.rosinstall && \
|
|
mkdir src && \
|
|
vcs import --input ${ROS_DISTRO}-${ROS_PKG}.rosinstall ./src && \
|
|
apt-get update && \
|
|
rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro ${ROS_DISTRO} --skip-keys python3-pykdl -y && \
|
|
python3 ./src/catkin/bin/catkin_make_isolated --install --install-space ${ROS_ROOT} -DCMAKE_BUILD_TYPE=Release && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
RUN pip3 install trimesh \
|
|
numpy-quaternion \
|
|
networkx \
|
|
pyyaml \
|
|
rospkg \
|
|
rosdep \
|
|
empy
|
|
# copy pkgs directory:
|
|
COPY pkgs /pkgs
|
|
|
|
|
|
# install warp:
|
|
RUN cd /pkgs/warp && python3 build_lib.py && pip3 install .
|
|
|
|
# install curobolib-extras/warp_torch:
|
|
RUN cd /pkgs/warp_torch && pip3 install .
|
|
|
|
# install nvblox:
|
|
RUN apt-get update && \
|
|
apt-get install -y libgoogle-glog-dev libgtest-dev curl libsqlite3-dev && \
|
|
cd /usr/src/googletest && cmake . && cmake --build . --target install && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
RUN cd /pkgs/nvblox/nvblox && mkdir build && cd build && cmake .. && \
|
|
make -j8 && make install
|
|
|
|
# install curobolib-extras/nvblox_torch:
|
|
RUN cd /pkgs/nvblox_torch && sh install.sh
|
|
|
|
# install curobolib and curobo:
|
|
RUN cd /pkgs/curobolib && pip3 install .
|
|
|
|
RUN cd /pkgs/curobo && pip3 install .
|
|
|
|
# sudo apt-get install lcov libbullet-extras-dev python3-catkin-tools swig ros-noetic-ifopt libyaml-cpp-dev libjsoncpp-dev
|
|
# pip3 install tqdm
|
|
# sudo apt-get install liborocos-kdl-dev ros-noetic-fcl libpcl-dev libompl-dev libnlopt-cxx-dev liburdf-dev libkdlparser-dev
|
|
# clone taskflow and compile
|
|
|
|
|
|
# libfranka:
|
|
RUN apt-get update && apt-get install -y build-essential cmake git libpoco-dev libeigen3-dev && cd /pkgs && git clone --recursive https://github.com/frankaemika/libfranka && cd libfranka && git checkout 0.7.1 && git submodule update && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. && \
|
|
cmake --build . && cpack -G DEB && dpkg -i libfranka*.deb && rm -rf /var/lib/apt/lists/*
|
|
# franka_ros and franka_motion_control:
|
|
RUN mkdir -p /curobo_ws/src && mv /pkgs/curobo_ros /curobo_ws/src/ && mv /pkgs/franka_motion_control /curobo_ws/src/
|
|
|
|
RUN cd /curobo_ws/src && git clone --branch 0.7.1 https://github.com/frankaemika/franka_ros.git && \
|
|
git clone https://github.com/justagist/franka_panda_description.git
|
|
|
|
|
|
RUN apt-get update && apt-get install -y ros-noetic-robot-state-publisher ros-noetic-rviz \
|
|
ros-noetic-moveit-visualization ros-noetic-moveit-msgs \
|
|
ros-noetic-controller-interface ros-noetic-combined-robot-hw ros-noetic-joint-limits-interface \
|
|
ros-noetic-control-msgs ros-noetic-controller-manager ros-noetic-realtime-tools ros-noetic-eigen-conversions ros-noetic-tf-conversions ros-noetic-moveit-ros-visualization && rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN cd /curobo_ws && \
|
|
/bin/bash -c "source /opt/ros/noetic/setup.bash && catkin_make -DCMAKE_BUILD_TYPE=Release"
|
|
|
|
#RUN apt-get update && apt-get install -y ros-noetic-robot-state-publisher ros-noetic-rviz ros-noetic-moveit-msgs\
|
|
# ros-noetic-moveit-ros ros-noetic-controller-interface ros-noetic-combined-robot-hw ros-noetic-joint-limits-interface ros-noetic-control-msgs && rm -rf /var/lib/apt/lists/* |