Skip to content

Commit b0e0eab

Browse files
Saurav AgarwalSaurav Agarwal
authored andcommitted
update docker settings
1 parent 39f1ee0 commit b0e0eab

21 files changed

+234
-1057
lines changed

doc/manual/installation.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ docker start -i coverage-control-$USER # Replace with the name of the container
7676
- `--with-cuda` : With CUDA support
7777
- `--with-ros` : With ROS support
7878
- `--noble` : Ubuntu 24.04 Noble
79+
- `--arm64` : ARM64 architecture
7980

8081
The base image is `agarwalsaurav/pytorch_base` with different tags for different versions and configurations.
8182

@@ -89,6 +90,8 @@ The base image is `agarwalsaurav/pytorch_base` with different tags for different
8990
|`noble-torch2.5.1-cuda12.6.2` | `--with-cuda --noble`|
9091
|`noble-torch2.5.1-jazzy` | `--with-ros --noble`|
9192
|`noble-torch2.5.1` | `--noble`|
93+
|`arm64-jammy-torch2.5.1-humble` | `--arm64`|
94+
|`arm64-noble-torch2.5.1-jazzy` | `--arm64 --noble`|
9295

9396

9497
Install the library available on PyPI:

doc/manual/lpac.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ They are similar, except that `data_generation.py` splits the dataset into train
3434
To generate a dataset, run the following command:
3535
```bash
3636
python python/data_generation/data_generation.py \
37-
${CoverageControl_ws}/lpac/params/data_params.toml
37+
${CoverageControl_ws}/lpac/params/data_params.toml --split True
3838
```
3939

4040
A sample `data_params.toml` file is also provided in the `params` directory of the repository.
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,4 @@ export EDITOR="$VISUAL"
129129

130130
export LC_ALL=C.UTF-8
131131
export LANG=C.UTF-8
132-
export PYTHONPATH=/opt/venv/lib/python3.11/site-packages:$PYTHONPATH
133132
source /opt/venv/bin/activate

utils/docker/base_images/.ros.humble.bashrc renamed to utils/docker/.ros.bashrc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,8 @@ export PYTHONPATH=/opt/venv/lib/python3.10/site-packages:$PYTHONPATH
133133

134134
export ROS_DOMAIN_ID=7
135135
export ROS_VERSION=2
136-
export ROS_DISTRO=humble
137136
export ROS_PYTHON_VERSION=3
138-
source /opt/venv/bin/activate
139-
source /opt/ros/humble/setup.bash
137+
source /opt/ros/${ROS_DISTRO}/setup.bash
140138
source /usr/share/colcon_cd/function/colcon_cd.sh
141-
export _colcon_cd_root=/opt/ros/humble/
139+
export _colcon_cd_root=/opt/ros/${ROS_DISTRO}/
142140
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash

utils/docker/Dockerfile

Lines changed: 148 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,148 @@
1-
ARG BASE_IMAGE=ghcr.io/kumarrobotics/pytorch_base
2-
ARG BASE_TAG=latest
3-
ARG SETUP_ARGS="--with-cuda"
4-
5-
FROM ${BASE_IMAGE}:${BASE_TAG}
6-
WORKDIR /app
7-
ADD . .
8-
RUN ["bash", "-c", "/app/setup.sh ${SETUP_ARGS}"]
9-
RUN ${VENV_PATH}/bin/pip install coverage_control
10-
11-
RUN echo "export CoverageControl_ws=/workspace" >> /root/.bashrc
12-
COPY utils/docker/entrypoint.sh /entrypoint.sh
13-
RUN chmod +x /entrypoint.sh
14-
ENTRYPOINT ["/entrypoint.sh"]
15-
16-
# RUN export SETUP_ARGS=${SETUP_ARGS} && source ${VENV_PATH}/bin/activate && bash -c "./setup.sh ${SETUP_ARGS}"
1+
ARG IMAGE_TYPE="cpu"
2+
ARG CUDA_VERSION="12.4.1"
3+
ARG UBUNTU_VERSION="22.04"
4+
5+
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS cuda
6+
ARG PYTORCH_VERSION="2.5.1"
7+
ENV PYTORCH_VERSION=${PYTORCH_VERSION}
8+
COPY requirements.txt /opt/requirements.txt
9+
RUN mkdir download; \
10+
wget https://download.pytorch.org/libtorch/cu124/libtorch-win-shared-with-deps-${PYTORCH_VERSION}%2Bcu124.zip -O download/libtorch.zip; \
11+
unzip download/libtorch.zip -d /opt/; \
12+
rm -r download
13+
14+
FROM ubuntu:${UBUNTU_VERSION} AS cpu
15+
ARG PYTORCH_VERSION="2.5.1"
16+
ENV PYTORCH_VERSION=${PYTORCH_VERSION}
17+
COPY requirements_cpu.txt /opt/requirements.txt
18+
RUN mkdir download; \
19+
wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${PYTORCH_VERSION}%2Bcpu.zip -O download/libtorch.zip; \
20+
unzip download/libtorch.zip -d /opt/; \
21+
rm -r download
22+
23+
FROM arm64v8/ubuntu:${UBUNTU_VERSION} AS arm64
24+
ARG PYTORCH_VERSION="2.5.1"
25+
ENV PYTORCH_VERSION=${PYTORCH_VERSION}
26+
COPY requirements_cpu.txt /opt/requirements.txt
27+
RUN mkdir download; \
28+
wget https://github.com/AgarwalSaurav/libtorch_arm64/releases/download/v${PYTORCH_VERSION}/libtorch-cxx11-abi-shared-with-deps-${PYTORCH_VERSION}.zip -O download/libtorch.zip; \
29+
unzip download/libtorch.zip -d /opt/; \
30+
rm -r download
31+
32+
FROM ${IMAGE_TYPE} AS base
33+
ARG PYTHON_VERSION="3.10"
34+
LABEL maintainer="Saurav Agarwal <[email protected]>"
35+
LABEL description="Dockerfile for PyTorch GPU and ROS2"
36+
37+
SHELL ["/bin/bash", "-c"]
38+
39+
ENV DEBIAN_FRONTEND=noninteractive
40+
ENV PYTHON_VERSION=${PYTHON_VERSION}
41+
ENV TERM=xterm-256color
42+
43+
RUN apt-get update && apt-get install -y apt-utils
44+
45+
RUN apt-get -y update \
46+
&& apt-get -y upgrade \
47+
&& apt-get -y install \
48+
build-essential \
49+
git \
50+
wget \
51+
gpg \
52+
curl \
53+
gdb \
54+
libbz2-dev \
55+
software-properties-common \
56+
ca-certificates \
57+
lsb-release \
58+
net-tools iputils-ping \
59+
locales \
60+
python${PYTHON_VERSION} \
61+
python${PYTHON_VERSION}-dev \
62+
python${PYTHON_VERSION}-venv \
63+
&& apt-get -y autoremove \
64+
&& apt-get -y clean autoclean
65+
66+
# Add repo for installing latest version of cmake
67+
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; \
68+
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null; \
69+
apt-get -y update; \
70+
rm /usr/share/keyrings/kitware-archive-keyring.gpg \
71+
&& apt-get -y install kitware-archive-keyring
72+
73+
RUN apt-get -y install \
74+
cmake \
75+
libgmp-dev \
76+
libmpfr-dev \
77+
libboost-all-dev \
78+
libeigen3-dev \
79+
libgeos-dev \
80+
libyaml-cpp-dev \
81+
vim \
82+
neovim \
83+
tmux \
84+
ffmpeg \
85+
unzip \
86+
gnuplot-nox \
87+
ninja-build \
88+
libpng-dev \
89+
libjpeg-dev \
90+
libopencv-dev \
91+
python3-opencv \
92+
&& apt-get -y autoremove \
93+
&& apt-get -y clean autoclean \
94+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
95+
&& rm -f /var/cache/apt/archives/*.deb \
96+
&& rm -f /var/cache/apt/archives/parital/*.deb \
97+
&& rm -f /var/cache/apt/*.bin
98+
99+
ENV LD_LIBRARY_PATH="/usr/local/lib:/opt/libtorch/lib"
100+
ENV Torch_DIR=/opt/libtorch/share/cmake/
101+
102+
RUN python${PYTHON_VERSION} -m venv /opt/venv \
103+
&& /opt/venv/bin/pip install --no-cache-dir wheel \
104+
&& /opt/venv/bin/pip install --no-cache-dir -r /opt/requirements.txt
105+
ENV VENV_PATH=/opt/venv
106+
107+
COPY .bashrc /root/.bashrc
108+
109+
FROM base AS ros2
110+
ARG ROS_DISTRO="humble"
111+
ENV ROS_DISTRO=${ROS_DISTRO}
112+
RUN apt-get -y update \
113+
&& add-apt-repository universe \
114+
&& locale-gen en_US en_US.UTF-8 \
115+
&& update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \
116+
&& export LANG=en_US.UTF-8 \
117+
&& curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \
118+
&& 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 $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null \
119+
&& apt-get -y update \
120+
&& apt-get install -y \
121+
python3-colcon-common-extensions \
122+
python3-vcstool \
123+
python3-pip \
124+
python3-argcomplete \
125+
python3-rosdep \
126+
python3-rosinstall-generator \
127+
ros-${ROS_DISTRO}-desktop \
128+
ros-dev-tools \
129+
ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \
130+
ros-${ROS_DISTRO}-ros-gz \
131+
ros-${ROS_DISTRO}-ros2bag \
132+
ros-${ROS_DISTRO}-rosidl-generator-dds-idl \
133+
&& apt-get -y autoremove \
134+
&& apt-get -y clean autoclean \
135+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
136+
&& rm -f /var/cache/apt/archives/*.deb \
137+
&& rm -f /var/cache/apt/archives/parital/*.deb \
138+
&& rm -f /var/cache/apt/*.bin
139+
140+
RUN /opt/venv/bin/pip install --no-cache-dir catkin_pkg empy==3.3.4 lark tomli
141+
RUN echo $'\n\
142+
export PYTHONPATH=/opt/venv/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH\n\
143+
export ROS_PYTHON_VERSION=3\n\
144+
export ROS_VERSION=2\n\
145+
export ROS_DOMAIN_ID=10\n\
146+
source /opt/ros/${ROS_DISTRO}/setup.bash\n\
147+
source /usr/share/colcon_cd/function/colcon_cd.sh\n\
148+
export _colcon_cd_root=/opt/ros/${ROS_DISTRO}' >> /root/.bashrc

utils/docker/base_images/.ros.jazzy.bashrc

Lines changed: 0 additions & 142 deletions
This file was deleted.

0 commit comments

Comments
 (0)