From b3df25b947874af42a2eff957a3abe6c040fafbd Mon Sep 17 00:00:00 2001 From: joris997 Date: Thu, 4 Jul 2024 21:59:38 +0200 Subject: [PATCH 1/7] added start on dockerfiles --- DockerFiles/README.md | 51 ++++++ DockerFiles/docker_file_kasm_ubuntu_jammy | 26 +++ .../docker_file_kasm_ubuntu_jammy_DISCOWER | 163 ++++++++++++++++++ DockerFiles/run_kasm_ros.sh | 43 +++++ 4 files changed, 283 insertions(+) create mode 100644 DockerFiles/README.md create mode 100644 DockerFiles/docker_file_kasm_ubuntu_jammy create mode 100644 DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER create mode 100755 DockerFiles/run_kasm_ros.sh diff --git a/DockerFiles/README.md b/DockerFiles/README.md new file mode 100644 index 000000000000..a5f93102a1e5 --- /dev/null +++ b/DockerFiles/README.md @@ -0,0 +1,51 @@ +Installation instructions for the DISCOWER sitl docker image! + +# Pre-requisites +## First we install the nvidia container toolkit for gpu usage with docker +https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html + +## Then we obtain the default kasm docker image from here: https://hub.docker.com/r/kasmweb/ubuntu-jammy-desktop/tags +docker pull kasmweb/ubuntu-jammy-desktop:1.14.0-rolling + + + + +# Build the docker +FOR NOW, use +`docker build -t ff_ros2_DISCOWER -f docker_file_kasm_ubuntu_jammy .` + +do not use +`docker build -t ff_ros2_DISCOWER -f docker_file_kasm_ubuntu_jammy_DISCOWER .` + +now change the id that you get in 'docker image list' (IMAGE ID) in the run_kasm_ros.sh file (line 4) + +## Run the setup file +./run_kasm_ros.sh + +## GUI support +open `https://127.0.0.1:10334` in your browser + +## Stop and Start the docker image +You shouldn't have to run the `.sh` script again +`docker stop ff_ros2_DISCOWER_container` +`docker start ff_ros2_DISCOWER_container` +and go to your browser + + + + +# In the docker instance +FOR NOW, run all the docker commands in `docker_file_kasm_ubuntu_jammy_DISCOWER` in the terminal (sometimes you need to use sudo, but it should all work). + +## Run the PX4 sim + +`cd ~/discower_gits/PX4-Space-Systems` +`make px4_sitl gz_spacecraft_2d` + +## Run micro-ROS + +`ros2 run micro_ros_agent micro_ros_agent upd4 --port 8888` + +Now you should see the the /fmu/ topics being published! + + diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy b/DockerFiles/docker_file_kasm_ubuntu_jammy new file mode 100644 index 000000000000..671bfacc6d04 --- /dev/null +++ b/DockerFiles/docker_file_kasm_ubuntu_jammy @@ -0,0 +1,26 @@ +FROM kasmweb/ubuntu-jammy-desktop:1.14.0-rolling +USER root +ENV HOME /home/kasm-default-profile +ENV STARTUPDIR /dockerstartup +ENV INST_SCRIPTS $STARTUPDIR/install +WORKDIR $HOME + + +######### Customize Container Here ########### +ARG KUH=/home/kasm-user +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y libomp5 && \ + apt-get install -y sudo zsh && \ + rm -rf /var/lib/apt/list/* && \ + echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ + true + +######### End Customizations ########### + + +RUN chown 1000:0 $HOME +RUN $STARTUPDIR/set_user_permission.sh $HOME +ENV HOME /home/kasm-user +WORKDIR $HOME +RUN mkdir -p $HOME && chown -R 1000:0 $HOME +USER 1000 diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER new file mode 100644 index 000000000000..22343acb1f2d --- /dev/null +++ b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER @@ -0,0 +1,163 @@ +FROM kasmweb/ubuntu-jammy-desktop:1.14.0-rolling +USER root + +#RUN rm /bin/sh && ln -s /bin/bash /bin/sh +#SHELL ["/bin/bash", "-c"] + +ENV HOME /home/kasm-default-profile +ENV STARTUPDIR /dockerstartup +ENV INST_SCRIPTS $STARTUPDIR/install +WORKDIR $HOME + +######### Customize Container Here ########### + + + +ARG KUH=/home/kasm-user +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y libomp5 && \ + apt-get install -y sudo zsh && \ + rm -rf /var/lib/apt/list/* && \ + echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ + true + +# Cleaning up junk +#RUN apt-get purge -y thunderbird* && \ +# apt-get remove -y google-chrome-stable gimp zoom signal-desktop obs-studio onlyoffice-desktopeditors sublime-text && \ +# apt-get autoremove -y && \ +# apt-get clean + +#RUN rm -f /home/kasm-user/Desktop/com.obsproject.Studio.desktop && \ +# rm -f /home/kasm-user/Desktop/gimp.desktop && \ +# rm -f /home/kasm-user/Desktop/google-chrome.desktop && \ +# rm -f /home/kasm-user/Desktop/nextcloud.desktop && \ +# rm -f /home/kasm-user/Desktop/onlyoffice-desktopeditors.desktop && \ +# rm -f /home/kasm-user/Desktop/signal-desktop.desktop && \ +# rm -f /home/kasm-user/Desktop/sublime_text.desktop && \ +# rm -f /home/kasm-user/Desktop/telegram.desktop && \ +# rm -f /home/kasm-user/Desktop/Zoom.desktop && \ +# rm -f /home/kasm-user/Desktop/thunderbird.desktop + +# Installing utilities +RUN apt-get update +RUN apt-get install -y terminator gedit + + + +######### +# ROS 2 # +######### +# https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +ENV ROS_DISTRO humble +ENV ROS_PYTHON_VERSION 3 + +RUN add-apt-repository universe +RUN apt-get update && apt install -y curl +RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg +RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null + +RUN apt-get update && apt-get install -y \ + software-properties-common \ + build-essential \ + python3-colcon-common-extensions \ + python3-rosdep \ + python3-vcstool \ + && rm -rf /var/lib/apt/lists* +RUN rosdep init && rosdep update --rosdistro $ROS_DISTRO + +RUN apt-get update && apt-get install -y ros-humble-desktop + +RUN echo "source /opt/ros/humble/setup.bash" >> /home/kasm-user/.bashrc + +#RUN /bin/bash -c "source /opt/ros/humble/setup.bash && echo 'ROS2 IS SET UP'" +RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} + + +############# +# Micro-ROS # +############# +# https://micro.ros.org/docs/tutorials/core/first_application_linux/ + +#RUN pip install -U rosdep colcon-common-extensions + +#RUN mkdir microros_ws && cd microros_ws +#RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup +#RUN apt update && sudo rosdep init && rosdep update && rosdep install --from-paths src --ignore-src -y +#RUN source /opt/ros/humble/setup.bash +#RUN colcon build + +#RUN echo "source /home/kasm-user/microros/install/local_setup.bash" >> /home/kasm-user/.bashrc +#RUN source /home/kasm-user/microros/install/local_setup.bash + +# Create firmware +#RUN ros2 run micro_ros_setup create_firmware_ws.sh host +#RUN ros2 run micro_ros_setup build_firmware.sh + +# Create mciro-ROS agent +#RUN ros2 run micro_ros_setup create_agent_ws.sh +#RUN ros2 run micro_ros_setup build_agent.sh + + + +################# +# Gazebo Garden # +################# +# https://gazebosim.org/docs/garden/install_ubuntu_src + +#RUN echo 'export PATH="/home/kasm-user/.local/bin:${PATH}"' >> /home/kasm-user/.bashrc +#RUN pip install vcstool + +#RUN mkdir -p ~/gazebo_ws/src && cd ~/gazebo_ws/src +#RUN wget https://raw.githubusercontent.com/gazebo-tooling/gazebodistro/master/collection-garden.yaml +#RUN vcs import < collection-garden.yaml + +#RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg +#RUN 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" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null +#RUN apt-get update + +#RUN sudo apt -y install $(sort -u $(find . -iname 'packages-'`lsb_release -cs`'.apt' -o -iname 'packages.apt' | grep -v '/\.git/') | sed '/gz\|sdf/d' | tr '\n' ' ') + +# output of transformer is probability distributio nfrom which you can sample +# frenet frames + +################## +# DISCOWER stuff # +################## +### CUSTOM GZ-SIM +#RUN pip install kconfiglib symforce pyros-genmsg future + +# We replace gz-sim with our DISCOWER version (for spacecraft) +#RUN cd ~/gazebo_ws/src +#RUN rm -rf gz-sim && git clone https://github.com/DISCOWER/gz-sim.git +#RUN cd ~/gazebo_ws/src/gz-sim && git pull && git checkout origin/pr-spacecraft-thrusters +#RUN cd ~/gazebo_ws && colcon build --merge-install && . ~/gazebo_ws/install/setup.bash + +### PX4-SPACE-SYSTEMS +#RUN mkdir ~/discower_gits && cd ~/discower_gits +#RUN git clone https://github.com/DISCOWER/PX4-Space-Systems.git + +### PX4_MSGS +#RUN mkdir -p ~/ff_ws/src && cd ~/ff_ws/src +#RUN git clone https://github.com/DISCOWER/px4_msgs.git +#RUN cd ~/ff_ws && colcon build + +#RUN echo "source /home/kasm-user/ff_ws/install/setup.bash" >> /home/kasm-user/.bashrc + +# GPU enabling: +# https://bugs.launchpad.net/ubuntu/+source/nvidia-prime/+bug/1948362 +# RUN sudo apt install initramfs-tools && sudo prime-select nvidia + + + +######### End Customizations ########### + +RUN chown 1000:0 $HOME +RUN $STARTUPDIR/set_user_permission.sh $HOME +ENV HOME /home/kasm-user +WORKDIR $HOME +RUN mkdir -p $HOME && chown -R 1000:0 $HOME +USER 1000 + +CMD ["bash"] diff --git a/DockerFiles/run_kasm_ros.sh b/DockerFiles/run_kasm_ros.sh new file mode 100755 index 000000000000..0a3bdd7af30b --- /dev/null +++ b/DockerFiles/run_kasm_ros.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Configurable variables +DOCKER_IMAGE=62eb1ab76978 + +WEB_PORT=10334 +SSH_PORT=7901 +CONTAINER_NAME=ff_ros2_DISCOWER_container +VNC_PASSWORD=password +# NOETIC_BASE_DIR=${HOME}/workspace/ros_noetic + +# Check if a container with the same name already exists +if [ $(docker ps -aq -f name=^${CONTAINER_NAME}$) ]; then + echo "A container with the name $CONTAINER_NAME already exists." + # Choose what to do here: stop/remove the existing container, or exit + # docker stop $CONTAINER_NAME + # docker rm $CONTAINER_NAME + # or + exit 1 +fi + +# Run the Docker container +docker run -itd \ + --shm-size 32g \ + --runtime=nvidia \ + --gpus all\ + --privileged \ + -p $WEB_PORT:6901 \ + -p $SSH_PORT:22 \ + --security-opt seccomp=unconfined \ + -e VNC_PW=$VNC_PASSWORD \ + -e NVIDIA_DRIVER_CAPABILITIES=all \ + --name $CONTAINER_NAME \ + $DOCKER_IMAGE + #--volume="${NOETIC_BASE_DIR}:/home/kasm-user/workspace:Z" \ + +# Check if Docker run was successful +if [ $? -eq 0 ]; then + echo "Container $CONTAINER_NAME started successfully." +else + echo "Failed to start the container." + exit 1 +fi From 7d95205f82adc0edbe2896d7b240ec12b6da9316 Mon Sep 17 00:00:00 2001 From: joris997 Date: Thu, 4 Jul 2024 22:10:05 +0200 Subject: [PATCH 2/7] small fix for microros_ws source path --- DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER index 22343acb1f2d..89eab8e34a53 100644 --- a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER +++ b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER @@ -84,12 +84,10 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} #RUN mkdir microros_ws && cd microros_ws #RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup -#RUN apt update && sudo rosdep init && rosdep update && rosdep install --from-paths src --ignore-src -y -#RUN source /opt/ros/humble/setup.bash #RUN colcon build -#RUN echo "source /home/kasm-user/microros/install/local_setup.bash" >> /home/kasm-user/.bashrc -#RUN source /home/kasm-user/microros/install/local_setup.bash +#RUN echo "source /home/kasm-user/microros_ws/install/local_setup.bash" >> /home/kasm-user/.bashrc +#RUN source /home/kasm-user/microros_ws/install/local_setup.bash # Create firmware #RUN ros2 run micro_ros_setup create_firmware_ws.sh host @@ -107,7 +105,6 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} # https://gazebosim.org/docs/garden/install_ubuntu_src #RUN echo 'export PATH="/home/kasm-user/.local/bin:${PATH}"' >> /home/kasm-user/.bashrc -#RUN pip install vcstool #RUN mkdir -p ~/gazebo_ws/src && cd ~/gazebo_ws/src #RUN wget https://raw.githubusercontent.com/gazebo-tooling/gazebodistro/master/collection-garden.yaml @@ -119,8 +116,6 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} #RUN sudo apt -y install $(sort -u $(find . -iname 'packages-'`lsb_release -cs`'.apt' -o -iname 'packages.apt' | grep -v '/\.git/') | sed '/gz\|sdf/d' | tr '\n' ' ') -# output of transformer is probability distributio nfrom which you can sample -# frenet frames ################## # DISCOWER stuff # @@ -132,7 +127,10 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} #RUN cd ~/gazebo_ws/src #RUN rm -rf gz-sim && git clone https://github.com/DISCOWER/gz-sim.git #RUN cd ~/gazebo_ws/src/gz-sim && git pull && git checkout origin/pr-spacecraft-thrusters -#RUN cd ~/gazebo_ws && colcon build --merge-install && . ~/gazebo_ws/install/setup.bash +#RUN cd ~/gazebo_ws && colcon build --merge-install + +#RUN echo "source /home/kasm-user/gazebo_ws/install/setup.bash" >> /home/kasm-user/.bashrc +#RUN source /home/kasm-user/gazebo_ws/install/setup.bash ### PX4-SPACE-SYSTEMS #RUN mkdir ~/discower_gits && cd ~/discower_gits From 6404d8b7191856a74408a44f5636966d749a664e Mon Sep 17 00:00:00 2001 From: joris997 Date: Tue, 16 Jul 2024 09:33:05 +0200 Subject: [PATCH 3/7] added jsonscheme dependency --- DockerFiles/README.md | 6 +++--- DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DockerFiles/README.md b/DockerFiles/README.md index a5f93102a1e5..783c32048c3f 100644 --- a/DockerFiles/README.md +++ b/DockerFiles/README.md @@ -42,10 +42,10 @@ FOR NOW, run all the docker commands in `docker_file_kasm_ubuntu_jammy_DISCOWER` `cd ~/discower_gits/PX4-Space-Systems` `make px4_sitl gz_spacecraft_2d` -## Run micro-ROS +## Run micro-ROS -`ros2 run micro_ros_agent micro_ros_agent upd4 --port 8888` +`ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888` Now you should see the the /fmu/ topics being published! - + diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER index 89eab8e34a53..3b11613d5b61 100644 --- a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER +++ b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER @@ -80,7 +80,7 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} ############# # https://micro.ros.org/docs/tutorials/core/first_application_linux/ -#RUN pip install -U rosdep colcon-common-extensions +#RUN pip install -U rosdep colcon-common-extensions jsonschema #RUN mkdir microros_ws && cd microros_ws #RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup From 6cecbd3885f54d58d08dadb4043445bcaf938139 Mon Sep 17 00:00:00 2001 From: joris997 Date: Tue, 16 Jul 2024 14:15:08 +0200 Subject: [PATCH 4/7] added rough outline for QGroundControl (and qt) --- .../docker_file_kasm_ubuntu_jammy_DISCOWER | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER index 3b11613d5b61..e9c7c1e9faae 100644 --- a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER +++ b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER @@ -20,13 +20,13 @@ RUN apt-get update && apt-get upgrade -y && \ rm -rf /var/lib/apt/list/* && \ echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ true - + # Cleaning up junk #RUN apt-get purge -y thunderbird* && \ # apt-get remove -y google-chrome-stable gimp zoom signal-desktop obs-studio onlyoffice-desktopeditors sublime-text && \ # apt-get autoremove -y && \ # apt-get clean - + #RUN rm -f /home/kasm-user/Desktop/com.obsproject.Studio.desktop && \ # rm -f /home/kasm-user/Desktop/gimp.desktop && \ # rm -f /home/kasm-user/Desktop/google-chrome.desktop && \ @@ -36,7 +36,7 @@ RUN apt-get update && apt-get upgrade -y && \ # rm -f /home/kasm-user/Desktop/sublime_text.desktop && \ # rm -f /home/kasm-user/Desktop/telegram.desktop && \ # rm -f /home/kasm-user/Desktop/Zoom.desktop && \ -# rm -f /home/kasm-user/Desktop/thunderbird.desktop +# rm -f /home/kasm-user/Desktop/thunderbird.desktop # Installing utilities RUN apt-get update @@ -68,7 +68,7 @@ RUN apt-get update && apt-get install -y \ RUN rosdep init && rosdep update --rosdistro $ROS_DISTRO RUN apt-get update && apt-get install -y ros-humble-desktop - + RUN echo "source /opt/ros/humble/setup.bash" >> /home/kasm-user/.bashrc #RUN /bin/bash -c "source /opt/ros/humble/setup.bash && echo 'ROS2 IS SET UP'" @@ -117,6 +117,29 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} #RUN sudo apt -y install $(sort -u $(find . -iname 'packages-'`lsb_release -cs`'.apt' -o -iname 'packages.apt' | grep -v '/\.git/') | sed '/gz\|sdf/d' | tr '\n' ' ') + +################## +# QGroundControl # +################## +# RUN apt install aqtinstall +# RUN mkdir ~/qt && cd ~/qt +# RUN aqt install-qt linux desktop 6.6.3 gcc_64 -m qt5compat qtshadertools qtquick3d qtcharts qtconnectivity qtlocation qtmultimedia qtpositioning qtsensors qtserialport qtspeech +# append folder to CMAKE_PREFIX_PATH +# RUN echo "export CMAKE_PREFIX_PATH=/home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH" >> /home/kasm-user/.bashrc +# ENV CMAKE_PREFIX_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH +# ENV PATH /home/kasm-user/qt/6.6.3/gcc_64/bin:$PATH +# ENV LD_LIBRARY_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib:$LD_LIBRARY_PATH +# ENV QT_PLUGIN_PATH /home/kasm-user/qt/6.6.3/gcc_64/plugins:$QT_PLUGIN_PATH + +# https://docs.qgroundcontrol.com/master/en/qgc-dev-guide/getting_started/index.html +# RUN git clone --recursive https://github.com/DISCOWER/qgroundcontrol.git ~/qgroundcontrol +# RUN cd ~/qgroundcontrol +# RUN git submodule update --recursive +# RUN bash ./qgroundcontrol/tools/setup/install-dependencies-debian.sh +# RUN cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug +# RUN cmake --build build --config Debug + + ################## # DISCOWER stuff # ################## @@ -127,7 +150,7 @@ RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} #RUN cd ~/gazebo_ws/src #RUN rm -rf gz-sim && git clone https://github.com/DISCOWER/gz-sim.git #RUN cd ~/gazebo_ws/src/gz-sim && git pull && git checkout origin/pr-spacecraft-thrusters -#RUN cd ~/gazebo_ws && colcon build --merge-install +#RUN cd ~/gazebo_ws && colcon build --merge-install #RUN echo "source /home/kasm-user/gazebo_ws/install/setup.bash" >> /home/kasm-user/.bashrc #RUN source /home/kasm-user/gazebo_ws/install/setup.bash From 5a50bf7d25caea4400c680c511fe2adfb153b651 Mon Sep 17 00:00:00 2001 From: joris997 Date: Fri, 19 Jul 2024 15:34:23 +0200 Subject: [PATCH 5/7] working docker file using core-ubuntu-jammy, issue is image size! --- DockerFiles/README.md | 13 +- DockerFiles/docker_file_discower_GUI | 163 ++++++++++++++++ DockerFiles/docker_file_kasm_ubuntu_jammy | 26 --- .../docker_file_kasm_ubuntu_jammy_DISCOWER | 184 ------------------ DockerFiles/run_kasm_ros.sh | 4 +- 5 files changed, 169 insertions(+), 221 deletions(-) create mode 100644 DockerFiles/docker_file_discower_GUI delete mode 100644 DockerFiles/docker_file_kasm_ubuntu_jammy delete mode 100644 DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER diff --git a/DockerFiles/README.md b/DockerFiles/README.md index 783c32048c3f..1c6af2f0bf15 100644 --- a/DockerFiles/README.md +++ b/DockerFiles/README.md @@ -5,16 +5,12 @@ Installation instructions for the DISCOWER sitl docker image! https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html ## Then we obtain the default kasm docker image from here: https://hub.docker.com/r/kasmweb/ubuntu-jammy-desktop/tags -docker pull kasmweb/ubuntu-jammy-desktop:1.14.0-rolling +docker pull kasmweb/core-jammy-desktop:1.14.0-rolling # Build the docker -FOR NOW, use -`docker build -t ff_ros2_DISCOWER -f docker_file_kasm_ubuntu_jammy .` - -do not use `docker build -t ff_ros2_DISCOWER -f docker_file_kasm_ubuntu_jammy_DISCOWER .` now change the id that you get in 'docker image list' (IMAGE ID) in the run_kasm_ros.sh file (line 4) @@ -35,17 +31,16 @@ and go to your browser # In the docker instance -FOR NOW, run all the docker commands in `docker_file_kasm_ubuntu_jammy_DISCOWER` in the terminal (sometimes you need to use sudo, but it should all work). ## Run the PX4 sim `cd ~/discower_gits/PX4-Space-Systems` `make px4_sitl gz_spacecraft_2d` -## Run micro-ROS +## Run micro-ROS -`ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888` +`ros2 run micro_ros_agent micro_ros_agent upd4 --port 8888` Now you should see the the /fmu/ topics being published! - + diff --git a/DockerFiles/docker_file_discower_GUI b/DockerFiles/docker_file_discower_GUI new file mode 100644 index 000000000000..f30a948e7532 --- /dev/null +++ b/DockerFiles/docker_file_discower_GUI @@ -0,0 +1,163 @@ +FROM kasmweb/core-ubuntu-jammy:1.14.0-rolling +USER root +ENV HOME /home/kasm-default-profile +ENV STARTUPDIR /dockerstartup +ENV INST_SCRIPTS $STARTUPDIR/install +WORKDIR $HOME + + +######### Customize Container Here ########### +ARG KUH=/home/kasm-user +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y libomp5 zsh bash && \ + rm -rf /var/lib/apt/list/* && \ + echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ + true + + + +######### +# ROS 2 # +######### +# https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +ENV ROS_DISTRO humble +ENV ROS_PYTHON_VERSION 3 + +RUN add-apt-repository universe +RUN apt-get update && apt install -y curl +RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg +RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null + +RUN apt-get update && apt-get install -y \ + software-properties-common \ + build-essential \ + python3-colcon-common-extensions \ + python3-rosdep \ + python3-vcstool \ + && rm -rf /var/lib/apt/lists* +RUN rosdep init && rosdep update + +RUN apt-get update && apt-get install -y ros-humble-desktop + +RUN echo "source /opt/ros/humble/setup.bash" >> /home/kasm-user/.bashrc +RUN ["/bin/bash", "-c", "source /opt/ros/humble/setup.bash"] + + + +############# +# Micro-ROS # +############# +# https://micro.ros.org/docs/tutorials/core/first_application_linux/ +RUN apt-get install -y python3-pip +RUN pip install -U rosdep colcon-common-extensions jsonschema + +RUN mkdir -p /home/kasm-user/microros_ws/src && cd /home/kasm-user/microros_ws +RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git /home/kasm-user/microros_ws/src/micro_ros_setup + +WORKDIR /home/kasm-user/microros_ws +RUN rosdep update --rosdistro humble && rosdep install --from-paths src --ignore-src -y +RUN . /opt/ros/humble/setup.sh && colcon build + +RUN ls /home/kasm-user/microros_ws/src/micro_ros_setup +RUN echo "source /home/kasm-user/microros_ws/install/local_setup.bash" >> /home/kasm-user/.bashrc +RUN . /home/kasm-user/microros_ws/install/local_setup.sh + + +# Create firmware +RUN . /opt/ros/humble/setup.sh && . /home/kasm-user/microros_ws/install/local_setup.sh && ros2 run micro_ros_setup create_firmware_ws.sh host +RUN . /opt/ros/humble/setup.sh && . /home/kasm-user/microros_ws/install/local_setup.sh && ros2 run micro_ros_setup build_firmware.sh + +# Create mciro-ROS agent +RUN . /opt/ros/humble/setup.sh && . /home/kasm-user/microros_ws/install/local_setup.sh && ros2 run micro_ros_setup create_agent_ws.sh +RUN . /opt/ros/humble/setup.sh && . /home/kasm-user/microros_ws/install/local_setup.sh && ros2 run micro_ros_setup build_agent.sh + + + +################# +# Gazebo Garden # +################# +# https://gazebosim.org/docs/garden/install_ubuntu_src +RUN echo 'export PATH="/home/kasm-user/.local/bin:${PATH}"' >> /home/kasm-user/.bashrc + +RUN mkdir -p /home/kasm-user/gazebo_ws/src +WORKDIR /home/kasm-user/gazebo_ws/src +RUN wget https://raw.githubusercontent.com/gazebo-tooling/gazebodistro/master/collection-garden.yaml -P /home/kasm-user/gazebo_ws/src +RUN ls /home/kasm-user/gazebo_ws/src +RUN vcs import < collection-garden.yaml + +RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg +RUN 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" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null +RUN apt-get update + +RUN sudo apt -y install $(sort -u $(find . -iname 'packages-'`lsb_release -cs`'.apt' -o -iname 'packages.apt' | grep -v '/\.git/') | sed '/gz\|sdf/d' | tr '\n' ' ') + + + +################## +# QGroundControl # +################## +RUN pip install aqtinstall +RUN mkdir /home/kasm-user/qt +WORKDIR /kasm-user/qt +RUN aqt install-qt --outputdir /home/kasm-user/qt linux desktop 6.6.3 gcc_64 -m qt5compat qtshadertools qtquick3d qtcharts qtconnectivity qtlocation qtmultimedia qtpositioning qtsensors qtserialport qtspeech + +# append folder to CMAKE_PREFIX_PATH +RUN echo "export CMAKE_PREFIX_PATH=/home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH" >> /home/kasm-user/.bashrc +ENV CMAKE_PREFIX_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH +ENV PATH /home/kasm-user/qt/6.6.3/gcc_64/bin:$PATH +ENV LD_LIBRARY_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib:$LD_LIBRARY_PATH +ENV QT_PLUGIN_PATH /home/kasm-user/qt/6.6.3/gcc_64/plugins:$QT_PLUGIN_PATH + +RUN ls /home/kasm-user/qt/6.6.3 +# https://docs.qgroundcontrol.com/master/en/qgc-dev-guide/getting_started/index.html +WORKDIR /home/kasm-user/qgroundcontrol +RUN git clone --recursive https://github.com/DISCOWER/qgroundcontrol.git /home/kasm-user/qgroundcontrol +RUN cd /home/kasm-user/qgroundcontrol && git submodule update --recursive +RUN . /home/kasm-user/qgroundcontrol/tools/setup/install-dependencies-debian.sh +RUN cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug +RUN cmake --build build --config Debug + + + +################## +# DISCOWER stuff # +################## +### CUSTOM GZ-SIM +RUN pip install kconfiglib symforce pyros-genmsg future + +# We replace gz-sim with our DISCOWER version (for spacecraft) +WORKDIR /home/kasm-user/gazebo_ws +RUN cd /home/kasm-user/gazebo_ws/src +RUN rm -rf /home/kasm-user/gazebo_ws/src/gz-sim && git clone -b pr-spacecraft-thrusters https://github.com/DISCOWER/gz-sim.git /home/kasm-user/gazebo_ws/src/gz-sim + +#RUN apt-get update && apt-get install -y libgz-cmake3-dev +RUN ls /home/kasm-user/gazebo_ws/src +RUN . /opt/ros/humble/setup.sh && colcon build --merge-install + +RUN echo "source /home/kasm-user/gazebo_ws/install/setup.bash" >> /home/kasm-user/.bashrc + +### PX4-SPACE-SYSTEMS +RUN mkdir /home/kasm-user/discower_gits +WORKDIR /home/kasm-user/discower_gits +RUN git clone https://github.com/DISCOWER/PX4-Space-Systems.git /home/kasm-user/discower_gits/PX4-Space-Systems + +### PX4_MSGS +RUN mkdir -p /home/kasm-user/ff_ws/src +RUN git clone https://github.com/DISCOWER/px4_msgs.git /home/kasm-user/ff_ws/src/px4_msgs +WORKDIR /home/kasm-user/ff_ws +RUN . /opt/ros/humble/setup.sh && colcon build + +RUN echo "source /home/kasm-user/ff_ws/install/setup.bash" >> /home/kasm-user/.bashrc + +######### End Customizations ########### + +RUN mkdir -p /home/kasm-user/Desktop/Uploads + +RUN chown 1000:0 $HOME +RUN $STARTUPDIR/set_user_permission.sh $HOME +ENV HOME /home/kasm-user +WORKDIR $HOME +RUN mkdir -p $HOME && chown -R 1000:0 $HOME +USER 1000 diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy b/DockerFiles/docker_file_kasm_ubuntu_jammy deleted file mode 100644 index 671bfacc6d04..000000000000 --- a/DockerFiles/docker_file_kasm_ubuntu_jammy +++ /dev/null @@ -1,26 +0,0 @@ -FROM kasmweb/ubuntu-jammy-desktop:1.14.0-rolling -USER root -ENV HOME /home/kasm-default-profile -ENV STARTUPDIR /dockerstartup -ENV INST_SCRIPTS $STARTUPDIR/install -WORKDIR $HOME - - -######### Customize Container Here ########### -ARG KUH=/home/kasm-user -RUN apt-get update && apt-get upgrade -y && \ - apt-get install -y libomp5 && \ - apt-get install -y sudo zsh && \ - rm -rf /var/lib/apt/list/* && \ - echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ - true - -######### End Customizations ########### - - -RUN chown 1000:0 $HOME -RUN $STARTUPDIR/set_user_permission.sh $HOME -ENV HOME /home/kasm-user -WORKDIR $HOME -RUN mkdir -p $HOME && chown -R 1000:0 $HOME -USER 1000 diff --git a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER b/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER deleted file mode 100644 index e9c7c1e9faae..000000000000 --- a/DockerFiles/docker_file_kasm_ubuntu_jammy_DISCOWER +++ /dev/null @@ -1,184 +0,0 @@ -FROM kasmweb/ubuntu-jammy-desktop:1.14.0-rolling -USER root - -#RUN rm /bin/sh && ln -s /bin/bash /bin/sh -#SHELL ["/bin/bash", "-c"] - -ENV HOME /home/kasm-default-profile -ENV STARTUPDIR /dockerstartup -ENV INST_SCRIPTS $STARTUPDIR/install -WORKDIR $HOME - -######### Customize Container Here ########### - - - -ARG KUH=/home/kasm-user -RUN apt-get update && apt-get upgrade -y && \ - apt-get install -y libomp5 && \ - apt-get install -y sudo zsh && \ - rm -rf /var/lib/apt/list/* && \ - echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \ - true - -# Cleaning up junk -#RUN apt-get purge -y thunderbird* && \ -# apt-get remove -y google-chrome-stable gimp zoom signal-desktop obs-studio onlyoffice-desktopeditors sublime-text && \ -# apt-get autoremove -y && \ -# apt-get clean - -#RUN rm -f /home/kasm-user/Desktop/com.obsproject.Studio.desktop && \ -# rm -f /home/kasm-user/Desktop/gimp.desktop && \ -# rm -f /home/kasm-user/Desktop/google-chrome.desktop && \ -# rm -f /home/kasm-user/Desktop/nextcloud.desktop && \ -# rm -f /home/kasm-user/Desktop/onlyoffice-desktopeditors.desktop && \ -# rm -f /home/kasm-user/Desktop/signal-desktop.desktop && \ -# rm -f /home/kasm-user/Desktop/sublime_text.desktop && \ -# rm -f /home/kasm-user/Desktop/telegram.desktop && \ -# rm -f /home/kasm-user/Desktop/Zoom.desktop && \ -# rm -f /home/kasm-user/Desktop/thunderbird.desktop - -# Installing utilities -RUN apt-get update -RUN apt-get install -y terminator gedit - - - -######### -# ROS 2 # -######### -# https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 -ENV ROS_DISTRO humble -ENV ROS_PYTHON_VERSION 3 - -RUN add-apt-repository universe -RUN apt-get update && apt install -y curl -RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg -RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null - -RUN apt-get update && apt-get install -y \ - software-properties-common \ - build-essential \ - python3-colcon-common-extensions \ - python3-rosdep \ - python3-vcstool \ - && rm -rf /var/lib/apt/lists* -RUN rosdep init && rosdep update --rosdistro $ROS_DISTRO - -RUN apt-get update && apt-get install -y ros-humble-desktop - -RUN echo "source /opt/ros/humble/setup.bash" >> /home/kasm-user/.bashrc - -#RUN /bin/bash -c "source /opt/ros/humble/setup.bash && echo 'ROS2 IS SET UP'" -RUN . /opt/ros/humble/setup.sh && echo ${AMENT_PREFIX_PATH} - - -############# -# Micro-ROS # -############# -# https://micro.ros.org/docs/tutorials/core/first_application_linux/ - -#RUN pip install -U rosdep colcon-common-extensions jsonschema - -#RUN mkdir microros_ws && cd microros_ws -#RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup -#RUN colcon build - -#RUN echo "source /home/kasm-user/microros_ws/install/local_setup.bash" >> /home/kasm-user/.bashrc -#RUN source /home/kasm-user/microros_ws/install/local_setup.bash - -# Create firmware -#RUN ros2 run micro_ros_setup create_firmware_ws.sh host -#RUN ros2 run micro_ros_setup build_firmware.sh - -# Create mciro-ROS agent -#RUN ros2 run micro_ros_setup create_agent_ws.sh -#RUN ros2 run micro_ros_setup build_agent.sh - - - -################# -# Gazebo Garden # -################# -# https://gazebosim.org/docs/garden/install_ubuntu_src - -#RUN echo 'export PATH="/home/kasm-user/.local/bin:${PATH}"' >> /home/kasm-user/.bashrc - -#RUN mkdir -p ~/gazebo_ws/src && cd ~/gazebo_ws/src -#RUN wget https://raw.githubusercontent.com/gazebo-tooling/gazebodistro/master/collection-garden.yaml -#RUN vcs import < collection-garden.yaml - -#RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg -#RUN 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" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null -#RUN apt-get update - -#RUN sudo apt -y install $(sort -u $(find . -iname 'packages-'`lsb_release -cs`'.apt' -o -iname 'packages.apt' | grep -v '/\.git/') | sed '/gz\|sdf/d' | tr '\n' ' ') - - - -################## -# QGroundControl # -################## -# RUN apt install aqtinstall -# RUN mkdir ~/qt && cd ~/qt -# RUN aqt install-qt linux desktop 6.6.3 gcc_64 -m qt5compat qtshadertools qtquick3d qtcharts qtconnectivity qtlocation qtmultimedia qtpositioning qtsensors qtserialport qtspeech -# append folder to CMAKE_PREFIX_PATH -# RUN echo "export CMAKE_PREFIX_PATH=/home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH" >> /home/kasm-user/.bashrc -# ENV CMAKE_PREFIX_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib/cmake:$CMAKE_PREFIX_PATH -# ENV PATH /home/kasm-user/qt/6.6.3/gcc_64/bin:$PATH -# ENV LD_LIBRARY_PATH /home/kasm-user/qt/6.6.3/gcc_64/lib:$LD_LIBRARY_PATH -# ENV QT_PLUGIN_PATH /home/kasm-user/qt/6.6.3/gcc_64/plugins:$QT_PLUGIN_PATH - -# https://docs.qgroundcontrol.com/master/en/qgc-dev-guide/getting_started/index.html -# RUN git clone --recursive https://github.com/DISCOWER/qgroundcontrol.git ~/qgroundcontrol -# RUN cd ~/qgroundcontrol -# RUN git submodule update --recursive -# RUN bash ./qgroundcontrol/tools/setup/install-dependencies-debian.sh -# RUN cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -# RUN cmake --build build --config Debug - - -################## -# DISCOWER stuff # -################## -### CUSTOM GZ-SIM -#RUN pip install kconfiglib symforce pyros-genmsg future - -# We replace gz-sim with our DISCOWER version (for spacecraft) -#RUN cd ~/gazebo_ws/src -#RUN rm -rf gz-sim && git clone https://github.com/DISCOWER/gz-sim.git -#RUN cd ~/gazebo_ws/src/gz-sim && git pull && git checkout origin/pr-spacecraft-thrusters -#RUN cd ~/gazebo_ws && colcon build --merge-install - -#RUN echo "source /home/kasm-user/gazebo_ws/install/setup.bash" >> /home/kasm-user/.bashrc -#RUN source /home/kasm-user/gazebo_ws/install/setup.bash - -### PX4-SPACE-SYSTEMS -#RUN mkdir ~/discower_gits && cd ~/discower_gits -#RUN git clone https://github.com/DISCOWER/PX4-Space-Systems.git - -### PX4_MSGS -#RUN mkdir -p ~/ff_ws/src && cd ~/ff_ws/src -#RUN git clone https://github.com/DISCOWER/px4_msgs.git -#RUN cd ~/ff_ws && colcon build - -#RUN echo "source /home/kasm-user/ff_ws/install/setup.bash" >> /home/kasm-user/.bashrc - -# GPU enabling: -# https://bugs.launchpad.net/ubuntu/+source/nvidia-prime/+bug/1948362 -# RUN sudo apt install initramfs-tools && sudo prime-select nvidia - - - -######### End Customizations ########### - -RUN chown 1000:0 $HOME -RUN $STARTUPDIR/set_user_permission.sh $HOME -ENV HOME /home/kasm-user -WORKDIR $HOME -RUN mkdir -p $HOME && chown -R 1000:0 $HOME -USER 1000 - -CMD ["bash"] diff --git a/DockerFiles/run_kasm_ros.sh b/DockerFiles/run_kasm_ros.sh index 0a3bdd7af30b..fbaba81a6f1c 100755 --- a/DockerFiles/run_kasm_ros.sh +++ b/DockerFiles/run_kasm_ros.sh @@ -1,11 +1,11 @@ #!/bin/bash # Configurable variables -DOCKER_IMAGE=62eb1ab76978 +DOCKER_IMAGE=599631481fe0 WEB_PORT=10334 SSH_PORT=7901 -CONTAINER_NAME=ff_ros2_DISCOWER_container +CONTAINER_NAME=discower_GUI VNC_PASSWORD=password # NOETIC_BASE_DIR=${HOME}/workspace/ros_noetic From 72533a3903d9106dbbbb3a5fa3824de1c1e33cab Mon Sep 17 00:00:00 2001 From: joris997 Date: Tue, 23 Jul 2024 16:44:31 +0200 Subject: [PATCH 6/7] fix: removed bash in sh file --- DockerFiles/run_kasm_ros.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/DockerFiles/run_kasm_ros.sh b/DockerFiles/run_kasm_ros.sh index fbaba81a6f1c..09b7d47b11da 100755 --- a/DockerFiles/run_kasm_ros.sh +++ b/DockerFiles/run_kasm_ros.sh @@ -1,5 +1,3 @@ -#!/bin/bash - # Configurable variables DOCKER_IMAGE=599631481fe0 From a4739d3f54763c91fe693eaef80a7dc930eadcdc Mon Sep 17 00:00:00 2001 From: joris997 Date: Tue, 23 Jul 2024 16:52:26 +0200 Subject: [PATCH 7/7] feat: added detection of nvidia-smi command --- DockerFiles/run_kasm_ros.sh | 40 +++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/DockerFiles/run_kasm_ros.sh b/DockerFiles/run_kasm_ros.sh index 09b7d47b11da..f38c12a086b7 100755 --- a/DockerFiles/run_kasm_ros.sh +++ b/DockerFiles/run_kasm_ros.sh @@ -18,19 +18,33 @@ if [ $(docker ps -aq -f name=^${CONTAINER_NAME}$) ]; then fi # Run the Docker container -docker run -itd \ - --shm-size 32g \ - --runtime=nvidia \ - --gpus all\ - --privileged \ - -p $WEB_PORT:6901 \ - -p $SSH_PORT:22 \ - --security-opt seccomp=unconfined \ - -e VNC_PW=$VNC_PASSWORD \ - -e NVIDIA_DRIVER_CAPABILITIES=all \ - --name $CONTAINER_NAME \ - $DOCKER_IMAGE - #--volume="${NOETIC_BASE_DIR}:/home/kasm-user/workspace:Z" \ +if command -v nvidia-smi &> /dev/null; then + # if we have an nvidia GPU + docker run -itd \ + --shm-size 32g \ + --runtime=nvidia \ + --gpus all \ + --privileged \ + -p $WEB_PORT:6901 \ + -p $SSH_PORT:22 \ + --security-opt seccomp=unconfined \ + -e VNC_PW=$VNC_PASSWORD \ + -e NVIDIA_DRIVER_CAPABILITIES=all \ + --name $CONTAINER_NAME \ + $DOCKER_IMAGE + #--volume="${NOETIC_BASE_DIR}:/home/kasm-user/workspace:Z" \ +else + docker run -itd \ + --shm-size 32g \ + --privileged \ + -p $WEB_PORT:6901 \ + -p $SSH_PORT:22 \ + --security-opt seccomp=unconfined \ + -e VNC_PW=$VNC_PASSWORD \ + --name $CONTAINER_NAME \ + $DOCKER_IMAGE + #--volume="${NOETIC_BASE_DIR}:/home/kasm-user/workspace:Z" \ +fi # Check if Docker run was successful if [ $? -eq 0 ]; then