Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated development dockerfile + installation docs #2278

Merged
merged 6 commits into from
Jan 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Use the official Ubuntu 22.04 image
FROM ubuntu:22.04

# Set environment variables for non-interactive installation
ENV DEBIAN_FRONTEND=noninteractive
ENV USER=root
ENV DISPLAY=:1

# Define the architecture-specific variable
ARG TARGETARCH
ENV TARGETARCH=${TARGETARCH}

# Update the package list and install necessary packages, including the missing ones
RUN apt-get update && \
apt-get install -y \
xfce4 xfce4-goodies \
tightvncserver \
xterm \
sudo \
dbus-x11 \
git \
net-tools \
vim \
python3 \
python3-pip \
curl \
wget \
cmake \
build-essential \
lsb-release \
software-properties-common \
gnupg \
locales \
&& apt-get clean

# Install websockify and its dependencies (latest stable version)
RUN pip3 install --upgrade websockify

# Download and install the latest stable version of noVNC from GitHub
RUN git clone https://github.com/novnc/noVNC.git /opt/noVNC && \
cd /opt/noVNC && \
git checkout v1.3.0 && \
ln -s /opt/noVNC/vnc.html /opt/noVNC/index.html

# Setup the VNC server configuration
RUN mkdir -p /root/.vnc && \
echo "#!/bin/bash\nxrdb $HOME/.Xresources\nstartxfce4 &" > /root/.vnc/xstartup && \
chmod +x /root/.vnc/xstartup

# Clone RoboJackets RoboCup software and install dependencies
RUN git clone https://github.com/RoboJackets/robocup-software.git /root/robocup-software

# Set timezone to avoid interactive prompt
ENV TZ=America/New_York
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# Install dependencies
RUN cd /root/robocup-software && \
./util/ubuntu-setup -y || { echo 'ubuntu-setup script failed' ; exit 1; }

RUN cd /root/robocup-software && \
./util/git-setup || { echo 'git-setup script failed' ; exit 1; }

# Clone and build ER-Force’s simulator
RUN git clone https://github.com/robotics-erlangen/framework.git /root/framework && \
cd /root/framework && \
mkdir build && cd build && \
cmake .. && \
make simulator-cli

# Use bash to source the ROS2 setup file and run make perf
RUN bash -c "source /opt/ros/humble/setup.bash && \
cd /root/robocup-software && \
make perf && \
source install/setup.bash"

# Install external ref (conditionally download the correct binary based on architecture)
RUN cd /root && \
if [ "$TARGETARCH" = "amd64" ]; then \
curl https://github.com/RoboCup-SSL/ssl-game-controller/releases/download/v3.12.3/ssl-game-controller_v3.12.3_linux_amd64 -L -O; \
elif [ "$TARGETARCH" = "arm64" ]; then \
curl https://github.com/RoboCup-SSL/ssl-game-controller/releases/download/v3.12.3/ssl-game-controller_v3.12.3_linux_arm64 -L -O; \
fi && \
chmod +x ssl-game-controller_v3.12.3_linux_*

# Expose the VNC, noVNC, and external ref ports
EXPOSE 5901 6080 8081

# Start the VNC server and noVNC services
CMD ["/bin/bash", "-c", "\
rm -rf /tmp/.X1-lock /tmp/.X11-unix/X1 && \
mkdir -p /root/.vnc && \
echo 'password' | vncpasswd -f > /root/.vnc/passwd && \
chmod 600 /root/.vnc/passwd && \
vncserver :1 -geometry 1920x1080 -depth 24 && \
/opt/noVNC/utils/novnc_proxy --vnc localhost:5901 --listen 6080"]
26 changes: 24 additions & 2 deletions docs/source/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ Installation
If you are completely unfamiliar with the command line or basic git
usage, see the Tutorial page before proceeding.

There are two main ways to install our software. The first is use a native
or virtual machine running Ubuntu 22.04, and the second is to use Docker.
The Docker method is recommended for Mac users.


Native/Virtual Machine Setup
----------------------------

We only provide official support for Ubuntu 22.04 due to ROS2. Make sure you
are on an Ubuntu 22.04 machine before continuing. For Windows users, using WSL2
with Ubuntu 22.04 will work. The steps to set this up can be found `here
Expand Down Expand Up @@ -121,9 +129,23 @@ simulator, plus a UI to show what's happening, run the following:

If everything is working properly, you should see the following window show up.

.. image::
.. image:: ./_static/soccer.png


Docker Setup
----------------------------

Instead of using an Ubuntu 22.04 machine, you can also install our software using our Docker
image that runs Ubuntu 22.04. The Docker image also has our tech stack and all the dependencies
pre-installed with a desktop GUI. The Docker setup should work on any platform
(Windows, Mac, ARM, x86, etc.).

Before you start, make sure you have Docker installed on your computer. The steps for doing
so can be found `here <https://docs.docker.com/engine/install/>`_.

./_static/soccer.png
Once you have Docker installed, please follow the steps for installing and using our RoboCup
image at `DockerHub
<https://hub.docker.com/r/robojackets/robocup-software-dev>`_.


Shortcuts
Expand Down
Loading