-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
103 lines (84 loc) · 4.92 KB
/
Copy pathDockerfile
File metadata and controls
103 lines (84 loc) · 4.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
ARG BASE_IMAGE="dustynv/ros:jazzy-desktop-r36.4.0-cu128-24.04"
FROM ${BASE_IMAGE}
ARG L4T_VERSION="l4t-r36.4.0"
ARG L4T_MAJOR=36
ARG L4T_MINOR=4
ARG L4T_PATCH=0
ARG ROS2_DIST="jazzy"
ARG ZED_SDK_MAJOR=5
ARG ZED_SDK_MINOR=2
ARG ZED_SDK_PATCH=2
ARG CUSTOM_ZED_SDK_URL=""
ARG ZED_WRAPPER_REPO="https://github.com/stereolabs/zed-ros2-wrapper.git"
ARG ZED_WRAPPER_REF="v5.2.0"
ARG XACRO_VERSION=2.0.8
ARG DIAGNOSTICS_VERSION=4.0.0
ARG AMENT_LINT_VERSION=0.12.11
ARG ROBOT_LOCALIZATION_VERSION=3.5.3
ARG ZED_MSGS_VERSION=5.1.1
ARG NMEA_MSGS_VERSION=2.0.0
ARG ANGLES_VERSION=1.15.0
ARG GEOGRAPHIC_INFO_VERSION=1.0.6
ARG BACKWARD_ROS_VERSION=1.0.7
ENV DEBIAN_FRONTEND=noninteractive
ENV L4T_VERSION=${L4T_VERSION}
ENV PYPI_URL=https://pypi.jetson-ai-lab.io/jp6/cu128
ENV ROS_DISTRO=${ROS2_DIST}
ENV ZED_SDK_URL=${CUSTOM_ZED_SDK_URL:-"https://download.stereolabs.com/zedsdk/${ZED_SDK_MAJOR}.${ZED_SDK_MINOR}.${ZED_SDK_PATCH}/l4t${L4T_MAJOR}.${L4T_MINOR}/jetsons"}
RUN if [ "$(curl -L -I "${ZED_SDK_URL}" -o /dev/null -s -w '%{http_code}\n' | head -n 1)" = "200" ]; then \
echo "Validated ZED SDK download URL"; \
else \
echo "ZED SDK installer not reachable at ${ZED_SDK_URL}"; \
exit 1; \
fi
ENV TZ=Europe/Paris
# Disable apt-get warnings
RUN curl -fsSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
apt-get update || true && apt-get install -y --no-install-recommends apt-utils dialog && \
rm -rf /var/lib/apt/lists/*
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
apt-get update && \
apt-get install --yes lsb-release wget less udev sudo build-essential cmake python3 python3-dev python3-pip python3-wheel git jq libpq-dev zstd usbutils && \
rm -rf /var/lib/apt/lists/*
RUN echo "# R${L4T_MAJOR} (release), REVISION: ${L4T_MINOR}" > /etc/nv_tegra_release && \
apt-get update -y || true && \
apt-get install -y --no-install-recommends zstd wget less cmake curl gnupg2 \
build-essential python3 python3-pip python3-dev python3-setuptools libusb-1.0-0-dev libdraco-dev zlib1g-dev && \
(apt-get install -y --no-install-recommends libgeographic-dev || \
apt-get install -y --no-install-recommends libgeographiclib-dev) && \
export PIP_INDEX_URL="${PYPI_URL}" && \
pip install protobuf && \
wget -q --no-check-certificate -O ZED_SDK_Linux_JP.run \
${ZED_SDK_URL} && \
chmod +x ZED_SDK_Linux_JP.run ; ./ZED_SDK_Linux_JP.run silent skip_tools && \
rm -rf /usr/local/zed/resources/* && \
rm -rf ZED_SDK_Linux_JP.run && \
rm -rf /var/lib/apt/lists/*
ENV ROS_DISTRO=${ROS2_DIST}
WORKDIR /root/ros2_ws/src
RUN git clone --recurse-submodules --branch ${ZED_WRAPPER_REF} ${ZED_WRAPPER_REPO} zed-ros2-wrapper
RUN wget https://github.com/ros/xacro/archive/refs/tags/${XACRO_VERSION}.tar.gz -O - | tar -xvz && mv xacro-${XACRO_VERSION} xacro && \
wget https://github.com/ros/diagnostics/archive/refs/tags/${DIAGNOSTICS_VERSION}.tar.gz -O - | tar -xvz && mv diagnostics-${DIAGNOSTICS_VERSION} diagnostics && \
wget https://github.com/ament/ament_lint/archive/refs/tags/${AMENT_LINT_VERSION}.tar.gz -O - | tar -xvz && mv ament_lint-${AMENT_LINT_VERSION} ament-lint && \
wget https://github.com/cra-ros-pkg/robot_localization/archive/refs/tags/${ROBOT_LOCALIZATION_VERSION}.tar.gz -O - | tar -xvz && mv robot_localization-${ROBOT_LOCALIZATION_VERSION} robot-localization && \
wget https://github.com/stereolabs/zed-ros2-interfaces/archive/refs/tags/${ZED_MSGS_VERSION}.tar.gz -O - | tar -xvz && mv zed-ros2-interfaces-${ZED_MSGS_VERSION} zed-ros2-interfaces && \
wget https://github.com/ros-drivers/nmea_msgs/archive/refs/tags/${NMEA_MSGS_VERSION}.tar.gz -O - | tar -xvz && mv nmea_msgs-${NMEA_MSGS_VERSION} nmea_msgs && \
wget https://github.com/ros/angles/archive/refs/tags/${ANGLES_VERSION}.tar.gz -O - | tar -xvz && mv angles-${ANGLES_VERSION} angles && \
wget https://github.com/ros-geographic-info/geographic_info/archive/refs/tags/${GEOGRAPHIC_INFO_VERSION}.tar.gz -O - | tar -xvz && mv geographic_info-${GEOGRAPHIC_INFO_VERSION} geographic-info && \
wget https://github.com/pal-robotics/backward_ros/archive/refs/tags/${BACKWARD_ROS_VERSION}.tar.gz -O - | tar -xvz && mv backward_ros-${BACKWARD_ROS_VERSION} backward_ros && \
cp -r geographic-info/geographic_msgs/ . && \
rm -rf geographic-info
RUN python3 -m pip install --upgrade cython
WORKDIR /root/ros2_ws
RUN /bin/bash -c "source /opt/ros/$ROS_DISTRO/install/setup.bash && \
colcon build --parallel-workers $(nproc) --symlink-install \
--event-handlers console_direct+ --base-paths src \
--cmake-args ' -DCMAKE_BUILD_TYPE=Release' \
' -DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs' \
' -DCMAKE_CXX_FLAGS=\"-Wl,--allow-shlib-undefined\"' \
' --no-warn-unused-cli'"
COPY ros_entrypoint.sh /sbin/ros_entrypoint.sh
RUN chmod 755 /sbin/ros_entrypoint.sh
ENTRYPOINT ["/sbin/ros_entrypoint.sh"]
CMD ["bash"]