83 lines
2.4 KiB
Docker
83 lines
2.4 KiB
Docker
# SLAM Stéréo BlueOS — Extension Docker
|
|
# Base: ROS2 Humble (Ubuntu 22.04)
|
|
# ORB-SLAM3 + Flask interface
|
|
|
|
FROM ros:humble-ros-base AS base
|
|
|
|
LABEL version="0.1.0"
|
|
LABEL description="SLAM Stéréo visuel pour AUV sous-marin — BlueOS Extension"
|
|
LABEL authors='[{"name": "Baptiste Moulin", "email": "claude@nowyouknow.fr"}]'
|
|
LABEL company='{"about": "AUV SLAM project", "name": "Baptiste Moulin", "email": "claude@nowyouknow.fr"}'
|
|
LABEL type="device-integration"
|
|
LABEL tags='["slam", "stereo", "vision", "auv", "underwater"]'
|
|
LABEL permissions='{"NetworkMode": "host", "Devices": ["/dev/video0", "/dev/video1"], "HostConfig": {"Privileged": false}}'
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV ROS_DISTRO=humble
|
|
|
|
# --- Dépendances système ---
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
python3-pip \
|
|
python3-opencv \
|
|
libopencv-dev \
|
|
cmake \
|
|
build-essential \
|
|
git \
|
|
wget \
|
|
libssl-dev \
|
|
libusb-1.0-0-dev \
|
|
libeigen3-dev \
|
|
libglew-dev \
|
|
libpython3-dev \
|
|
python3-numpy \
|
|
python3-yaml \
|
|
# Pangolin deps
|
|
libgl1-mesa-dev \
|
|
libglu1-mesa-dev \
|
|
freeglut3-dev \
|
|
libwayland-dev \
|
|
libxkbcommon-dev \
|
|
wayland-protocols \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# --- Python dependencies ---
|
|
RUN pip3 install --no-cache-dir \
|
|
flask>=3.0 \
|
|
numpy>=1.24 \
|
|
pyyaml>=6.0 \
|
|
opencv-python-headless>=4.8
|
|
|
|
# --- Pangolin (viewer 3D ORB-SLAM3) ---
|
|
RUN git clone --depth 1 https://github.com/stevenlovegrove/Pangolin /opt/Pangolin && \
|
|
cmake -S /opt/Pangolin -B /opt/Pangolin/build \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_TOOLS=OFF \
|
|
-DBUILD_EXAMPLES=OFF && \
|
|
cmake --build /opt/Pangolin/build --parallel $(nproc) && \
|
|
cmake --install /opt/Pangolin/build && \
|
|
rm -rf /opt/Pangolin
|
|
|
|
# --- ORB-SLAM3 dependencies (g2o, DBoW2 inclus dans ORB-SLAM3) ---
|
|
# Note: compilation complète ~15 min. Décommenter pour build final.
|
|
# RUN git clone --depth 1 https://github.com/UZ-SLAMLab/ORB_SLAM3 /opt/ORB_SLAM3 && \
|
|
# cd /opt/ORB_SLAM3 && chmod +x build.sh && bash build.sh
|
|
|
|
# --- Application SLAM ---
|
|
WORKDIR /app
|
|
COPY src/ ./src/
|
|
COPY config/ ./config/
|
|
|
|
# Créer config/ si vide
|
|
RUN mkdir -p /app/config
|
|
|
|
# --- Port Flask ---
|
|
EXPOSE 5000
|
|
|
|
# --- Healthcheck ---
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
|
|
CMD curl -f http://localhost:5000/ || exit 1
|
|
|
|
# --- Entrypoint ---
|
|
ENV PYTHONUNBUFFERED=1
|
|
CMD ["python3", "src/interface/app.py"]
|