Skip to content
Open
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
45 changes: 45 additions & 0 deletions scripts/VCDI/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
FROM python:3.11-slim

RUN apt-get update && apt-get install -y \
git \
curl \
build-essential \
gnupg \
&& rm -rf /var/lib/apt/lists/*


RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get update && apt-get install -y nodejs


WORKDIR /app


ARG BRANCH=master

RUN git clone --branch ${BRANCH} --single-branch https://github.com/JdeRobot/VisualCircuit.git



WORKDIR /app/VisualCircuit/frontend
RUN npm install --legacy-peer-deps


WORKDIR /app/VisualCircuit/backend
RUN pip install --upgrade pip && pip install -r requirements.txt

RUN echo "DJANGO_DEBUG=true" >> /app/VisualCircuit/backend/.env && \
echo "VISUAL_CIRCUIT_FRONTEND_HOST='http://localhost:4000'" >> /app/VisualCircuit/backend/.env && \
echo "DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1" >> /app/VisualCircuit/backend/.env && \
echo "DJANGO_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> /app/VisualCircuit/backend/.env

# Collect static files
RUN python manage.py collectstatic

WORKDIR /app/VisualCircuit
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE 4000 8080
ENTRYPOINT ["/entrypoint.sh"]

11 changes: 11 additions & 0 deletions scripts/VCDI/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
set -e

echo "Starting backend server on port 8080..."
cd /app/VisualCircuit/backend
python3 manage.py migrate || true
python3 manage.py runserver 0.0.0.0:8080 &

echo "Starting frontend server on port 4000..."
cd /app/VisualCircuit/frontend
npm start
318 changes: 318 additions & 0 deletions scripts/VCDI_with_RI/Dockerfile.dependencies_humble
Original file line number Diff line number Diff line change
@@ -0,0 +1,318 @@
FROM nvidia/opengl:1.2-glvnd-runtime-ubuntu22.04

# Make all NVIDIA GPUS visible
ARG NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=all
ENV VIRTUALGL_VERSION=3.0.2
ENV TURBOVNC_VERSION=3.0.3

# Setup NON INTERACTIVE ENVIRONMENT
ENV DEBIAN_FRONTEND=noninteractive

# Install locales to prevent errors
RUN apt-get clean && \
apt-get update && \
apt-get install --no-install-recommends -y locales && \
rm -rf /var/lib/apt/lists/* && \
locale-gen en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

ENV ROS_DISTRO=humble
ENV AMENT_PREFIX_PATH=/opt/ros/${ROS_DISTRO}
ENV COLCON_PREFIX_PATH=/opt/ros/${ROS_DISTRO}
ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/${ROS_DISTRO}/opt/rviz_ogre_vendor/lib:/opt/ros/${ROS_DISTRO}/lib/x86_64-linux-gnu:/opt/ros/${ROS_DISTRO}/lib:/usr/share/gazebo/../../lib/x86_64-linux-gnu/gazebo-11/plugins:
ENV PATH=/opt/ros/${ROS_DISTRO}/bin:$PATH
ENV PYTHONPATH=/opt/ros/${ROS_DISTRO}/lib/python3.10/site-packages
ENV ROS_PYTHON_VERSION=3
ENV ROS_VERSION=2

# Install common tools
RUN apt-get update && apt-get install -y \
software-properties-common \
bash-completion \
apt-utils \
build-essential \
git curl wget cmake \
nano vim \
gnupg \
lsb-release \
sudo \
net-tools \
pciutils \
&& rm -rf /var/lib/apt/lists/*

# Install ROS2 and ROS packages
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null \
&& apt-get update && apt-get install -y \
ros-${ROS_DISTRO}-ros-base \
ros-${ROS_DISTRO}-xacro \
ros-${ROS_DISTRO}-joint-state-publisher \
ros-${ROS_DISTRO}-rviz2 \
python3-colcon-common-extensions \
python3-pip python3-rosdep python3-vcstool \
python3-argcomplete \
&& rosdep init \
&& rm -rf /var/lib/apt/lists/*

# Install Gazebo 11
RUN add-apt-repository ppa:openrobotics/gazebo11-gz-cli
RUN apt-get update && apt-get install -y \
gazebo11 \
ros-humble-gazebo-ros-pkgs \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libimage-exiftool-perl \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mkdir ~/.gazebo && touch ~/.gazebo/gui.ini

# Install Gazebo Harmonic
RUN apt-get update \
&& wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \
&& apt-get update && apt-get install -y -q \
gz-harmonic \
&& rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y \
ros-humble-ros-gzharmonic \
&& rm -rf /var/lib/apt/lists/*

# Install VNC
# Xorg segfault error mitigation
RUN apt-get update && apt-get install -y --no-install-recommends \
dbus-x11 \
libdbus-c++-1-0v5 \
xvfb xauth xfonts-base xkb-data x11-xkb-utils \
x11vnc \
xterm \
xserver-xorg-video-dummy \
x11-apps \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/*

RUN wget https://xpra.org/xorg.conf \
&& rm -rf /tmp/*

# Install noVNC and websockify
RUN git clone -b v1.4.0 https://github.com/novnc/noVNC.git
RUN cd /noVNC/utils && git clone -b v0.11.0 https://github.com/novnc/websockify.git

# VirtualGL and TurboVNC
COPY ./gpu/virtualgl_${VIRTUALGL_VERSION}_amd64.deb ./gpu/virtualgl32_${VIRTUALGL_VERSION}_amd64.deb ./gpu/turbovnc_${TURBOVNC_VERSION}_amd64.deb /

RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y \
libxtst6:i386 \
libxv1:i386 \
libglu1-mesa:i386 \
libegl1-mesa:i386 \
libegl1-mesa:amd64

RUN apt-get update && dpkg -i /virtualgl_${VIRTUALGL_VERSION}_amd64.deb /virtualgl32_${VIRTUALGL_VERSION}_amd64.deb \
&& rm /virtualgl_${VIRTUALGL_VERSION}_amd64.deb /virtualgl32_${VIRTUALGL_VERSION}_amd64.deb \
&& chmod u+s /usr/lib/libvglfaker.so \
&& chmod u+s /usr/lib/libdlfaker.so \
&& chmod u+s /usr/lib32/libvglfaker.so \
&& chmod u+s /usr/lib32/libdlfaker.so \
&& chmod u+s /usr/lib/i386-linux-gnu/libvglfaker.so \
&& chmod u+s /usr/lib/i386-linux-gnu/libdlfaker.so \
&& apt-get update && apt-get install -y --no-install-recommends \
/turbovnc_${TURBOVNC_VERSION}_amd64.deb \
&& rm turbovnc_${TURBOVNC_VERSION}_amd64.deb \
&& rm -rf /var/lib/apt/lists/*

RUN apt-get update && \
apt-get install -y lxde-common && \
rm -rf /var/lib/apt/lists/*

ENV PATH="$PATH:/opt/VirtualGL/bin:/opt/TurboVNC/bin"

# Node
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& npm install -g yarn

# Install Python 3 pip build dependencies first
RUN python3.10 -m pip install --upgrade pip==23.3.1 wheel==0.41.3 setuptools==69.0.2 selenium

# pip install dependencies
RUN python3.10 -m pip install \
pylint==3.3.1 transitions==0.9.0 pydantic==2.4.2 websocket-client==1.5.2 \
argparse==1.4.0 coverage==6.2 cerberus==1.3.4 empy==3.3.4 jinja2==3.0.3 kconfiglib==14.1.0 \
matplotlib==3.0.* numpy==1.24.3 nunavut==1.1.0 packaging==21.3 pkgconfig==1.5.5 pyros-genmsg==0.5.8 \
pyulog==1.0.1 pyyaml==5.4.1 requests==2.31.0 serial==0.0.97 six==1.16.0 toml==0.10.2 psutil==5.9.0 \
onnxruntime==1.15.0 Pillow==9.0.1 opencv-python==4.5.5.64 netron seaborn==0.11.2 watchdog==2.1.5 utm==0.7.0 psycopg2 jedi pyapriltags

# monaco editor
RUN python3.10 -m pip install black==24.10.0

# websocket server dependency
RUN python3.10 -m pip install websocket_server==0.6.4 posix-ipc==1.1.1 django==4.1.7 djangorestframework==3.13.1 \
django-webpack-loader==1.5.0 django-cors-headers==3.14.0 websockets==11.0.3 asyncio==3.4.3


## Aerostack2
WORKDIR /root/

RUN apt-get update && \
apt-get install apt-utils -y \
software-properties-common \
git \
tmux \
tmuxinator \
python3-rosdep \
python3-pip \
python3-colcon-common-extensions \
python3-colcon-mixin \
python-is-python3 \
ros-dev-tools \
python3-flake8 \
python3-flake8-builtins \
python3-flake8-comprehensions \
python3-flake8-docstrings \
python3-flake8-import-order \
python3-flake8-quotes \
cppcheck \
lcov \
lsb-release \
wget \
gnupg \
&& rm -rf /var/lib/apt/lists/*

RUN pip3 install \
pylint \
flake8==4.0.1 \
pycodestyle==2.8 \
cmakelint \
cpplint \
colcon-lcov-result \
PySimpleGUI-4-foss

RUN colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
RUN colcon mixin update default
RUN rm -rf log
# remove log folder
RUN mkdir -p /home/drones_ws/src/
WORKDIR /home/drones_ws/src/
RUN git clone https://github.com/aerostack2/aerostack2.git -b robotics-academy-fix
RUN touch aerostack2/as2_hardware_drivers/COLCON_IGNORE
RUN touch aerostack2/as2_behavior_tree/COLCON_IGNORE
RUN touch aerostack2/as2_map_server/COLCON_IGNORE
RUN touch aerostack2/as2_behaviors/as2_behaviors_path_planning/COLCON_IGNORE
RUN touch aerostack2/as2_utilities/as2_geozones/COLCON_IGNORE
RUN touch aerostack2/as2_user_interfaces/as2_visualization/as2_rviz_plugins/COLCON_IGNORE

WORKDIR /home/drones_ws/

RUN apt-get update && \
apt-get install -y \
libbenchmark-dev \
libeigen3-dev \
libgeographic-dev \
libncurses-dev \
libyaml-cpp-dev \
pybind11-dev \
python3-jinja2 \
python3-pydantic \
python3-pymap3d \
python3-pytest \
ros-humble-action-msgs \
ros-humble-ament-cmake \
ros-humble-ament-cmake-gtest \
ros-humble-ament-cmake-lint-cmake \
ros-humble-ament-cmake-pytest \
ros-humble-ament-cmake-python \
ros-humble-ament-cmake-xmllint \
ros-humble-ament-copyright \
ros-humble-ament-flake8 \
ros-humble-ament-index-cpp \
ros-humble-ament-lint-auto \
ros-humble-ament-lint-common \
ros-humble-ament-pep257 \
ros-humble-backward-ros \
ros-humble-builtin-interfaces \
ros-humble-cv-bridge \
ros-humble-geographic-msgs \
ros-humble-geometry-msgs \
ros-humble-image-transport \
ros-humble-mocap4r2-msgs \
ros-humble-nav-msgs \
ros-humble-pluginlib \
ros-humble-rclcpp \
ros-humble-rclcpp-action \
ros-humble-rclcpp-components \
ros-humble-rclcpp-lifecycle \
ros-humble-rclpy \
ros-humble-robot-state-publisher \
ros-humble-rosidl-default-generators \
ros-humble-rosidl-default-runtime \
ros-humble-rviz2 \
ros-humble-sdformat-urdf \
ros-humble-sensor-msgs \
ros-humble-std-msgs \
ros-humble-std-srvs \
ros-humble-tf2 \
ros-humble-tf2-geometry-msgs \
ros-humble-tf2-msgs \
ros-humble-tf2-ros \
ros-humble-trajectory-msgs \
ros-humble-visualization-msgs \
ros-humble-moveit \
ros-humble-ros2-control \
ros-humble-ros2-controllers \
ros-humble-gripper-controllers \
ros-humble-rmw-cyclonedds-cpp \
ros-humble-ur \
ros-humble-ros-testing \
libpoco-dev \
&& rm -rf /var/lib/apt/lists/*

RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

# Install CycloneDDS RMW for ROS 2 Humble to fix cycle time issues in humble-moveit (temporary fix)
RUN echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc

# Instalation for industrial robots

RUN mkdir -p /home/industrial_ws/src/ABBDriver
WORKDIR /home/industrial_ws/src/ABBDriver
RUN git clone https://github.com/PickNikRobotics/abb_ros2.git -b rolling
RUN . /opt/ros/$ROS_DISTRO/setup.sh && rosdep update
RUN vcs import < abb_ros2/abb.repos
RUN . /opt/ros/$ROS_DISTRO/setup.sh && rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
WORKDIR /home/industrial_ws/src
RUN git clone https://github.com/ros-controls/gazebo_ros2_control.git
RUN cd gazebo_ros2_control && git reset --hard 9a3736c # Commit for the 0.4.6 version!
RUN git clone https://github.com/IFRA-Cranfield/IFRA_LinkAttacher.git
RUN git clone https://github.com/IFRA-Cranfield/IFRA_ObjectPose.git
RUN git clone https://github.com/IFRA-Cranfield/IFRA_LinkPose.git
RUN git clone https://github.com/IFRA-Cranfield/ros2_RobotiqGripper.git
# Forked needed in order to read the parameters from main launcher
RUN git clone https://github.com/javizqh/ros2_SimRealRobotControl
RUN sudo cp /home/industrial_ws/src/ros2_SimRealRobotControl/include/move_group_interface_improved.h /opt/ros/humble/include/moveit/move_group_interface/move_group_interface_improved.h
WORKDIR /home/industrial_ws
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

# Create workspace and add drone packages
RUN echo "source /usr/share/gazebo/setup.bash" >> ~/.bashrc
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
RUN echo 'export AEROSTACK2_PATH=/home/drones_ws/src/aerostack2' >> ~/.bashrc
RUN echo 'source $AEROSTACK2_PATH/as2_cli/setup_env.bash' >> ~/.bashrc
RUN echo "source /home/drones_ws/install/setup.bash" >> ~/.bashrc
RUN echo "source /home/industrial_ws/install/setup.bash" >> ~/.bashrc

# Download and install OMPL library
COPY install-ompl-ubuntu.sh /
WORKDIR /
RUN chmod u+x install-ompl-ubuntu.sh
RUN ./install-ompl-ubuntu.sh --github --python
Loading
Loading