diff --git a/Readme.ipynb b/Readme.ipynb new file mode 100644 index 0000000..4effe49 --- /dev/null +++ b/Readme.ipynb @@ -0,0 +1,864 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "#ReadMe" + ], + "metadata": { + "id": "WxCB3JeR1jBM" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Drone Navigation with Reinforcement Learning (PPO)" + ], + "metadata": { + "id": "WH1eggRshYbj" + } + }, + { + "cell_type": "markdown", + "source": [ + "## intro" + ], + "metadata": { + "id": "dqslUndShgJv" + } + }, + { + "cell_type": "markdown", + "source": [ + "In this research project, we focus on developing a reinforcement learning (RL)-based framework for autonomous drone navigation in a dynamic 3D environment. By leveraging the power of PyBullet for physics-based simulations and the Proximal Policy Optimization (PPO) algorithm, we aim to design a system where drones can efficiently navigate from a designated starting point to a target while avoiding obstacles in their path." + ], + "metadata": { + "id": "oCmhtlq0kB-d" + } + }, + { + "cell_type": "markdown", + "source": [ + "This project implements a custom environment for drone navigation using reinforcement learning (Proximal Policy Optimization - PPO). The environment leverages PyBullet for realistic physics-based simulation, allowing a drone to navigate from a dynamic starting point to a target point while avoiding obstacles.\n" + ], + "metadata": { + "id": "QifAUjSihkTa" + } + }, + { + "cell_type": "markdown", + "source": [ + "The main task for the reinforcement learning agent is as follows:\n", + "\n", + "Goal: Navigate the drone from a randomly generated starting point to a target point in a 3D space, while avoiding dynamically placed shaded areas (obstacles).\n", + "The shaded areas represent zones that must be avoided, and they change in position for each episode.\n", + "The drone is rewarded for efficient navigation and penalized for:\n", + "Colliding with obstacles.\n", + "Failing to reach the target within a predefined number of steps.\n", + "The action space involves continuous rotor forces to control the drone's movement.\n", + "Each episode challenges the agent to adjust its navigation strategy based on the dynamic environment.\n", + "\n" + ], + "metadata": { + "id": "y2KiDGwJhyvn" + } + }, + { + "cell_type": "markdown", + "source": [ + "##Key Goals of the Research" + ], + "metadata": { + "id": "jRPB2L-JkIe7" + } + }, + { + "cell_type": "markdown", + "source": [ + "Dynamic Path Planning:\n", + "Our primary goal is to teach drones to autonomously compute and execute efficient navigation strategies in real-time. The system incorporates dynamic obstacles and randomly changing target locations, pushing the drone to adapt to environmental changes while maintaining optimal performance.\n", + "\n", + "Reinforcement Learning for Navigation:\n", + "To achieve this, we employ Proximal Policy Optimization (PPO), a state-of-the-art reinforcement learning algorithm, which allows the drone to continuously improve its performance by learning from interactions with the environment. Through trial and error, the drone optimizes its rotor control, collision avoidance, and trajectory planning.\n", + "\n", + "Custom PyBullet Environment:\n", + "The simulation environment is designed using PyBullet, a versatile physics engine that provides real-time simulations of rigid body dynamics. This setup allows for realistic testing of drone behaviors, including rotor control, movement in a 3D space, and interactions with obstacles, ensuring that the agent learns to navigate effectively under realistic conditions.\n", + "\n", + "Visualization and Analysis:\n", + "The project includes visualizing the drone’s trajectory and monitoring its performance. This allows us to analyze the efficiency and effectiveness of the trained RL agent in navigating complex environments. By generating dynamic visual plots, we can track the agent’s learning progress and assess its ability to avoid obstacles and reach targets in diverse scenarios." + ], + "metadata": { + "id": "E3j28DbmkeTu" + } + }, + { + "cell_type": "markdown", + "source": [ + "##Overview" + ], + "metadata": { + "id": "I67aqqRaicDj" + } + }, + { + "cell_type": "markdown", + "source": [ + "The goal is to teach a drone how to navigate from a randomly generated starting point to a target point while avoiding dynamically changing obstacles. This project uses PyBullet for physics-based simulation and TF-Agents for reinforcement learning.\n", + "\n", + "By the end of this project, our target was to :\n", + "\n", + "A fully functional custom environment for drone navigation.\n", + "A trained PPO agent capable of learning optimal navigation strategies.\n", + "Visualization of the drone's trajectory in a 3D space.\n" + ], + "metadata": { + "id": "PfEqAG_JijfA" + } + }, + { + "cell_type": "markdown", + "source": [ + "##🧠 What’s Our final actievements ?" + ], + "metadata": { + "id": "1gDPIsYiiySM" + } + }, + { + "cell_type": "markdown", + "source": [ + "Custom Environment Design:\n", + "\n", + "Define observation and action spaces.\n", + "Set up rewards and penalties for drone navigation.\n", + "Dynamically generate obstacles and targets.\n", + "PPO Algorithm:\n", + "\n", + "Train an RL agent to control the drone's rotors.\n", + "Use TF-Agents to implement PPO.\n", + "Simulation with PyBullet:\n", + "\n", + "Visualize the drone, obstacles, and target in a 3D environment.\n", + "\n", + "\n" + ], + "metadata": { + "id": "KSRQpAvtiyLM" + } + }, + { + "cell_type": "markdown", + "source": [ + " Our focus on key challenges such as:\n", + "\n", + "Efficient navigation with minimal communication.\n", + "Handling dynamic and unpredictable environments.\n", + "Leveraging reinforcement learning to autonomously improve drone performance over time." + ], + "metadata": { + "id": "-vJT81f7s-5S" + } + }, + { + "cell_type": "markdown", + "source": [ + "##Getting Started" + ], + "metadata": { + "id": "lwwXwsuatwVW" + } + }, + { + "cell_type": "markdown", + "source": [ + "###Dependencies & Packages:\n", + "\n", + "---\n" + ], + "metadata": { + "id": "tUKQ4dMh2Y-i" + } + }, + { + "cell_type": "markdown", + "source": [ + "- Ubuntu 16.04\n", + "- ROS Kinetic\n", + "- Gazebo 7\n", + "- ArDrone Autonomy ROS Package\n", + "- gym: 0.9.3\n", + "- TensorFLow 1.1.0 (preferrable with GPU support)\n" + ], + "metadata": { + "id": "WBIi9TKb2VHS" + } + }, + { + "cell_type": "markdown", + "source": [ + "###Prerequisites\n", + "\n", + "\n", + "---\n" + ], + "metadata": { + "id": "B5PnmSC0t5eg" + } + }, + { + "cell_type": "markdown", + "source": [ + "Before you begin, ensure you have the following installed:\n", + "\n", + "Python 3.8+\n", + "\n", + "PyBullet (pip install pybullet)\n", + "\n", + "TensorFlow (pip install tensorflow)\n", + "\n", + "TF-Agents (pip install tf-agents)\n", + "\n", + "NumPy, Matplotlib, and other required libraries (pip install numpy matplotlib)." + ], + "metadata": { + "id": "BMdQBefQuA1H" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install pybullet\n", + "!pip install tensorflow\n", + "!pip install tf-agents\n", + "!pip install numpy matplotlib" + ], + "metadata": { + "id": "YV1hJ29xu2IX", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3daef0e7-0d98-4e35-bb1f-59c90b083b29" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting pybullet\n", + " Downloading pybullet-3.2.7.tar.gz (80.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m80.5/80.5 MB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Building wheels for collected packages: pybullet\n", + " Building wheel for pybullet (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for pybullet: filename=pybullet-3.2.7-cp312-cp312-linux_x86_64.whl size=99873453 sha256=5ec43fdba3345130bbb9e3736b34ab41dfc37a242ed6c5ff8877f371b3b88ae1\n", + " Stored in directory: /root/.cache/pip/wheels/72/95/1d/b336e5ee612ae9a019bfff4dc0bedd100ee6f0570db205fdf8\n", + "Successfully built pybullet\n", + "Installing collected packages: pybullet\n", + "Successfully installed pybullet-3.2.7\n", + "Requirement already satisfied: tensorflow in /usr/local/lib/python3.12/dist-packages (2.19.0)\n", + "Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (1.4.0)\n", + "Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (1.6.3)\n", + "Requirement already satisfied: flatbuffers>=24.3.25 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (25.9.23)\n", + "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (0.6.0)\n", + "Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (0.2.0)\n", + "Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (18.1.1)\n", + "Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (3.4.0)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.12/dist-packages (from tensorflow) (25.0)\n", + "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.3 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (5.29.5)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (2.32.4)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.12/dist-packages (from tensorflow) (75.2.0)\n", + "Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (1.17.0)\n", + "Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (3.2.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (4.15.0)\n", + "Requirement already satisfied: wrapt>=1.11.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (2.0.1)\n", + "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (1.76.0)\n", + "Requirement already satisfied: tensorboard~=2.19.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (2.19.0)\n", + "Requirement already satisfied: keras>=3.5.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (3.10.0)\n", + "Requirement already satisfied: numpy<2.2.0,>=1.26.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (2.0.2)\n", + "Requirement already satisfied: h5py>=3.11.0 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (3.15.1)\n", + "Requirement already satisfied: ml-dtypes<1.0.0,>=0.5.1 in /usr/local/lib/python3.12/dist-packages (from tensorflow) (0.5.4)\n", + "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.12/dist-packages (from astunparse>=1.6.0->tensorflow) (0.45.1)\n", + "Requirement already satisfied: rich in /usr/local/lib/python3.12/dist-packages (from keras>=3.5.0->tensorflow) (13.9.4)\n", + "Requirement already satisfied: namex in /usr/local/lib/python3.12/dist-packages (from keras>=3.5.0->tensorflow) (0.1.0)\n", + "Requirement already satisfied: optree in /usr/local/lib/python3.12/dist-packages (from keras>=3.5.0->tensorflow) (0.18.0)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2.21.0->tensorflow) (3.4.4)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2.21.0->tensorflow) (3.11)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2.21.0->tensorflow) (2.5.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2.21.0->tensorflow) (2025.11.12)\n", + "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.12/dist-packages (from tensorboard~=2.19.0->tensorflow) (3.10)\n", + "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.12/dist-packages (from tensorboard~=2.19.0->tensorflow) (0.7.2)\n", + "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.12/dist-packages (from tensorboard~=2.19.0->tensorflow) (3.1.3)\n", + "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.12/dist-packages (from werkzeug>=1.0.1->tensorboard~=2.19.0->tensorflow) (3.0.3)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.12/dist-packages (from rich->keras>=3.5.0->tensorflow) (4.0.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.12/dist-packages (from rich->keras>=3.5.0->tensorflow) (2.19.2)\n", + "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.12/dist-packages (from markdown-it-py>=2.2.0->rich->keras>=3.5.0->tensorflow) (0.1.2)\n", + "Collecting tf-agents\n", + " Downloading tf_agents-0.19.0-py3-none-any.whl.metadata (12 kB)\n", + "Requirement already satisfied: absl-py>=0.6.1 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (1.4.0)\n", + "Requirement already satisfied: cloudpickle>=1.3 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (3.1.2)\n", + "Requirement already satisfied: gin-config>=0.4.0 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (0.5.0)\n", + "Collecting gym<=0.23.0,>=0.17.0 (from tf-agents)\n", + " Downloading gym-0.23.0.tar.gz (624 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m624.4/624.4 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: numpy>=1.19.0 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (2.0.2)\n", + "Requirement already satisfied: pillow in /usr/local/lib/python3.12/dist-packages (from tf-agents) (11.3.0)\n", + "Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (1.17.0)\n", + "Requirement already satisfied: protobuf>=3.11.3 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (5.29.5)\n", + "Requirement already satisfied: wrapt>=1.11.1 in /usr/local/lib/python3.12/dist-packages (from tf-agents) (2.0.1)\n", + "Collecting typing-extensions==4.5.0 (from tf-agents)\n", + " Downloading typing_extensions-4.5.0-py3-none-any.whl.metadata (8.5 kB)\n", + "Collecting pygame==2.1.3 (from tf-agents)\n", + " Downloading pygame-2.1.3.tar.gz (12.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.8/12.8 MB\u001b[0m \u001b[31m16.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h \u001b[1;31merror\u001b[0m: \u001b[1msubprocess-exited-with-error\u001b[0m\n", + " \n", + " \u001b[31mΓ—\u001b[0m \u001b[32mpython setup.py egg_info\u001b[0m did not run successfully.\n", + " \u001b[31mβ”‚\u001b[0m exit code: \u001b[1;36m1\u001b[0m\n", + " \u001b[31m╰─>\u001b[0m See above for output.\n", + " \n", + " \u001b[1;35mnote\u001b[0m: This error originates from a subprocess, and is likely not a problem with pip.\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25herror\n", + "\u001b[1;31merror\u001b[0m: \u001b[1mmetadata-generation-failed\u001b[0m\n", + "\n", + "\u001b[31mΓ—\u001b[0m Encountered error while generating package metadata.\n", + "\u001b[31m╰─>\u001b[0m See above for output.\n", + "\n", + "\u001b[1;35mnote\u001b[0m: This is an issue with the package mentioned above, not pip.\n", + "\u001b[1;36mhint\u001b[0m: See above for details.\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.12/dist-packages (2.0.2)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.12/dist-packages (3.10.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.3.3)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (4.60.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.4.9)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (25.0)\n", + "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (11.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (3.2.5)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "47fd8050", + "outputId": "76357ad0-fe3c-4c2d-865c-88fa027935d1" + }, + "source": [ + "!apt-get update\n", + "!apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev pkg-config" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Hit:1 https://cli.github.com/packages stable InRelease\n", + "Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]\n", + "Get:3 https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/ InRelease [3,632 B]\n", + "Hit:4 http://archive.ubuntu.com/ubuntu jammy InRelease\n", + "Get:5 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease [1,581 B]\n", + "Get:6 https://r2u.stat.illinois.edu/ubuntu jammy InRelease [6,555 B]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]\n", + "Get:8 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease [18.1 kB]\n", + "Get:9 https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/ Packages [83.6 kB]\n", + "Hit:10 https://ppa.launchpadcontent.net/graphics-drivers/ppa/ubuntu jammy InRelease\n", + "Hit:11 https://ppa.launchpadcontent.net/ubuntugis/ppa/ubuntu jammy InRelease\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]\n", + "Get:13 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 Packages [2,196 kB]\n", + "Get:14 https://r2u.stat.illinois.edu/ubuntu jammy/main all Packages [9,506 kB]\n", + "Get:15 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1,286 kB]\n", + "Get:16 https://r2u.stat.illinois.edu/ubuntu jammy/main amd64 Packages [2,841 kB]\n", + "Get:17 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 Packages [38.8 kB]\n", + "Get:18 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [6,066 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,598 kB]\n", + "Get:20 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [3,563 kB]\n", + "Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [3,901 kB]\n", + "Get:22 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [6,281 kB]\n", + "Fetched 37.8 MB in 5s (8,158 kB/s)\n", + "Reading package lists... Done\n", + "W: Skipping acquire of configured file 'main/source/Sources' as repository 'https://r2u.stat.illinois.edu/ubuntu jammy InRelease' does not seem to provide it (sources.list entry misspelt?)\n", + "Reading package lists... Done\n", + "Building dependency tree... Done\n", + "Reading state information... Done\n", + "The following packages were automatically installed and are no longer required:\n", + " libbz2-dev libpkgconf3 libreadline-dev\n", + "Use 'apt autoremove' to remove them.\n", + "The following additional packages will be installed:\n", + " gir1.2-ibus-1.0 libasound2-dev libdbus-1-dev libdecor-0-dev libdrm-dev\n", + " libegl-dev libegl1-mesa-dev libfluidsynth3 libgbm-dev libgl-dev libgles-dev\n", + " libgles1 libglu1-mesa libglu1-mesa-dev libglvnd-core-dev libglvnd-dev\n", + " libglx-dev libibus-1.0-5 libibus-1.0-dev libinstpatch-1.0-2 libmodplug1\n", + " libopengl-dev libopusfile0 libpciaccess-dev libpulse-dev\n", + " libpulse-mainloop-glib0 libsdl2-image-2.0-0 libsdl2-mixer-2.0-0\n", + " libsdl2-ttf-2.0-0 libsndio-dev libudev-dev libudev1 libwayland-bin\n", + " libwayland-dev libxcursor-dev libxfixes-dev libxi-dev libxinerama-dev\n", + " libxkbcommon-dev libxrandr-dev libxt-dev libxv-dev libxxf86vm-dev\n", + " timgm6mb-soundfont\n", + "Suggested packages:\n", + " libasound2-doc libwayland-doc libxt-doc fluid-soundfont-gm\n", + "The following packages will be REMOVED:\n", + " pkgconf r-base-dev\n", + "The following NEW packages will be installed:\n", + " gir1.2-ibus-1.0 libasound2-dev libdbus-1-dev libdecor-0-dev libdrm-dev\n", + " libegl-dev libegl1-mesa-dev libfluidsynth3 libgbm-dev libgl-dev libgles-dev\n", + " libgles1 libglu1-mesa libglu1-mesa-dev libglvnd-core-dev libglvnd-dev\n", + " libglx-dev libibus-1.0-5 libibus-1.0-dev libinstpatch-1.0-2 libmodplug1\n", + " libopengl-dev libopusfile0 libpciaccess-dev libpulse-dev\n", + " libpulse-mainloop-glib0 libsdl2-dev libsdl2-image-2.0-0 libsdl2-image-dev\n", + " libsdl2-mixer-2.0-0 libsdl2-mixer-dev libsdl2-ttf-2.0-0 libsdl2-ttf-dev\n", + " libsndio-dev libudev-dev libwayland-bin libwayland-dev libxcursor-dev\n", + " libxfixes-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev\n", + " libxt-dev libxv-dev libxxf86vm-dev pkg-config timgm6mb-soundfont\n", + "The following packages will be upgraded:\n", + " libudev1\n", + "1 upgraded, 48 newly installed, 2 to remove and 64 not upgraded.\n", + "Need to get 11.0 MB of archives.\n", + "After this operation, 34.6 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 pkg-config amd64 0.29.2-1ubuntu3 [48.2 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libudev1 amd64 249.11-0ubuntu3.17 [76.7 kB]\n", + "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 libibus-1.0-5 amd64 1.5.26-4 [183 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 gir1.2-ibus-1.0 amd64 1.5.26-4 [88.3 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libasound2-dev amd64 1.2.6.1-1ubuntu1 [110 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libdbus-1-dev amd64 1.12.20-2ubuntu4.1 [188 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-bin amd64 1.20.0-1ubuntu0.1 [20.4 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-dev amd64 1.20.0-1ubuntu0.1 [69.5 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-dev amd64 0.1.0-3build1 [5,544 B]\n", + "Get:10 http://archive.ubuntu.com/ubuntu jammy/main amd64 libpciaccess-dev amd64 0.16-3 [21.9 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libdrm-dev amd64 2.4.113-2~ubuntu0.22.04.1 [292 kB]\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy/main amd64 libglx-dev amd64 1.4.0-1 [14.1 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgl-dev amd64 1.4.0-1 [101 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu jammy/main amd64 libegl-dev amd64 1.4.0-1 [18.0 kB]\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy/main amd64 libglvnd-core-dev amd64 1.4.0-1 [12.7 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgles1 amd64 1.4.0-1 [11.5 kB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgles-dev amd64 1.4.0-1 [49.4 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu jammy/main amd64 libopengl-dev amd64 1.4.0-1 [3,400 B]\n", + "Get:19 http://archive.ubuntu.com/ubuntu jammy/main amd64 libglvnd-dev amd64 1.4.0-1 [3,162 B]\n", + "Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libegl1-mesa-dev amd64 23.2.1-1ubuntu3.1~22.04.3 [11.1 kB]\n", + "Get:21 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libinstpatch-1.0-2 amd64 1.1.6-1 [240 kB]\n", + "Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 timgm6mb-soundfont all 1.3-5 [5,427 kB]\n", + "Get:23 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libfluidsynth3 amd64 2.2.5-1 [246 kB]\n", + "Get:24 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgbm-dev amd64 23.2.1-1ubuntu3.1~22.04.3 [9,542 B]\n", + "Get:25 http://archive.ubuntu.com/ubuntu jammy/main amd64 libglu1-mesa amd64 9.0.2-1 [145 kB]\n", + "Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 libglu1-mesa-dev amd64 9.0.2-1 [231 kB]\n", + "Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libibus-1.0-dev amd64 1.5.26-4 [185 kB]\n", + "Get:28 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmodplug1 amd64 1:0.8.9.0-3 [153 kB]\n", + "Get:29 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopusfile0 amd64 0.9+20170913-1.1build1 [43.2 kB]\n", + "Get:30 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse-mainloop-glib0 amd64 1:15.99.1+dfsg1-1ubuntu2.2 [12.4 kB]\n", + "Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse-dev amd64 1:15.99.1+dfsg1-1ubuntu2.2 [75.6 kB]\n", + "Get:32 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsndio-dev amd64 1.8.1-1.1 [17.8 kB]\n", + "Get:33 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libudev-dev amd64 249.11-0ubuntu3.17 [20.7 kB]\n", + "Get:34 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxfixes-dev amd64 1:6.0.0-1 [12.2 kB]\n", + "Get:35 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcursor-dev amd64 1:1.2.0-2build4 [28.2 kB]\n", + "Get:36 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxi-dev amd64 2:1.8-1build1 [193 kB]\n", + "Get:37 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxinerama-dev amd64 2:1.1.4-3 [8,104 B]\n", + "Get:38 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbcommon-dev amd64 1.4.0-1 [54.9 kB]\n", + "Get:39 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxrandr-dev amd64 2:1.5.2-1build1 [26.7 kB]\n", + "Get:40 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxt-dev amd64 1:1.2.1-1 [396 kB]\n", + "Get:41 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxv-dev amd64 2:1.0.11-1build2 [33.4 kB]\n", + "Get:42 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxxf86vm-dev amd64 1:1.1.4-1build3 [13.9 kB]\n", + "Get:43 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libsdl2-dev amd64 2.0.20+dfsg-2ubuntu1.22.04.1 [1,767 kB]\n", + "Get:44 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-image-2.0-0 amd64 2.0.5+dfsg1-3build1 [70.4 kB]\n", + "Get:45 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-image-dev amd64 2.0.5+dfsg1-3build1 [76.9 kB]\n", + "Get:46 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-mixer-2.0-0 amd64 2.0.4+dfsg1-4build1 [65.9 kB]\n", + "Get:47 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-mixer-dev amd64 2.0.4+dfsg1-4build1 [83.3 kB]\n", + "Get:48 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-ttf-2.0-0 amd64 2.0.18+dfsg-2 [30.9 kB]\n", + "Get:49 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsdl2-ttf-dev amd64 2.0.18+dfsg-2 [35.9 kB]\n", + "Fetched 11.0 MB in 2s (5,357 kB/s)\n", + "Extracting templates from packages: 100%\n", + "(Reading database ... 121713 files and directories currently installed.)\n", + "Removing r-base-dev (4.5.2-1.2204.0) ...\n", + "dpkg: pkgconf: dependency problems, but removing anyway as you requested:\n", + " libsndfile1-dev:amd64 depends on pkg-config; however:\n", + " Package pkg-config is not installed.\n", + " Package pkgconf which provides pkg-config is to be removed.\n", + " libmkl-dev:amd64 depends on pkg-config; however:\n", + " Package pkg-config is not installed.\n", + " Package pkgconf which provides pkg-config is to be removed.\n", + " libglib2.0-dev:amd64 depends on pkg-config; however:\n", + " Package pkg-config is not installed.\n", + " Package pkgconf which provides pkg-config is to be removed.\n", + " libfontconfig-dev:amd64 depends on pkg-config; however:\n", + " Package pkg-config is not installed.\n", + " Package pkgconf which provides pkg-config is to be removed.\n", + "\n", + "Removing pkgconf (1.8.0-1) ...\n", + "Removing 'diversion of /usr/bin/pkg-config to /usr/bin/pkg-config.real by pkgconf'\n", + "Removing 'diversion of /usr/share/aclocal/pkg.m4 to /usr/share/aclocal/pkg.real.m4 by pkgconf'\n", + "Removing 'diversion of /usr/share/man/man1/pkg-config.1.gz to /usr/share/man/man1/pkg-config.real.1.gz by pkgconf'\n", + "Removing 'diversion of /usr/share/pkg-config-crosswrapper to /usr/share/pkg-config-crosswrapper.real by pkgconf'\n", + "Selecting previously unselected package pkg-config.\n", + "(Reading database ... 121690 files and directories currently installed.)\n", + "Preparing to unpack .../pkg-config_0.29.2-1ubuntu3_amd64.deb ...\n", + "Unpacking pkg-config (0.29.2-1ubuntu3) ...\n", + "Preparing to unpack .../libudev1_249.11-0ubuntu3.17_amd64.deb ...\n", + "Unpacking libudev1:amd64 (249.11-0ubuntu3.17) over (249.11-0ubuntu3.12) ...\n", + "Setting up libudev1:amd64 (249.11-0ubuntu3.17) ...\n", + "Selecting previously unselected package libibus-1.0-5:amd64.\n", + "(Reading database ... 121705 files and directories currently installed.)\n", + "Preparing to unpack .../00-libibus-1.0-5_1.5.26-4_amd64.deb ...\n", + "Unpacking libibus-1.0-5:amd64 (1.5.26-4) ...\n", + "Selecting previously unselected package gir1.2-ibus-1.0:amd64.\n", + "Preparing to unpack .../01-gir1.2-ibus-1.0_1.5.26-4_amd64.deb ...\n", + "Unpacking gir1.2-ibus-1.0:amd64 (1.5.26-4) ...\n", + "Selecting previously unselected package libasound2-dev:amd64.\n", + "Preparing to unpack .../02-libasound2-dev_1.2.6.1-1ubuntu1_amd64.deb ...\n", + "Unpacking libasound2-dev:amd64 (1.2.6.1-1ubuntu1) ...\n", + "Selecting previously unselected package libdbus-1-dev:amd64.\n", + "Preparing to unpack .../03-libdbus-1-dev_1.12.20-2ubuntu4.1_amd64.deb ...\n", + "Unpacking libdbus-1-dev:amd64 (1.12.20-2ubuntu4.1) ...\n", + "Selecting previously unselected package libwayland-bin.\n", + "Preparing to unpack .../04-libwayland-bin_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-bin (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libwayland-dev:amd64.\n", + "Preparing to unpack .../05-libwayland-dev_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-dev:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libdecor-0-dev:amd64.\n", + "Preparing to unpack .../06-libdecor-0-dev_0.1.0-3build1_amd64.deb ...\n", + "Unpacking libdecor-0-dev:amd64 (0.1.0-3build1) ...\n", + "Selecting previously unselected package libpciaccess-dev:amd64.\n", + "Preparing to unpack .../07-libpciaccess-dev_0.16-3_amd64.deb ...\n", + "Unpacking libpciaccess-dev:amd64 (0.16-3) ...\n", + "Selecting previously unselected package libdrm-dev:amd64.\n", + "Preparing to unpack .../08-libdrm-dev_2.4.113-2~ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libdrm-dev:amd64 (2.4.113-2~ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libglx-dev:amd64.\n", + "Preparing to unpack .../09-libglx-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libglx-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libgl-dev:amd64.\n", + "Preparing to unpack .../10-libgl-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libgl-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libegl-dev:amd64.\n", + "Preparing to unpack .../11-libegl-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libegl-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libglvnd-core-dev:amd64.\n", + "Preparing to unpack .../12-libglvnd-core-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libglvnd-core-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libgles1:amd64.\n", + "Preparing to unpack .../13-libgles1_1.4.0-1_amd64.deb ...\n", + "Unpacking libgles1:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libgles-dev:amd64.\n", + "Preparing to unpack .../14-libgles-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libgles-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libopengl-dev:amd64.\n", + "Preparing to unpack .../15-libopengl-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libopengl-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libglvnd-dev:amd64.\n", + "Preparing to unpack .../16-libglvnd-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libglvnd-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libegl1-mesa-dev:amd64.\n", + "Preparing to unpack .../17-libegl1-mesa-dev_23.2.1-1ubuntu3.1~22.04.3_amd64.deb ...\n", + "Unpacking libegl1-mesa-dev:amd64 (23.2.1-1ubuntu3.1~22.04.3) ...\n", + "Selecting previously unselected package libinstpatch-1.0-2:amd64.\n", + "Preparing to unpack .../18-libinstpatch-1.0-2_1.1.6-1_amd64.deb ...\n", + "Unpacking libinstpatch-1.0-2:amd64 (1.1.6-1) ...\n", + "Selecting previously unselected package timgm6mb-soundfont.\n", + "Preparing to unpack .../19-timgm6mb-soundfont_1.3-5_all.deb ...\n", + "Unpacking timgm6mb-soundfont (1.3-5) ...\n", + "Selecting previously unselected package libfluidsynth3:amd64.\n", + "Preparing to unpack .../20-libfluidsynth3_2.2.5-1_amd64.deb ...\n", + "Unpacking libfluidsynth3:amd64 (2.2.5-1) ...\n", + "Selecting previously unselected package libgbm-dev:amd64.\n", + "Preparing to unpack .../21-libgbm-dev_23.2.1-1ubuntu3.1~22.04.3_amd64.deb ...\n", + "Unpacking libgbm-dev:amd64 (23.2.1-1ubuntu3.1~22.04.3) ...\n", + "Selecting previously unselected package libglu1-mesa:amd64.\n", + "Preparing to unpack .../22-libglu1-mesa_9.0.2-1_amd64.deb ...\n", + "Unpacking libglu1-mesa:amd64 (9.0.2-1) ...\n", + "Selecting previously unselected package libglu1-mesa-dev:amd64.\n", + "Preparing to unpack .../23-libglu1-mesa-dev_9.0.2-1_amd64.deb ...\n", + "Unpacking libglu1-mesa-dev:amd64 (9.0.2-1) ...\n", + "Selecting previously unselected package libibus-1.0-dev:amd64.\n", + "Preparing to unpack .../24-libibus-1.0-dev_1.5.26-4_amd64.deb ...\n", + "Unpacking libibus-1.0-dev:amd64 (1.5.26-4) ...\n", + "Selecting previously unselected package libmodplug1:amd64.\n", + "Preparing to unpack .../25-libmodplug1_1%3a0.8.9.0-3_amd64.deb ...\n", + "Unpacking libmodplug1:amd64 (1:0.8.9.0-3) ...\n", + "Selecting previously unselected package libopusfile0.\n", + "Preparing to unpack .../26-libopusfile0_0.9+20170913-1.1build1_amd64.deb ...\n", + "Unpacking libopusfile0 (0.9+20170913-1.1build1) ...\n", + "Selecting previously unselected package libpulse-mainloop-glib0:amd64.\n", + "Preparing to unpack .../27-libpulse-mainloop-glib0_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", + "Unpacking libpulse-mainloop-glib0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Selecting previously unselected package libpulse-dev:amd64.\n", + "Preparing to unpack .../28-libpulse-dev_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", + "Unpacking libpulse-dev:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Selecting previously unselected package libsndio-dev:amd64.\n", + "Preparing to unpack .../29-libsndio-dev_1.8.1-1.1_amd64.deb ...\n", + "Unpacking libsndio-dev:amd64 (1.8.1-1.1) ...\n", + "Selecting previously unselected package libudev-dev:amd64.\n", + "Preparing to unpack .../30-libudev-dev_249.11-0ubuntu3.17_amd64.deb ...\n", + "Unpacking libudev-dev:amd64 (249.11-0ubuntu3.17) ...\n", + "Selecting previously unselected package libxfixes-dev:amd64.\n", + "Preparing to unpack .../31-libxfixes-dev_1%3a6.0.0-1_amd64.deb ...\n", + "Unpacking libxfixes-dev:amd64 (1:6.0.0-1) ...\n", + "Selecting previously unselected package libxcursor-dev:amd64.\n", + "Preparing to unpack .../32-libxcursor-dev_1%3a1.2.0-2build4_amd64.deb ...\n", + "Unpacking libxcursor-dev:amd64 (1:1.2.0-2build4) ...\n", + "Selecting previously unselected package libxi-dev:amd64.\n", + "Preparing to unpack .../33-libxi-dev_2%3a1.8-1build1_amd64.deb ...\n", + "Unpacking libxi-dev:amd64 (2:1.8-1build1) ...\n", + "Selecting previously unselected package libxinerama-dev:amd64.\n", + "Preparing to unpack .../34-libxinerama-dev_2%3a1.1.4-3_amd64.deb ...\n", + "Unpacking libxinerama-dev:amd64 (2:1.1.4-3) ...\n", + "Selecting previously unselected package libxkbcommon-dev:amd64.\n", + "Preparing to unpack .../35-libxkbcommon-dev_1.4.0-1_amd64.deb ...\n", + "Unpacking libxkbcommon-dev:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libxrandr-dev:amd64.\n", + "Preparing to unpack .../36-libxrandr-dev_2%3a1.5.2-1build1_amd64.deb ...\n", + "Unpacking libxrandr-dev:amd64 (2:1.5.2-1build1) ...\n", + "Selecting previously unselected package libxt-dev:amd64.\n", + "Preparing to unpack .../37-libxt-dev_1%3a1.2.1-1_amd64.deb ...\n", + "Unpacking libxt-dev:amd64 (1:1.2.1-1) ...\n", + "Selecting previously unselected package libxv-dev:amd64.\n", + "Preparing to unpack .../38-libxv-dev_2%3a1.0.11-1build2_amd64.deb ...\n", + "Unpacking libxv-dev:amd64 (2:1.0.11-1build2) ...\n", + "Selecting previously unselected package libxxf86vm-dev:amd64.\n", + "Preparing to unpack .../39-libxxf86vm-dev_1%3a1.1.4-1build3_amd64.deb ...\n", + "Unpacking libxxf86vm-dev:amd64 (1:1.1.4-1build3) ...\n", + "Selecting previously unselected package libsdl2-dev:amd64.\n", + "Preparing to unpack .../40-libsdl2-dev_2.0.20+dfsg-2ubuntu1.22.04.1_amd64.deb ...\n", + "Unpacking libsdl2-dev:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "Selecting previously unselected package libsdl2-image-2.0-0:amd64.\n", + "Preparing to unpack .../41-libsdl2-image-2.0-0_2.0.5+dfsg1-3build1_amd64.deb ...\n", + "Unpacking libsdl2-image-2.0-0:amd64 (2.0.5+dfsg1-3build1) ...\n", + "Selecting previously unselected package libsdl2-image-dev:amd64.\n", + "Preparing to unpack .../42-libsdl2-image-dev_2.0.5+dfsg1-3build1_amd64.deb ...\n", + "Unpacking libsdl2-image-dev:amd64 (2.0.5+dfsg1-3build1) ...\n", + "Selecting previously unselected package libsdl2-mixer-2.0-0:amd64.\n", + "Preparing to unpack .../43-libsdl2-mixer-2.0-0_2.0.4+dfsg1-4build1_amd64.deb ...\n", + "Unpacking libsdl2-mixer-2.0-0:amd64 (2.0.4+dfsg1-4build1) ...\n", + "Selecting previously unselected package libsdl2-mixer-dev:amd64.\n", + "Preparing to unpack .../44-libsdl2-mixer-dev_2.0.4+dfsg1-4build1_amd64.deb ...\n", + "Unpacking libsdl2-mixer-dev:amd64 (2.0.4+dfsg1-4build1) ...\n", + "Selecting previously unselected package libsdl2-ttf-2.0-0:amd64.\n", + "Preparing to unpack .../45-libsdl2-ttf-2.0-0_2.0.18+dfsg-2_amd64.deb ...\n", + "Unpacking libsdl2-ttf-2.0-0:amd64 (2.0.18+dfsg-2) ...\n", + "Selecting previously unselected package libsdl2-ttf-dev:amd64.\n", + "Preparing to unpack .../46-libsdl2-ttf-dev_2.0.18+dfsg-2_amd64.deb ...\n", + "Unpacking libsdl2-ttf-dev:amd64 (2.0.18+dfsg-2) ...\n", + "Setting up libsdl2-image-2.0-0:amd64 (2.0.5+dfsg1-3build1) ...\n", + "Setting up libmodplug1:amd64 (1:0.8.9.0-3) ...\n", + "Setting up libsndio-dev:amd64 (1.8.1-1.1) ...\n", + "Setting up libpciaccess-dev:amd64 (0.16-3) ...\n", + "Setting up libglvnd-core-dev:amd64 (1.4.0-1) ...\n", + "Setting up libxxf86vm-dev:amd64 (1:1.1.4-1build3) ...\n", + "Setting up libxkbcommon-dev:amd64 (1.4.0-1) ...\n", + "Setting up libibus-1.0-5:amd64 (1.5.26-4) ...\n", + "Setting up libgbm-dev:amd64 (23.2.1-1ubuntu3.1~22.04.3) ...\n", + "Setting up libxfixes-dev:amd64 (1:6.0.0-1) ...\n", + "Setting up libxv-dev:amd64 (2:1.0.11-1build2) ...\n", + "Setting up libwayland-bin (1.20.0-1ubuntu0.1) ...\n", + "Setting up libxrandr-dev:amd64 (2:1.5.2-1build1) ...\n", + "Setting up libxt-dev:amd64 (1:1.2.1-1) ...\n", + "Setting up libpulse-mainloop-glib0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Setting up libgles1:amd64 (1.4.0-1) ...\n", + "Setting up pkg-config (0.29.2-1ubuntu3) ...\n", + "Setting up libudev-dev:amd64 (249.11-0ubuntu3.17) ...\n", + "Setting up libxinerama-dev:amd64 (2:1.1.4-3) ...\n", + "Setting up libpulse-dev:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Setting up libglx-dev:amd64 (1.4.0-1) ...\n", + "Setting up libsdl2-ttf-2.0-0:amd64 (2.0.18+dfsg-2) ...\n", + "Setting up libglu1-mesa:amd64 (9.0.2-1) ...\n", + "Setting up libopengl-dev:amd64 (1.4.0-1) ...\n", + "Setting up libxi-dev:amd64 (2:1.8-1build1) ...\n", + "Setting up libasound2-dev:amd64 (1.2.6.1-1ubuntu1) ...\n", + "Setting up timgm6mb-soundfont (1.3-5) ...\n", + "update-alternatives: using /usr/share/sounds/sf2/TimGM6mb.sf2 to provide /usr/share/sounds/sf2/default-GM.sf2 (default-GM.sf2) in auto mode\n", + "update-alternatives: using /usr/share/sounds/sf2/TimGM6mb.sf2 to provide /usr/share/sounds/sf3/default-GM.sf3 (default-GM.sf3) in auto mode\n", + "Setting up gir1.2-ibus-1.0:amd64 (1.5.26-4) ...\n", + "Setting up libopusfile0 (0.9+20170913-1.1build1) ...\n", + "Setting up libinstpatch-1.0-2:amd64 (1.1.6-1) ...\n", + "Setting up libgl-dev:amd64 (1.4.0-1) ...\n", + "Setting up libfluidsynth3:amd64 (2.2.5-1) ...\n", + "Setting up libdrm-dev:amd64 (2.4.113-2~ubuntu0.22.04.1) ...\n", + "Setting up libegl-dev:amd64 (1.4.0-1) ...\n", + "Setting up libxcursor-dev:amd64 (1:1.2.0-2build4) ...\n", + "Setting up libwayland-dev:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Setting up libdecor-0-dev:amd64 (0.1.0-3build1) ...\n", + "Setting up libsdl2-mixer-2.0-0:amd64 (2.0.4+dfsg1-4build1) ...\n", + "Setting up libdbus-1-dev:amd64 (1.12.20-2ubuntu4.1) ...\n", + "Setting up libglu1-mesa-dev:amd64 (9.0.2-1) ...\n", + "Setting up libgles-dev:amd64 (1.4.0-1) ...\n", + "Setting up libglvnd-dev:amd64 (1.4.0-1) ...\n", + "Setting up libibus-1.0-dev:amd64 (1.5.26-4) ...\n", + "Setting up libegl1-mesa-dev:amd64 (23.2.1-1ubuntu3.1~22.04.3) ...\n", + "Setting up libsdl2-dev:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "Setting up libsdl2-ttf-dev:amd64 (2.0.18+dfsg-2) ...\n", + "Setting up libsdl2-mixer-dev:amd64 (2.0.4+dfsg1-4build1) ...\n", + "Setting up libsdl2-image-dev:amd64 (2.0.5+dfsg1-3build1) ...\n", + "Processing triggers for man-db (2.10.2-1) ...\n", + "Processing triggers for libc-bin (2.35-0ubuntu3.8) ...\n", + "/sbin/ldconfig.real: /usr/local/lib/libhwloc.so.15 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_0.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_level_zero_v2.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc_proxy.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_loader.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtcm_debug.so.1 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbb.so.12 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtcm.so.1 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_opencl.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_level_zero.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libumf.so.1 is not a symbolic link\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "## Environmental Setup\n" + ], + "metadata": { + "id": "fNZoFXqJzvyB" + } + }, + { + "cell_type": "markdown", + "source": [ + "1. Install Unreal Engine (4.27 suggested) from [Epic Games Launcher](https://store.epicgames.com/it/download).\n", + "\n", + "2. Install Visual Studio 2019\n", + "\n", + "3. Install C++ dev\n", + "\n", + "4. Install Python\n", + "\n", + "5. Download [AirSim](https://microsoft.github.io/AirSim/build_windows/) prebuilt source code and the environment of your choice.\n", + "\n", + "6. Place the Environment in AirSim/Unreal/Environment\n", + "\n", + "5. Use Visual Studio 2019 Developer Command Prompt with Admin privileges to run AirSim-1.7.0-windows/build.cmd\n", + "\n", + "6. Follow the [tutorial](https://microsoft.github.io/AirSim/unreal_blocks/) in order to setup Blocks Environment for AirSim\n", + "\n", + "7. Install [.net framework](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462) 4.6.2 Developer (SDK), desktop runtime 3.1.24\n", + "\n", + "8. Run AirSim-1.7.0-windows/Unreal/Environments/Blocks/update_from_git.bat\n", + "\n", + "9. Add settings.json inside airsim folder (settings.json is a file containing all the quadricopter settings)\n", + "\n", + "10. Open .sln with Visual Studio 2022, as suggested in this [link](https://docs.microsoft.com/it-it/visualstudio/ide/how-to-set-multiple-startup-projects?view=vs-2022) set Blocks as default Project, DebugGame Editor & Win64. Finally press F5\n", + "\n", + "11. Once Unreal is open with the project, click \"Play\" and use the keyboard to move the drone.\n", + "\n" + ], + "metadata": { + "id": "aeM_tkfz1Sx6" + } + }, + { + "cell_type": "markdown", + "source": [ + "###Python Interface with AirSim\n", + "\n", + "1. Take AirSim-1.7.0-windows/PythonClient/multirotor/hello_drone.py\n", + "\n", + "2. Delete first line of import.\n", + "\n", + "3. Create an Anaconda environment.\n", + "\n", + "4. Install the following libraries\n", + " ```bash\n", + " pip install numpy\n", + " pip install opencv-python\n", + " pip install msgpack-rpc-python\n", + " pip install airsim\n", + " ```\n", + "5. Install Visual Studio & recommended python extensions (optional)\n", + "\n", + "6. Unreal might lag if there is another window on top.To avoid this go in Unreal Engine settings: Edit->Editor preferences->search Performance->disable \"Use less CPU when in background\"\n", + "\n" + ], + "metadata": { + "id": "iylMoRUF1fXb" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Run the project\n", + "1. Clone the repository\n", + " ```bash\n", + " git clone https://github.com/lap98/RL-Drone-Stabilization.git\n", + " ```\n", + "2. Open the environment in Unreal Engine\n", + "\n", + "3. Run first.py in order to control the drone\n", + "\n" + ], + "metadata": { + "id": "CaYD4fV_1rbN" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Reinforcement learning\n", + "\n", + "In order to use TF-Agents library:\n", + "```bash\n", + "conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0\n", + "pip install tensorflow==2.9\n", + "pip install tf-agents==0.13.0\n", + "```" + ], + "metadata": { + "id": "gQOQ8s2d1-_P" + } + } + ] +} \ No newline at end of file diff --git a/action/Dockerfile b/action/Dockerfile index 4c65e76..09f661a 100644 --- a/action/Dockerfile +++ b/action/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.5 +FROM ruby:2.6 RUN bundle config --global frozen 1