-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathDockerfile.ROS
91 lines (77 loc) · 3.02 KB
/
Dockerfile.ROS
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
# Copyright (c) Contributors to the Open 3D Engine Project.
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
ARG ROS_VERSION=humble
ARG UBUNTU_VERSION=jammy
FROM ros:${ROS_VERSION}-ros-base-${UBUNTU_VERSION}
ENV WORKSPACE=/data/workspace
WORKDIR $WORKSPACE
# ROSConDemo Arguments
ARG ROSCON_DEMO_REPO=https://github.com/RobotecAI/ROSCon2023Demo.git
ARG ROSCON_DEMO_BRANCH=main
ARG ROSCON_DEMO_COMMIT=HEAD
ARG ROSCON_DEMO_LARGE_SCALE=0
# ROSConDemo Environment Variables
ENV ROSCON_DEMO_REPO=$ROSCON_DEMO_REPO
ENV ROSCON_DEMO_BRANCH=$ROSCON_DEMO_BRANCH
ENV ROSCON_DEMO_COMMIT=$ROSCON_DEMO_COMMIT
ENV ROSCON_DEMO_LARGE_SCALE=$ROSCON_DEMO_LARGE_SCALE
ENV ROSCON_DEMO_ROOT=$WORKSPACE/ROSCon2023Demo
ENV ROSCON_DEMO_PROJECT=$ROSCON_DEMO_ROOT/Project
ENV ROSCON_DEMO_NAV_ROOT=$WORKSPACE/ros2_nav
ENV LANG=en_US.UTF-8
# Setup time zone and locale data (necessary for SSL and HTTPS packages)
RUN apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata locales keyboard-configuration curl \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
&& dpkg-reconfigure --frontend=noninteractive locales \
&& update-locale LANG=en_US.UTF-8 \
&& sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' \
&& curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - \
&& rm -rf /var/lib/apt/lists/*
# Install the required ubuntu packages
RUN apt-get update \
&& apt-get install -y \
git \
git-lfs \
python3-pip \
software-properties-common \
screen \
ros-${ROS_DISTRO}-ackermann-msgs \
ros-${ROS_DISTRO}-control-toolbox \
ros-${ROS_DISTRO}-nav-msgs \
ros-${ROS_DISTRO}-gazebo-msgs \
ros-${ROS_DISTRO}-xacro \
ros-${ROS_DISTRO}-vision-msgs \
ros-${ROS_DISTRO}-nav2-msgs \
ros-${ROS_DISTRO}-ur-msgs \
ros-${ROS_DISTRO}-moveit-servo \
ros-${ROS_DISTRO}-moveit-visual-tools \
ros-${ROS_DISTRO}-moveit \
ros-${ROS_DISTRO}-pilz-industrial-motion-planner \
ros-${ROS_DISTRO}-cyclonedds \
ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \
ros-${ROS_DISTRO}-controller-manager \
ros-${ROS_DISTRO}-ur-client-library \
ros-${ROS_DISTRO}-nav2-common \
ros-${ROS_DISTRO}-navigation2 \
ros-${ROS_DISTRO}-ur-description \
ros-${ROS_DISTRO}-force-torque-sensor-broadcaster \
python3-vcstool \
python3-rosdep2 \
python3-colcon-common-extensions \
&& pip install python-statemachine
ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
COPY build_ros.sh $WORKSPACE/
COPY launch_ros.sh $WORKSPACE/
COPY launch_ros_fleet.sh $WORKSPACE/
COPY roscon2023_large_cyclone_config.xml $WORKSPACE/
RUN cd $WORKSPACE \
&& ./build_ros.sh \
&& rm build_ros.sh \
&& if [ $ROSCON_DEMO_LARGE_SCALE -eq 0 ] ; then rm launch_ros_fleet.sh ; fi
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES all
ENTRYPOINT ["/bin/bash", "-c"]