GeoYolo-SLAM/docker/dockerfile

177 lines
5.0 KiB
Plaintext

# Copyright (C) 2021, Yubao Liu, AISL, TOYOHASHI UNIVERSITY of TECHNOLOGY
# Email: yubao.liu.ra@tut.jp
FROM nvidia/cudagl:10.2-devel-ubuntu18.04
# FROM yubaoliu/root:ros-cuda10.0-cudnn7-ubuntu18.04
MAINTAINER yubao.liu.ra@tut.jp
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
# Setup timezone
RUN echo 'Etc/UTC' > /etc/timezone && \
rm -f /etc/localtime && \
ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
apt-get update && apt-get install -y tzdata
RUN apt update \
&& apt install -f \
&& apt install -y libglew-dev \
libxkbcommon-dev \
libgoogle-glog-dev \
caffe-cpu \
libsnappy-dev \
libatlas-base-dev \
build-essential \
liblmdb-dev \
libleveldb-dev \
automake \
autotools-dev \
bison \
byacc \
curl \
git \
zip \
unzip \
wget \
python-dev \
python-pip \
python3-dev \
python3-pip \
libeigen3-dev \
libboost-all-dev \
protobuf-compiler \
libprotobuf-dev \
libhdf5-dev \
libopencv-dev \
python3-opencv \
lsb-core \
openssh-server \
libssl-dev \
libevent-dev \
g++ \
gdb \
sudo \
&& rm -rf /var/lib/apt/lists/*
# Install cmake
RUN apt-get purge -y cmake \
&& cd /tmp \
&& wget -c https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1.tar.gz \
&& tar -xzvf cmake-3.18.1.tar.gz \
&& cd cmake-3.18.1 \
&& ./bootstrap && make && make install \
&& rm cmake-3.18.1 -rf
## update pip
RUN curl -kL https://bootstrap.pypa.io/pip/2.7/get-pip.py | python \
&& curl -kL https://bootstrap.pypa.io/get-pip.py | python3
# Install mask rcnn dependencies
COPY requirements.txt /root/requirements.txt
RUN pip2 install -r /root/requirements.txt --ignore-installed enum34
RUN pip3 install -r /root/requirements.txt
# Add ROS repository
RUN /bin/bash -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' && \
# Keys for ROS repository
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 && \
# Install ROS-Base packages
apt-get update && apt install -f && apt-get install -y ros-melodic-desktop-full
# Install ROS bootstrap tools
RUN apt-get update && apt-get install --no-install-recommends -y \
python-rosdep \
python-rosinstall \
python-vcstools \
python-rosinstall-generator \
python-wstool
# Set up rosdep
RUN rosdep init
RUN rosdep update
### Create catkin workspace ###
RUN mkdir -p /root/catkin_ws/src
WORKDIR /root/catkin_ws
RUN bash -c "source /opt/ros/melodic/setup.bash && \
catkin_make -DCMAKE_BUILD_TYPE=Release"
# Load ROS environment at docker exec bash
RUN echo "source /opt/ros/melodic/setup.bash" >> /root/.bashrc
RUN echo "source /root/catkin_ws/devel/setup.bash" >> /root/.bashrc
##############################################3
## coco API
RUN pip2 install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
RUN pip3 install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
# Download Maskrcnn modle
RUN mkdir /root/cnnmodel \
&& cd /root/cnnmodel \
&& wget -c https://github.com/matterport/Mask_RCNN/releases/download/v1.0/mask_rcnn_coco.h5 \
&& wget -c http://mi.eng.cam.ac.uk/~agk34/resources/SegNet/segnet_pascal.caffemodel
# Sophus
RUN git clone https://github.com/yubaoliu/Sophus.git \
&& cd Sophus \
&& git checkout master \
&& mkdir build \
&& cd build \
&& cmake .. -DCMAKE_BUILD_TYPE=Release \
&& make -j3 \
&& make install
# G2O
RUN git clone https://github.com/yubaoliu/g2o.git \
&& cd g2o \
&& mkdir build \
&& cd build \
&& cmake .. -DCMAKE_BUILD_TYPE=Release \
&& make -j 3 \
&& make install
# TUM Benchmark
# RUN cd /root \
# && svn checkout https://svncvpr.in.tum.de/cvpr-ros-pkg/trunk/rgbd_benchmark/rgbd_benchmark_tools
# caffe-segnet
RUN cd /root/ \
&& git clone https://github.com/yubaoliu/semseg.git \
&& cd semseg/SegNet/caffe-segnet/ \
&& mkdir build \
&& cd build \
&& cmake .. && make install
#Pangolin
RUN git clone https://github.com/stevenlovegrove/Pangolin.git \
&& cd Pangolin \
&& mkdir build && cd build \
&& cmake .. -DCMAKE_BUILD_TYPE=Release \
&& make -j 3 \
&& make install
# Tools
RUN apt update && \
apt install -y vim tmux xterm lxterminal
# # Install dependencies
# # Newer CUDA was installed in base image, so rosdep keys of CUDA are skipped
# RUN /bin/bash -c "source /opt/ros/melodic/setup.bash && \
# rosdep install --from-paths src -r -y --skip-keys=\"nvidia-cuda-dev nvidia-cuda\""
#
# # Build
# RUN /bin/bash -c "source /opt/ros/melodic/setup.bash && \
# catkin_make -DCMAKE_BUILD_TYPE=Release"
# # Load ROS environment at each run
COPY ./ros_entrypoint.sh /
RUN chmod 755 /ros_entrypoint.sh
ENTRYPOINT ["/ros_entrypoint.sh"]
CMD ["bash"]
WORKDIR /root/catkin_ws/src