From ad8fe37b86063cf8d23c8757586454abf4b3151a Mon Sep 17 00:00:00 2001 From: Matas Keras Date: Tue, 6 Jun 2023 12:13:24 -0400 Subject: [PATCH] updated docker to not use nvidia container --- Docker_PX4/Dockerfile | 277 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 265 insertions(+), 12 deletions(-) diff --git a/Docker_PX4/Dockerfile b/Docker_PX4/Dockerfile index 604c2bd..434e7b3 100644 --- a/Docker_PX4/Dockerfile +++ b/Docker_PX4/Dockerfile @@ -1,12 +1,267 @@ -FROM mzahana/ros-melodic-cuda10.1:latest -LABEL maintainer="Mohamed Abdelkader " -USER arrow +FROM ubuntu:18.04 + + ENV DEBIAN_FRONTEND noninteractive +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 + + + + +RUN apt-get update && apt-get -y --quiet --no-install-recommends install \ + sudo \ + nano \ + gedit \ + net-tools \ + iputils-* \ + bash-completion \ + autotools-dev \ + dh-autoreconf \ + bzip2 \ + ca-certificates \ + ccache \ + cmake \ + cppcheck \ + curl \ + dirmngr \ + doxygen \ + file \ + g++ \ + gcc \ + gdb \ + git \ + gnupg \ + gosu \ + lcov \ + libfreetype6-dev \ + libgtest-dev \ + libpng-dev \ + lsb-release \ + make \ + ninja-build \ + openjdk-8-jdk \ + openjdk-8-jre \ + openssh-client \ + pkg-config \ + python-pip \ + python-pygments \ + python-setuptools \ + python-wstool \ + python3-dev \ + python3-pip \ + python3-pygments \ + python3-setuptools \ + locate \ + rsync \ + shellcheck \ + tzdata \ + unzip \ + wget \ + xsltproc \ + zip \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +# gtest +RUN cd /usr/src/gtest \ + && mkdir build && cd build \ + && cmake .. && make \ + && cp *.a /usr/lib \ + && cd .. && rm -rf build + +RUN python -m pip install --upgrade pip \ + && pip install setuptools pkgconfig wheel \ + && pip install argparse argcomplete coverage jinja2 empy numpy requests serial toml pyyaml cerberus + +# Python 3 dependencies installed by pip +RUN pip3 install argparse argcomplete coverage cerberus empy jinja2 \ + matplotlib==3.0.* numpy pkgconfig pyros-genmsg pyulog pyyaml \ + requests serial toml pyulog wheel + + +# astyle v2.06 +RUN wget -q https://downloads.sourceforge.net/project/astyle/astyle/astyle%202.06/astyle_2.06_linux.tar.gz -O /tmp/astyle.tar.gz \ + && cd /tmp && tar zxf astyle.tar.gz && cd astyle/src \ + && make -f ../build/gcc/Makefile && cp bin/astyle /usr/local/bin \ + && rm -rf /tmp/* + +# Gradle (Required to build Fast-RTPS-Gen) +RUN wget -q "https://services.gradle.org/distributions/gradle-5.6.2-bin.zip" -O /tmp/gradle-5.6.2-bin.zip \ + && mkdir /opt/gradle \ + && cd /tmp \ + && unzip -d /opt/gradle gradle-5.6.2-bin.zip \ + && rm -rf /tmp/* + +ENV PATH "/opt/gradle/gradle-5.6.2/bin:$PATH" + +# Fast-RTPS +RUN apt install libssl-dev -y +RUN git clone --recursive https://github.com/eProsima/Fast-RTPS.git -b 1.8.x /tmp/FastRTPS-1.8.2 \ + && cd /tmp/FastRTPS-1.8.2 \ + && mkdir build && cd build \ + && cmake -DTHIRDPARTY=ON -DSECURITY=ON .. \ + && cmake --build . --target install \ + && rm -rf /tmp/* + +# Fast-RTPS-Gen (required since Fast-RTPS-Gen got split from Fast-RTPS repo since 1.8.x) +RUN git clone --recursive https://github.com/eProsima/Fast-RTPS-Gen.git -b v1.0.2 /tmp/Fast-RTPS-Gen \ + && cd /tmp/Fast-RTPS-Gen \ + && gradle assemble \ + && cp share/fastrtps/fastrtpsgen.jar /usr/local/share/fastrtps/ \ + && cp scripts/fastrtpsgen /usr/local/bin/ \ + && rm -rf /tmp/* + + +# create arrow with id 1000 with sudo access +RUN useradd --shell /bin/bash -u 1000 -c "" -m arrow && usermod -a -G dialout arrow && echo "arrow:arrow" | chpasswd && adduser arrow sudo +RUN sed -i '/force_color_prompt/s/^#//g' ~/.bashrc +RUN sed -i '/force_color_prompt/s/^#//g' /home/arrow/.bashrc + +# setup virtual X server +RUN mkdir /tmp/.X11-unix && \ + chmod 1777 /tmp/.X11-unix && \ + chown -R root:root /tmp/.X11-unix +ENV DISPLAY :99 + +ENV CCACHE_UMASK=000 +ENV FASTRTPSGEN_DIR="/usr/local/bin/" +ENV PATH="/usr/lib/ccache:$PATH" +ENV TERM=xterm +ENV TZ=UTC + +RUN echo "source /etc/profile.d/bash_completion.sh" >> /home/arrow/.bashrc + +# SITL UDP PORTS +EXPOSE 14556/udp +EXPOSE 14557/udp + + +#start of ros install +ENV ROS_DISTRO melodic +ARG TOKEN + + +RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub + +RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub + + +RUN wget --quiet http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - \ + && sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -sc` main" > /etc/apt/sources.list.d/gazebo-stable.list' \ + && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \ + && sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list' \ + && sh -c 'echo "deb http://packages.ros.org/ros-shadow-fixed/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-shadow.list' \ + && curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - \ + && apt-get update \ + && apt-get -y upgrade \ + && apt-get -y dist-upgrade \ + && DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ + ant \ + gazebo9 \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-ugly \ + libeigen3-dev \ + libgazebo9-dev \ + libgstreamer-plugins-base1.0-dev \ + libimage-exiftool-perl \ + libopencv-dev \ + libxml2-utils \ + pkg-config \ + protobuf-compiler \ + geographiclib-tools \ + libeigen3-dev \ + libgeographic-dev \ + libopencv-dev \ + python-catkin-tools \ + python-tk \ + python3-pip \ + ros-$ROS_DISTRO-gazebo-ros-pkgs \ + ros-$ROS_DISTRO-mavlink \ + ros-$ROS_DISTRO-mavros \ + ros-$ROS_DISTRO-mavros-extras \ + ros-$ROS_DISTRO-pcl-conversions \ + ros-$ROS_DISTRO-pcl-msgs \ + ros-$ROS_DISTRO-pcl-ros \ + ros-$ROS_DISTRO-ros-base \ + ros-$ROS_DISTRO-rostest \ + ros-$ROS_DISTRO-rosunit \ + ros-$ROS_DISTRO-xacro \ + ros-$ROS_DISTRO-tf2-ros \ + ros-$ROS_DISTRO-roslint \ + ros-$ROS_DISTRO-rviz \ + xvfb \ + python-pil \ + python-yaml \ + libgeos-dev \ + python-lxml \ + libgdal-dev \ + build-essential \ + python-dev \ + libjpeg-dev \ + zlib1g-dev \ + libfreetype6-dev \ + python-virtualenv \ + python-rosdep \ + && geographiclib-get-geoids egm96-5 \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* \ + # pip + && pip3 install setuptools wheel \ + && pip3 install pyulog matplotlib \ + && pip3 install catkin_pkg px4tools pymavlink \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +RUN echo "source /opt/ros/melodic/setup.bash" >> /home/arrow/.bashrc + +RUN pip install Shapely Pillow MapProxy uwsgi +# ADD mapproxy.yaml /mapproxy.yaml + +# install MAVLink headers +RUN git clone --depth 1 https://github.com/mavlink/c_library_v2.git /usr/local/include/mavlink/v2.0 && rm -rf /usr/local/include/mavlink/v2.0/.git + +# Some QT-Apps/Gazebo don't not show controls without this +ENV QT_X11_NO_MITSHM 1 + +# Gazebo 7 crashes on VM with OpenGL 3.3 support, so downgrade to OpenGL 2.1 +# http://answers.gazebosim.org/question/13214/virtual-machine-not-launching-gazebo/ +# https://www.mesa3d.org/vmware-guest.html +ENV SVGA_VGPU10 0 + +# Use UTF8 encoding in java tools (needed to compile jMAVSim) +ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 + +# Install MAVSDK library +RUN wget https://github.com/mavlink/MAVSDK/releases/download/v0.23.0/mavsdk_0.23.0_ubuntu18.04_amd64.deb \ + && dpkg -i mavsdk_0.23.0_ubuntu18.04_amd64.deb + +RUN rosdep init && su -c "rosdep update -c /home/arrow/.ros/rosdep/sources.cache" - arrow +RUN echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc + +USER arrow ENV ARROW_HOME /home/arrow +ENV CATKIN_WS $ARROW_HOME/catkin_ws -RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub +RUN echo "Working Folder is:$ARROW_HOME" -RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub +# RUN echo "Setting up the workspace" +# Create & build catkin_ws +RUN mkdir -p $ARROW_HOME/catkin_ws/src \ + && echo "arrow" | sudo -S chown -R arrow:arrow $ARROW_HOME/catkin_ws \ + && cd ~/catkin_ws \ + && catkin init \ + && catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release \ + && catkin config --merge-devel \ + && catkin config --extend /opt/ros/$ROS_DISTRO \ + && catkin build \ + && cd ~/catkin_ws/src + + + +#start of px4 setup RUN echo "arrow" | sudo -S apt-get update && sudo apt-get -y --quiet --no-install-recommends install software-properties-common apt-utils @@ -39,13 +294,7 @@ RUN echo "export PATH=\$PATH:/usr/local/cuda-10.1/bin" >> /home/arrow/.bashrc RUN echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/targets/x86_64-linux/lib/:/usr/local/cuda/extras/CUPTI/lib64/" >> /home/arrow/.bashrc RUN echo "export CUDA_HOME=/usr/local/cuda" >> /home/arrow/.bashrc -RUN touch ~/hi -RUN echo "hi" > ~/hi -RUN chmod u+w ~/catkin_ws -RUN mkdir -p ~/test_ws/src -RUN chmod 777 ~/catkin_ws/src -RUN echo "arrow" | sudo -S chown -R arrow ~/catkin_ws -RUN cd ~/test_ws/src + RUN echo "arrow" | sudo -S apt-get update RUN echo "arrow" | sudo -S apt-get install git @@ -73,3 +322,7 @@ RUN echo "arrow" | sudo -S apt-get remove modemmanager -y RUN echo "arrow" | sudo -S apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y RUN echo "arrow" | sudo -S apt install libqt5gui5 -y RUN echo "arrow" | sudo -S apt install libfuse2 -y +RUN cd ~ && wget https://github.com/mavlink/qgroundcontrol/releases/download/v4.2.6/QGroundControl.AppImage +RUN echo "arrow" | sudo -S apt-get install -y libpulse-dev +RUN echo "arrow"| sudo -S apt-get install fuse +