@@ -2,90 +2,66 @@ ARG ISAAC_VERSION="4.2.0"
2
2
# expects context to be the root of the repository, i.e. AirStack/. this is so we can access AirStack/ros_ws/
3
3
FROM nvcr.io/nvidia/isaac-sim:${ISAAC_VERSION}
4
4
ARG ISAAC_VERSION
5
-
6
5
WORKDIR /isaac-sim
7
6
7
+ # isaac's ros2 launch run_isaacsim.launch.py hardcodes to search in this path, so we have to put the executables here
8
+ RUN mkdir -p /root/.local/share/ov/pkg/
9
+ RUN ln -s /isaac-sim /root/.local/share/ov/pkg/isaac-sim-4.2.0
8
10
# allows us to run isaac-sim as root
9
11
ENV OMNI_KIT_ALLOW_ROOT=1
10
12
11
- # from https://github.com/athackst/dockerfiles/blob/main/ros2/humble.Dockerfile
12
- ENV DEBIAN_FRONTEND=noninteractive
13
-
14
- # Install language
15
- RUN apt-get update && apt-get install -y \
16
- locales \
17
- && locale-gen en_US.UTF-8 \
18
- && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \
19
- && rm -rf /var/lib/apt/lists/*
20
- ENV LANG=en_US.UTF-8
13
+ # setup timezone
14
+ RUN echo 'Etc/UTC' > /etc/timezone && \
15
+ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
16
+ apt-get update && \
17
+ apt-get install -q -y --no-install-recommends tzdata && \
18
+ rm -rf /var/lib/apt/lists/*
21
19
22
- # Install timezone
23
- RUN ln -fs /usr/share/zoneinfo/UTC /etc/localtime \
24
- && export DEBIAN_FRONTEND=noninteractive \
25
- && apt-get update \
26
- && apt-get install -y tzdata \
27
- && dpkg-reconfigure --frontend noninteractive tzdata \
28
- && rm -rf /var/lib/apt/lists/*
29
-
30
- RUN apt-get update && apt-get -y upgrade \
31
- && rm -rf /var/lib/apt/lists/*
32
-
33
- # Install common programs
34
- RUN apt-get update && apt-get install -y --no-install-recommends \
35
- curl \
20
+ # install packages
21
+ RUN apt-get update && apt-get install -q -y --no-install-recommends \
22
+ dirmngr \
36
23
gnupg2 \
37
- lsb-release \
38
- sudo \
39
- software-properties-common \
40
- wget \
24
+ unzip \
25
+ tmux \
41
26
&& rm -rf /var/lib/apt/lists/*
42
27
43
- # Install ROS2
44
- RUN sudo add-apt-repository universe \
45
- && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \
46
- && 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" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null \
47
- && apt-get update && apt upgrade -y && apt-get install -y --no-install-recommends \
48
- ros-humble-desktop \
49
- python3-argcomplete \
50
- && rm -rf /var/lib/apt/lists/*
51
-
28
+ # setup keys
29
+ RUN set -eux; \
30
+ key='C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654'; \
31
+ export GNUPGHOME="$(mktemp -d)"; \
32
+ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
33
+ mkdir -p /usr/share/keyrings; \
34
+ gpg --batch --export "$key" > /usr/share/keyrings/ros2-latest-archive-keyring.gpg; \
35
+ gpgconf --kill all; \
36
+ rm -rf "$GNUPGHOME"
37
+
38
+ # setup sources.list
39
+ RUN echo "deb [ signed-by=/usr/share/keyrings/ros2-latest-archive-keyring.gpg ] http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
40
+
41
+ # setup environment
42
+ ENV LANG=C.UTF-8
43
+ ENV LC_ALL=C.UTF-8
52
44
ENV ROS_DISTRO=humble
53
- ENV AMENT_PREFIX_PATH=/opt/ros/humble
54
- ENV COLCON_PREFIX_PATH=/opt/ros/humble
55
- ENV LD_LIBRARY_PATH=/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib
56
- ENV PATH=/opt/ros/humble/bin:$PATH
57
- ENV PYTHONPATH=/opt/ros/humble/local/lib/python3.10/dist-packages:/opt/ros/humble/lib/python3.10/site-packages
58
- ENV ROS_PYTHON_VERSION=3
59
- ENV ROS_VERSION=2
60
- ENV ROS_AUTOMATIC_DISCOVERY_RANGE=SUBNET
61
- ENV DEBIAN_FRONTEND=
62
45
63
- # ========================
64
- # Install dev tools
65
- RUN apt update && apt install -y \
66
- vim nano wget curl tree \
67
- cmake build-essential \
68
- less htop jq \
46
+ # Install ROS2 packages
47
+ RUN apt update && apt install -y --no-install-recommends curl emacs vim nano tmux gdb xterm tree less htop jq \
48
+ cmake \
49
+ git \
50
+ ros-humble-desktop \
51
+ ros-dev-tools \
69
52
python3-pip \
70
53
python3-rosdep \
71
- tmux \
72
- gdb
73
-
74
- # Install any additional ROS2 packages
75
- RUN apt update -y && apt install -y \
76
- ros-dev-tools \
77
- ros-humble-mavros \
78
54
ros-humble-tf2* \
55
+ ros-humble-mavros \
56
+ ros-humble-ackermann-msgs \
79
57
ros-humble-topic-tools \
80
58
ros-humble-grid-map \
81
59
ros-humble-domain-bridge \
82
- ros-humble-ackermann-msgs \
83
60
libcgal-dev \
84
61
python3-colcon-common-extensions
85
62
86
63
RUN /opt/ros/humble/lib/mavros/install_geographiclib_datasets.sh
87
64
88
-
89
65
RUN /isaac-sim/python.sh -m pip install git+https://github.com/dronekit/dronekit-python#egg=dronekit
90
66
RUN pip install PyYAML mavproxy tmuxp scipy
91
67
0 commit comments