diff --git a/.github/workflows/docker_with_linux_setup.yml b/.github/workflows/docker_with_linux_setup.yml deleted file mode 100644 index 05821f7..0000000 --- a/.github/workflows/docker_with_linux_setup.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Docker_with_LS - -on: - schedule: - - cron: '0 2 * * *' # at the end of every day - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - cancel: - - name: Cancel Previous Runs - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - build: - runs-on: ubuntu-latest - env: - GITHUB_CI: true - TOKEN: ${{ secrets.DOCKERHUB }} - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # fetch the whole history - - - name: Docker - run: ./.ci/docker_with_linux_setup.sh diff --git a/.github/workflows/docker_with_linux_setup_modules.yml b/.github/workflows/docker_with_linux_setup_modules.yml deleted file mode 100644 index a5b39dc..0000000 --- a/.github/workflows/docker_with_linux_setup_modules.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Docker_with_LS_Modules - -on: - schedule: - - cron: '0 4 * * *' # at the end of every day - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - cancel: - - name: Cancel Previous Runs - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - build: - runs-on: ubuntu-latest - env: - GITHUB_CI: true - TOKEN: ${{ secrets.DOCKERHUB }} - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # fetch the whole history - - - name: Docker - run: ./.ci/docker_with_linux_setup_modules.sh diff --git a/.github/workflows/docker_without_linux_setup.yml b/.github/workflows/docker_without_linux_setup.yml deleted file mode 100644 index 3dca860..0000000 --- a/.github/workflows/docker_without_linux_setup.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Docker_without_LS - -on: - schedule: - - cron: '0 2 * * *' # at the end of every day - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - cancel: - - name: Cancel Previous Runs - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - build: - runs-on: ubuntu-latest - env: - GITHUB_CI: true - TOKEN: ${{ secrets.DOCKERHUB }} - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # fetch the whole history - - - name: Docker - run: ./.ci/docker_without_linux_setup.sh diff --git a/.github/workflows/docker_without_linux_setup_modules.yml b/.github/workflows/docker_without_linux_setup_modules.yml deleted file mode 100644 index 1588c35..0000000 --- a/.github/workflows/docker_without_linux_setup_modules.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Docker_without_LS_Modules - -on: - schedule: - - cron: '0 4 * * *' # at the end of every day - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - cancel: - - name: Cancel Previous Runs - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - build: - runs-on: ubuntu-latest - env: - GITHUB_CI: true - TOKEN: ${{ secrets.DOCKERHUB }} - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # fetch the whole history - - - name: Docker - run: ./.ci/docker_without_linux_setup_modules.sh diff --git a/.github/workflows/noetic.yml b/.github/workflows/noetic.yml deleted file mode 100644 index 0dccd13..0000000 --- a/.github/workflows/noetic.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Noetic - -on: - push: - branches: [ master ] - paths-ignore: - - '**/README.md' - - '**.jpg' - - '**.png' - pull_request: - branches: [ master ] - - schedule: - - cron: '0 0 * * *' # at the end of every day - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - cancel: - - name: Cancel Previous Runs - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - build: - runs-on: ubuntu-20.04 - env: - GITHUB_CI: true - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # fetch the whole history - - - name: Install - run: ./.ci/install.sh - - - name: Test - run: ./.ci/test.sh diff --git a/.github/workflows/ros_package_build.yml b/.github/workflows/ros_package_build.yml new file mode 100644 index 0000000..4a8b6aa --- /dev/null +++ b/.github/workflows/ros_package_build.yml @@ -0,0 +1,24 @@ +name: ros_package_build + +on: + + push: + branches: [ master ] + + paths-ignore: + - '**/README.md' + - '**.jpg' + - '**.png' + + workflow_dispatch: + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + + build: + uses: ctu-mrs/ci_scripts/.github/workflows/ros_package_build.yml@master + secrets: + PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }} diff --git a/README.md b/README.md index 70ec399..af916a5 100644 --- a/README.md +++ b/README.md @@ -4,191 +4,167 @@ ![thumbnail](.fig/drone_collage.jpg) The [Multi-robot Systems Group](http://mrs.felk.cvut.cz) is a robotics lab at the [Czech Technical University in Prague](https://www.cvut.cz/). -We mostly work with multi-rotor helicopters, and for them specifically, we develop this control, estimation, and simulation platform. +We specialize on multi-rotor helicopters, and for them specifically, we develop this control, estimation, and simulation system. We think that real-world and replicable experiments should support excellent research and science in robotics. -Thus our platform is built to allow safe verification of approaches in planning, control, estimation, computer vision, tracking, and more. +Thus our platform is built to allow safe real-world experimental validation of approaches in planning, control, estimation, computer vision, tracking, and more. -## Meta-repositories +> :warning: **Attention please: This README is outdated.** +> +> The MRS UAV System 1.5 is being released and this page needs updating. Please, keep in mind that the information on this page might not be valid. +> Check this [WIP Google Document](https://docs.google.com/document/d/1NibHqNdyzzAYE7DNIMMq1HmzyFrBnISbzV17dP-waYw/edit?usp=sharing) for the latest news and changes. -These meta-repositories aggregate related packages. +## TL;DR what has changed from the old system -| Component | 20.04 | Description | -|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------| -| [mrs_uav_system](https://github.com/ctu-mrs/mrs_uav_system) | [![Build Status](https://github.com/ctu-mrs/mrs_uav_system/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mrs_uav_system/actions) | Integrates [uav_core](https://github.com/ctu-mrs/uav_core) and [simulation](https://github.com/ctu-mrs/simulation) | -| [uav_core](https://github.com/ctu-mrs/uav_core) | [![Build Status](https://github.com/ctu-mrs/uav_core/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/uav_core/actions) | The minimum needed to fly a drone | -| [simulation](https://github.com/ctu-mrs/simulation) | [![Build Status](https://github.com/ctu-mrs/simulation/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/simulation/actions) | Simulation resources | -| [uav_modules](https://github.com/ctu-mrs/uav_modules) | [![Build Status](https://github.com/ctu-mrs/uav_modules/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/uav_modules/actions) | Optional UAV modules, drivers and utils | -| [octomap_mapping_planning](https://github.com/ctu-mrs/octomap_mapping_planning) | [![Build Status](https://github.com/ctu-mrs/octomap_mapping_planning/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/octomap_mapping_planning/actions) | Octomap Mapping & Planning for UAVs | -| [linux-setup](https://github.com/klaxalk/linux-setup) | [![Build Status](https://github.com/klaxalk/linux-setup/workflows/Focal/badge.svg)](https://github.com/klaxalk/linux-setup/actions) | Tomas's Linux configuration | +**Note:** The MRS UAV system v1.5 is still a Work-In-Progress and the documentation is undergoing maintanance ([Issue#169](https://github.com/ctu-mrs/mrs_uav_system/issues/169)). +You can find the changes and new instructions in here [WIP Google Document](https://docs.google.com/document/d/1NibHqNdyzzAYE7DNIMMq1HmzyFrBnISbzV17dP-waYw/edit?usp=sharing). +Any feedback is welcome (you can use the issues in this repo or comment on the Google Doc)! ## System properties -The platform is +The system is -* built using [Robot Operating System](https://www.ros.org/) Noetic, -* meant to be executed entirely onboard, -* can be deployed on any multi-rotor vehicle, given it is equipped with a [PX4](https://github.com/ctu-mrs/px4_firmware)-compatible [flight controller](https://pixhawk.org/), -* for both indoor and outdoor, -* supports multi-robot experiments using [Nimbro network](https://github.com/ctu-mrs/nimbro_network) communication. -* provides both: agile flying and robust control. +* built on the [Robot Operating System](https://www.ros.org/) Noetic, +* meant to be executed entirely onboard on a companion computer, +* can control underactuated multirotor helicopters, +* contains control, state estimation, mapping and planning pipelines. ![](https://github.com/ctu-mrs/mrs_uav_system/raw/gifs/gazebo_circle.gif) ## [Documentation](https://ctu-mrs.github.io/) The primary source of documentation is here: [https://ctu-mrs.github.io/](https://ctu-mrs.github.io/). -However, the website only scratches a surface of what it should contain (and we know it). +However, the website only scratches the surface of what it should contain (and we know it). Our system is a research-oriented platform, and it evolves rapidly. Most of our users are either researchers (who already know the platform) or freshmen students (who might not know ROS at all). -Maintaining up-to-date documentation for such an audience is hard work, since we mostly spend our time developing the system while using it for our research. -So instead, we aim at educating our students to look around the packages (each contains its own README), explore the launch files and be able to read the code, which we strive to keep readable. +Maintaining up-to-date documentation for such an audience is hard work since we mostly spend our time developing the system while using it for our research. +So instead, we aim at educating our students to look around the packages (each contains its own README), explore the launch files, and be able to read the code, which we strive to keep readable. [![](https://github.com/ctu-mrs/mrs_uav_system/raw/diagram/mrs_uav_system_diagram.jpg)](https://github.com/ctu-mrs/mrs_uav_system/raw/diagram/mrs_uav_system_diagram.pdf) -The system follows a description presented in the article [doi.org/10.1007/s10846-021-01383-5](https://doi.org/10.1007/s10846-021-01383-5), [pdf](https://link.springer.com/content/pdf/10.1007/s10846-021-01383-5.pdf): +The control and estimation system are described in the article [doi.org/10.1007/s10846-021-01383-5](https://doi.org/10.1007/s10846-021-01383-5), [pdf](https://link.springer.com/content/pdf/10.1007/s10846-021-01383-5.pdf): ``` Baca, T., Petrlik, M., Vrba, M., Spurny, V., Penicka, R., Hert, D., and Saska, M., "The MRS UAV System: Pushing the Frontiers of Reproducible Research, Real-world Deployment, and Education with Autonomous Unmanned Aerial Vehicles", J Intell Robot Syst 102, 26 (2021). ``` -## Unmanned Aerial Vehicles +## Installation -The MRS UAV system is currently pre-configured for the following UAV platforms, operated by the MRS. -The platforms are order by the size / payload capacity. +### Native installation -| Model | Simulation | Real UAV | -|--------------|-------------------------------|-------------------------------| -| DJI f330 | ![](.fig/f330_simulation.jpg) | ![](.fig/f330_real.jpg) | -| DJI f450 | ![](.fig/f450_simulation.jpg) | ![](.fig/f450_real.jpg) | -| Holybro x500 | ![](.fig/x500_simulation.jpg) | ![](.fig/x500_real.jpg) | -| DJI f550 | ![](.fig/f550_simulation.jpg) | ![](.fig/f550_real.jpg) | -| Tarot t650 | ![](.fig/t650_simulation.jpg) | ![](.fig/t650_real.jpg) | -| NAKI II | ![](.fig/naki_simulation.jpg) | ![](.fig/naki_real.jpg) | +1. Install the Robot Operating System (Noetic): +```bash +curl https://ctu-mrs.github.io/ppa-unstable/add_ros_ppa.sh | bash +sudo apt install ros-noetic-desktop-full +``` -## Related packages - -The following packages are not necessarily part of our automated installation. -Therefore, you might need to clone them by yorself and place in your ROS workspace. -Some of those are forks of third party repositories. - -| Package | Description | 20.04 | -|--------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [MRS Gazebo Extra Resources](https://github.com/ctu-mrs/mrs_gazebo_extras_resources) | *MRS System*-depended optional plugins and resources | [![Build Status](https://github.com/ctu-mrs/mrs_gazebo_extras_resources/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mrs_gazebo_extras_resources/actions) | -| [Example ROS packages](https://github.com/ctu-mrs/example_ros_packages) | MRS ROS examples | [![Build Status](https://github.com/ctu-mrs/example_ros_packages/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/example_ros_packages/actions) | -| [Nimbro network](https://github.com/ctu-mrs/nimbro_network) | ROS communication layer for multiple independent machines | [![Build Status](https://github.com/ctu-mrs/nimbro_network/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/nimbro_network/actions) | -| [MRS optic flow](https://github.com/ctu-mrs/mrs_optic_flow) | GPU-accelerated optic flow alorithm for UAV odometry | [![Build Status](https://github.com/ctu-mrs/mrs_optic_flow/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mrs_optic_flow/actions) | -| [Hector SLAM](https://github.com/tu-darmstadt-ros-pkg/hector_slam) | 2D Laser-based LIDAR SLAM, [how to](https://ctu-mrs.github.io/docs/software/hector_slam.html) | | -| [Hector SLAM](https://github.com/ctu-mrs/hector_slam) - MRS fork | + Nodeleted, [how to](https://ctu-mrs.github.io/docs/software/hector_slam.html) | [![Build Status](https://github.com/ctu-mrs/hector_slam/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/hector_slam/actions) | -| [MRS Serial](https://github.com/ctu-mrs/mrs_serial) | serial line interface to ROS, communicates using the BACA protocol | [![Build Status](https://github.com/ctu-mrs/mrs_serial/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mrs_serial/actions) | -| [UVDAR](https://github.com/ctu-mrs/uvdar) | mutual localization of UAVs using Ultra-Violet LED blinkers | [![Build Status](https://github.com/ctu-mrs/uvdar_core/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/uvdar_core/actions) | -| [UVDAR gazebo plugin](https://github.com/ctu-mrs/uvdar_gazebo_plugin) | Gazebo plugin for UVDAR | [![Build Status](https://github.com/ctu-mrs/uvdar_gazebo_plugin/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/uvdar_gazebo_plugin/actions) | -| [trajectory loader](https://github.com/ctu-mrs/trajectory_loader) | Loading UAV trajectories from CSV files | [![Build Status](https://github.com/ctu-mrs/trajectory_loader/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/trajectory_loader/actions) | -| [Bluefox2](https://github.com/ctu-mrs/bluefox2) | MV Bluefox2 driver, MRS fork | [![Build Status](https://github.com/ctu-mrs/bluefox2/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/bluefox2/actions) | -| [Object detection](https://github.com/ctu-mrs/object_detect) | Object detection by color segmentation | [![Build Status](https://github.com/ctu-mrs/object_detect/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/object_detect/actions) | -| [MRS utils](https://github.com/ctu-mrs/mrs_utils) | Development utils | [![Build Status](https://github.com/ctu-mrs/mrs_utils/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mrs_utils/actions) | -| [OctomapTools](https://github.com/ctu-mrs/octomap_tools) | Octomap visualization and manipulation | | -| [MBZIRC 2020 - Wall Building](https://github.com/ctu-mrs/mbzirc_2020_wall_building) | System for automatic wall-building for MBZIRC 2020 | [![Build Status](https://github.com/ctu-mrs/mbzirc_2020_wall_building/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mbzirc_2020_wall_building/actions) | -| [Summer School 2019](https://github.com/ctu-mrs/mtsp_planning_task) | Summer School 2019 task - MTSP planning | [![Build Status](https://github.com/ctu-mrs/mtsp_planning_task/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/mtsp_planning_task/actions) | -| [Summer School 2020](https://github.com/ctu-mrs/leader_follower_task) | Summer School 2020 task - UVDAR leader-follower | [![Build Status](https://github.com/ctu-mrs/leader_follower_task/workflows/Noetic/badge.svg)](https://github.com/ctu-mrs/leader_follower_task/actions) | -| [Summer School 2022](https://github.com/ctu-mrs/summer-school-2022) | Summer School 2022 task - Multirobotic inspection and monitoring | [![Build Status](https://github.com/ctu-mrs/summer-school-2022/workflows/Focal/badge.svg)](https://github.com/ctu-mrs/leader_follower_task/actions) | - -## Backwards compatibility and updates - -We do not guarantee backwards compatibility at any time. -The platform is evolving according to the needs of the MRS group. -Updates can be made that are not going to be compatible with users local configs, simulation worlds, tmux sessions, etc. -However, when we change something which requires user action to maintain compatibility, we will create an issue in this repository labelled **users-read-me**. -Subscribe to this repository updates and issues by clicking the **Watch** button in the top-right corner of this page. -Recent changes requiring user action: +2. Configure your ROS environment [http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment]([http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment]) -* January 17, 2023: [Updates for px4 firmware v1.13.2](https://github.com/ctu-mrs/mrs_uav_system/issues/150) -* March 8, 2022: [mrs_lib::Transformer interface updated](https://github.com/ctu-mrs/mrs_uav_system/issues/136) -* December 09, 2021: [not building with --march=native anymore](https://github.com/ctu-mrs/mrs_uav_system/issues/126) -* December 25, 2020: [Updated controller interface, updated thrust curve parametrization](https://github.com/ctu-mrs/mrs_uav_system/issues/33) -* December 15, 2020: [Rework of simulation UAV spawning mechanism, Noetic update](https://github.com/ctu-mrs/mrs_uav_system/issues/32) -* November 12, 2020: [GPS coordinates within Gazebo world need changing](https://github.com/ctu-mrs/mrs_uav_system/issues/22) -* November 12, 2020: [Rangefinder fusion needs enabling in simulation sessions](https://github.com/ctu-mrs/mrs_uav_system/issues/21) +3. Select which version of the MRS UAV System you want to install. -## Installation +For **[stable](https://github.com/ctu-mrs/ppa-stable)** version, add the stable PPA: +```bash +curl https://ctu-mrs.github.io/ppa-stable/add_ppa.sh | bash +``` +For **[unstable](https://github.com/ctu-mrs/ppa-unstable)** (nightly-build) of the system, add the unstable PPA: +```bash +curl https://ctu-mrs.github.io/ppa-unstable/add_ppa.sh | bash +``` -### Singularity and Docker +4. Install the MRS UAV System: +```bash +sudo apt install ros-noetic-mrs-uav-system-full +``` + +5. Start the example Gazebo simulation session: +```bash +roscd mrs_uav_gazebo_simulation/tmux/one_drone +./start.sh +``` + +### Singularity -Singularity images with our system are the preferred way how a _normal_ user should interract with our system. Please, follow this link to learn how to run our system using Singularity. -* [MRS Singularity](https://github.com/ctu-mrs/mrs_singularity/) +* [MRS Singularity](https://github.com/ctu-mrs/mrs_singularity/tree/1.5) -Our Singularity images are built almost completely from Docker images. -The following link points to our Docker HUB organization. +## Build status -* [Docker Images](https://hub.docker.com/u/ctumrs) +### x86-64/AMD64 -### Native installation (not recommended) +| | [Stable](https://github.com/ctu-mrs/ppa-stable) | [Unstable](https://github.com/ctu-mrs/ppa-unstable) | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| MRS ROS Packages | [![stable-mrs-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_mrs_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_mrs_amd64.yml) | [![unstable-mrs-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_mrs_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_mrs_amd64.yml) | +| Thirdparty ROS packages | [![stable-thirdparty-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_thirdparty_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_thirdparty_amd64.yml) | [![unstable-thirdparty-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_thirdparty_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_thirdparty_amd64.yml) | +| Non-ROS packages | [![stable-nonbloom-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_nonbloom_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_nonbloom_amd64.yml) | [![unstable-nonbloom-amd64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_nonbloom_amd64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_nonbloom_amd64.yml) | -Native installation is supported via a set of automated install scripts. -**Beware** the installation will take a **lot of disk space**, is **difficult to remove** from the computer, and is often **difficult to upgrade**. -The native installation is intended mostly for real drones. -Most people should use [MRS Singularity](https://github.com/ctu-mrs/mrs_singularity) for working with the MRS system! +### AARCH64/ARM64 -In the you want a native installation case we provide installation scripts that set everything up for you. -Our automated install script will: -* install Robot Operating System (ROS), -* install other dependencies such *git*, *gitman*, -* clone [uav_core](https://github.com/ctu-mrs/uav_core), [simulation](https://github.com/ctu-mrs/simulation), [example_ros_packages](https://github.com/ctu-mrs/example_ros_packages) into *~/git*, -* install more dependencies such as *tmux* and *tmuxinator* -* create our ros workspace ([guide](https://ctu-mrs.github.io/docs/software/catkin/managing_workspaces/managing_workspaces.html)) in ```~/mrs_workspace``` for the *uav_core* and *simulation*, -* create a ros workspace in ```~/workspace``` for *examples* ([guide](https://ctu-mrs.github.io/docs/software/catkin/managing_workspaces/managing_workspaces.html)), -* link our packages to the workspaces ([guide](https://ctu-mrs.github.io/docs/software/catkin/managing_workspaces/managing_workspaces.html)), -* compile the workspaces, -* add configuration lines into your *~/.bashrc*. +| | [Stable](https://github.com/ctu-mrs/ppa-stable) | [Unstable](https://github.com/ctu-mrs/ppa-unstable) | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| MRS ROS Packages | [![stable-mrs-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_mrs_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_mrs_arm64.yml) | [![unstable-mrs-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_mrs_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_mrs_arm64.yml) | +| Thirdparty ROS packages | [![stable-thirdparty-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_thirdparty_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_thirdparty_arm64.yml) | [![unstable-thirdparty-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_thirdparty_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_thirdparty_arm64.yml) | +| Non-ROS packages | [![stable-nonbloom-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_nonbloom_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/stable_nonbloom_arm64.yml) | [![unstable-nonbloom-arm64](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_nonbloom_arm64.yml/badge.svg)](https://github.com/ctu-mrs/rosdistro/actions/workflows/unstable_nonbloom_arm64.yml) | -To start the automatic installation, please paste the following code into your terminal and press **enter**. -You might be prompted a few times to confirm something by pressing enter: -```bash -cd /tmp -echo ' -GIT_PATH=~/git -mkdir -p $GIT_PATH -cd $GIT_PATH -sudo apt-get -y install git -git clone https://github.com/ctu-mrs/mrs_uav_system -cd mrs_uav_system -git checkout master -git pull -./install.sh -g $GIT_PATH -source ~/.bashrc' > clone.sh && source clone.sh -``` +## System components -#### "I already have ROS and just want to peek in" +| Main metapackages | Contents | Repository | Package | +|-----------------------|-----------------------------|-------------------------------------------------------------|----------------------------------------------| +| MRS UAV System - Full | Most of the bellow | [mrs_uav_system](https://github.com/ctu-mrs/mrs_uav_system) | `apt install ros-noetic-mrs-uav-system-full` | +| MRS UAV System | Only UAV Core & UAV Modules | [mrs_uav_system](https://github.com/ctu-mrs/mrs_uav_system) | `apt install ros-noetic-mrs-uav-system` | -If you already have ROS installed and if you are fluent with *workspaces*, *.bashrc*, *catkin tools*, etc., feel free to clone our repositories individually. -The [uav_core](https://github.com/ctu-mrs/uav_core) repository integrates our UAV control system. -Please follow its README for further instructions on how to install its particular dependencies. +| Metapackages | Repository | Package | +|--------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------| +| UAV Core | [mrs_uav_core](https://github.com/ctu-mrs/mrs_uav_core) | `apt install ros-noetic-mrs-uav-core` | +| UAV Modules | [mrs_uav_modules](https://github.com/ctu-mrs/mrs_uav_modules) | `apt install ros-noetic-mrs-uav-modules` | +| Octomap Mapping+Planning | [mrs_octomap_mapping_planning](https://github.com/ctu-mrs/mrs_octomap_mapping_planning) | `apt install ros-noetic-mrs-octomap-mapping-planning` | -The [simulation](https://github.com/ctu-mrs/simulation) repository provides resources for *Gazebo/ROS* simulation, including px4 Simulation-in-the-Loop (SITL), UAV models and useful sensor plugins. -Please follow its README for further instructions on how to install prerequisities. +| Simulators | Repository | Package | +|---------------------|---------------------------------------------------------------------------------------|------------------------------------------------------| +| Gazebo Simulation | [mrs_uav_gazebo_simulation](https://github.com/ctu-mrs/mrs_uav_gazebo_simulation) | `apt install ros-noetic-mrs-uav-gazebo-simulation` | +| MRS Simulation | [mrs_multirotor_simulator](https://github.com/ctu-mrs/mrs_multirotor_simulator) | `apt install ros-noetic-mrs-multirotor-simulator` | +| Coppelia Simulation | [mrs_uav_coppelia_simulation](https://github.com/ctu-mrs/mrs_uav_coppelia_simulation) | `apt install ros-noetic-mrs-uav-coppelia-simulation` | -#### "I want the Linux environment people from MRS works with" +| Hardware API plugins | Repository | Package | +|----------------------|---------------------------------------------------------------------------|------------------------------------------------| +| PX4 API | [mrs_uav_px4_api](https://github.com/ctu-mrs/mrs_uav_px4_api) | `apt install ros-noetic-mrs-uav-px4-api` | +| DJI Tello API | [mrs_uav_dji_tello_api](https://github.com/ctu-mrs/mrs_uav_dji_tello_api) | `apt install ros-noetic-mrs-uav-dji-tello-api` | -Great! In that case you want to install Tomas's Linux-setup. -**Beware!** This might alter your existing configuration of some Linux tools (Vim, Tmux, i3wm, ranger, ...). -Refer to its [README](https://github.com/klaxalk/linux-setup), for more information. -Installation is *not* obligatory and the MRS UAV system will work without it. +## Example packages -Paste following code into your terminal and press **enter** -```bash -cd /tmp -echo "mkdir -p ~/git -cd ~/git -sudo apt-get -y install git -git clone https://github.com/klaxalk/linux-setup -cd linux-setup -./install.sh" > run.sh && source run.sh -``` +| Example | Repository | +|-------------------|-----------------------------------------------------------------------------------| +| Controller plugin | [example_controller_plugin](https://github.com/ctu-mrs/example_controller_plugin) | +| Tracker plugin | [example_controller_plugin](https://github.com/ctu-mrs/example_tracker_plugin) | + +## Unmanned Aerial Vehicles + +The MRS UAV system is currently pre-configured for the following UAV platforms, operated by the MRS. +The UAV platforms can be purchased from our partner company [Fly4Future](https://dronebuilder.fly4future.com/#/). + +| Model | Simulation | Real UAV | +|--------------|-------------------------------|-------------------------------| +| DJI f330 | ![](.fig/f330_simulation.jpg) | ![](.fig/f330_real.jpg) | +| DJI f450 | ![](.fig/f450_simulation.jpg) | ![](.fig/f450_real.jpg) | +| Holybro x500 | ![](.fig/x500_simulation.jpg) | ![](.fig/x500_real.jpg) | +| DJI f550 | ![](.fig/f550_simulation.jpg) | ![](.fig/f550_real.jpg) | +| Tarot t650 | ![](.fig/t650_simulation.jpg) | ![](.fig/t650_real.jpg) | +| NAKI II | ![](.fig/naki_simulation.jpg) | ![](.fig/naki_real.jpg) | -For help with using the system, you can also refer to the [MRS Cheatsheet](https://ctu-mrs.github.io/docs/introduction/cheatsheet.html). +## Backwards Compatibility and updates -## Running the simulation +We do not guarantee backward compatibility at any time. +The platform is evolving according to the needs of the MRS group. +Updates can be made that are not going to be compatible with users' local configs, simulation worlds, tmux sessions, etc. +However, when we change something that requires user action to maintain compatibility, we will create an issue in this repository labeled **users-read-me**. +Subscribe to this repository updates and issues by clicking the **Watch** button in the top-right corner of this page. +Recent changes requiring user action: -If you have successfully installed the system, you can continue with [starting the simulation](https://ctu-mrs.github.io/docs/simulation/howto.html). +* now: **WIP** **MRS UAV System 1.5** +* January 17, 2023: [Updates for px4 firmware v1.13.2](https://github.com/ctu-mrs/mrs_uav_system/issues/150) +* March 8, 2022: [mrs_lib::Transformer interface updated](https://github.com/ctu-mrs/mrs_uav_system/issues/136) +* December 09, 2021: [not building with --march=native anymore](https://github.com/ctu-mrs/mrs_uav_system/issues/126) +* December 25, 2020: [Updated controller interface, updated thrust curve parametrization](https://github.com/ctu-mrs/mrs_uav_system/issues/33) +* December 15, 2020: [Rework of simulation UAV spawning mechanism, Noetic update](https://github.com/ctu-mrs/mrs_uav_system/issues/32) +* November 12, 2020: [GPS coordinates within Gazebo world need changing](https://github.com/ctu-mrs/mrs_uav_system/issues/22) +* November 12, 2020: [Rangefinder fusion needs enabling in simulation sessions](https://github.com/ctu-mrs/mrs_uav_system/issues/21) diff --git a/dependencies/git_lfs.sh b/dependencies/git_lfs.sh deleted file mode 100755 index 146ea67..0000000 --- a/dependencies/git_lfs.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -echo "$0: installing git Large File Stograge (LFS) support" - -sudo apt-get -y install software-properties-common -sudo curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash -sudo apt-get -y install git-lfs -git lfs install diff --git a/dependencies/gitman.sh b/dependencies/gitman.sh deleted file mode 100755 index 3a9a920..0000000 --- a/dependencies/gitman.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -echo "$0: installing Gitman" - -distro=`lsb_release -r | awk '{ print $2 }'` - -if [ "$distro" = "18.04" ]; then - - sudo apt-get -y install python-pip python3-pip python-setuptools python3-setuptools - - sudo pip3 install gitman - sudo -H pip3 install gitman - -elif [ "$distro" = "20.04" ]; then - - sudo apt-get -y install python3-pip python3-setuptools - - sudo pip3 install gitman - sudo -H pip3 install gitman - -fi diff --git a/dependencies/ros.sh b/dependencies/ros.sh deleted file mode 100755 index 3406087..0000000 --- a/dependencies/ros.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -sudo apt-get -y install wget lsb-release gnupg curl - -distro=`lsb_release -r | awk '{ print $2 }'` -[ "$distro" = "18.04" ] && ROS_DISTRO="melodic" -[ "$distro" = "20.04" ] && ROS_DISTRO="noetic" - -debian=`lsb_release -d | grep -i debian | wc -l` -[[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" - -echo "$0: Installing ROS" - -sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' - -curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - - -sudo apt-get -y update - -sudo apt-get -y install ros-$ROS_DISTRO-desktop-full - -num=`cat ~/.bashrc | grep "/opt/ros/$ROS_DISTRO/setup.bash" | wc -l` -if [ "$num" -lt "1" ]; then - - # set bashrc - echo " -source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc - -fi diff --git a/docker/brute_mrs b/docker/brute_mrs deleted file mode 100644 index 75b8623..0000000 --- a/docker/brute_mrs +++ /dev/null @@ -1,37 +0,0 @@ -FROM brute/brute_base:latest - -RUN echo building docker image - -ARG DOCKER=true -ARG MRS_PATH=/opt/mrs - -# fixes prompts during apt installations -RUN echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections -RUN sudo apt-get install -y -q - -RUN sudo apt-get -y update && sudo apt-get -y install git - -# clone MRS UAV System -RUN mkdir -p $MRS_PATH/git && cd $MRS_PATH/git && git clone https://github.com/ctu-mrs/mrs_uav_system - -# install MRS UAV System -RUN \ - cd $MRS_PATH/git/mrs_uav_system && \ - ./install.sh -g $MRS_PATH/git -l $MRS_PATH --no-build --my-workspace=false && \ - sudo apt-get -y install vim && \ - pip3 install ansi2html && \ - rm -rf /var/lib/apt/lists/* && \ - cd $MRS_PATH/mrs_workspace/src && \ - git clone https://github.com/ctu-mrs/mrs_utils && \ - cd $MRS_PATH/mrs_workspace && \ - catkin config --install && \ - catkin build --limit-status-rate 0.2 --summarize && \ - rm -rf $MRS_PATH/mrs_workspace/build && \ - rm -rf $MRS_PATH/mrs_workspace/devel && \ - rm -rf $MRS_PATH/git/uav_core/.gitman && \ - rm -rf $MRS_PATH/git/simulation/.gitman && \ - sudo apt-get -y remove --purge gcc-arm-none-eabi && \ - sudo apt-get -y autoremove && \ - rm -rf /var/lib/apt/lists/* - -CMD ["bash"] diff --git a/docker/build.sh b/docker/build.sh deleted file mode 100755 index 36f4593..0000000 --- a/docker/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -# get the path to this script -MY_PATH=`dirname "$0"` -MY_PATH=`( cd "$MY_PATH" && pwd )` - -cd $MY_PATH - -docker build -f ./1.5 -t ctumrs/mrs_uav_system:1.5 . diff --git a/docker/with_linux_setup b/docker/with_linux_setup deleted file mode 100644 index 288ca6a..0000000 --- a/docker/with_linux_setup +++ /dev/null @@ -1,30 +0,0 @@ -FROM klaxalk/linux-setup:master - -ARG DOCKER=true -ARG mrs_path=/opt/mrs - -# fixes prompts during apt installations -RUN echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections -RUN sudo apt-get install -y -q - -RUN sudo apt-get -y update - -# clone and install MRS UAV System -RUN mkdir -p $mrs_path/git && cd $mrs_path/git && git clone https://github.com/ctu-mrs/mrs_uav_system - -RUN \ - cd $mrs_path/git/mrs_uav_system && \ - ./install.sh -g $mrs_path/git -l $mrs_path --no-build --my-workspace=false && \ - rm -rf /var/lib/apt/lists/* && \ - cd $mrs_path/mrs_workspace/ && \ - catkin config --install && \ - catkin build --limit-status-rate 0.2 --summarize && \ - rm -rf $mrs_path/mrs_workspace/build && \ - rm -rf $mrs_path/mrs_workspace/devel && \ - rm -rf $mrs_path/git/uav_core/.gitman && \ - rm -rf $mrs_path/git/simulation/.gitman && \ - sudo apt-get -y remove --purge gcc-arm-none-eabi && \ - sudo apt-get -y autoremove && \ - rm -rf /var/lib/apt/lists/* - -CMD ["bash"] diff --git a/docker/with_linux_setup_modules b/docker/with_linux_setup_modules deleted file mode 100644 index 0797ef1..0000000 --- a/docker/with_linux_setup_modules +++ /dev/null @@ -1,32 +0,0 @@ -FROM ctumrs/mrs_uav_system_ls:latest - -ARG DOCKER=true -ARG mrs_path=/opt/mrs - -# fixes prompts during apt installations -RUN echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections -RUN sudo apt-get install -y -q - -RUN sudo apt-get -y update - -# clone and install UAV Modules -RUN \ - mkdir -p $mrs_path/git && \ - cd $mrs_path/git && \ - git clone https://github.com/ctu-mrs/uav_modules && \ - cd $mrs_path/git/uav_modules - -RUN \ - cd $mrs_path/git/uav_modules && \ - gitman install && \ - $mrs_path/git/uav_modules/installation/install.sh --unattended && \ - $mrs_path/git/uav_modules/installation/set_modules_workspace.sh -g $mrs_path/git -l $mrs_path -n && \ - cd $mrs_path/modules_workspace && \ - catkin config --install && \ - catkin build --limit-status-rate 0.2 --summarize && \ - rm -rf $mrs_path/modules_workspace/build && \ - rm -rf $mrs_path/modules_workspace/devel && \ - rm -rf $mrs_path/git/uav_modules/.gitman && \ - rm -rf /var/lib/apt/lists/* - -CMD ["bash"] diff --git a/docker/without_linux_setup b/docker/without_linux_setup deleted file mode 100644 index 44d2f63..0000000 --- a/docker/without_linux_setup +++ /dev/null @@ -1,30 +0,0 @@ -FROM ros:noetic - -ARG DOCKER=true -ARG mrs_path=/opt/mrs - -# fixes prompts during apt installations -RUN echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections -RUN sudo apt-get install -y -q - -RUN sudo apt-get -y update && sudo apt-get -y install git - -# clone and install MRS UAV System -RUN mkdir -p $mrs_path/git && cd $mrs_path/git && git clone https://github.com/ctu-mrs/mrs_uav_system - -RUN \ - cd $mrs_path/git/mrs_uav_system && \ - ./install.sh -g $mrs_path/git -l $mrs_path --no-build --my-workspace=false && \ - rm -rf /var/lib/apt/lists/* && \ - cd $mrs_path/mrs_workspace/ && \ - catkin config --install && \ - catkin build --limit-status-rate 0.2 --summarize && \ - rm -rf $mrs_path/mrs_workspace/build && \ - rm -rf $mrs_path/mrs_workspace/devel && \ - rm -rf $mrs_path/git/uav_core/.gitman && \ - rm -rf $mrs_path/git/simulation/.gitman && \ - sudo apt-get -y remove --purge gcc-arm-none-eabi && \ - sudo apt-get -y autoremove && \ - rm -rf /var/lib/apt/lists/* - -CMD ["bash"] diff --git a/docker/without_linux_setup_modules b/docker/without_linux_setup_modules deleted file mode 100644 index 020382b..0000000 --- a/docker/without_linux_setup_modules +++ /dev/null @@ -1,32 +0,0 @@ -FROM ctumrs/mrs_uav_system:latest - -ARG DOCKER=true -ARG mrs_path=/opt/mrs - -# fixes prompts during apt installations -RUN echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections -RUN sudo apt-get install -y -q - -RUN sudo apt-get -y update && sudo apt-get -y install git - -# clone and install UAV Modules -RUN \ - mkdir -p $mrs_path/git && \ - cd $mrs_path/git && \ - git clone https://github.com/ctu-mrs/uav_modules && \ - cd $mrs_path/git/uav_modules - -RUN \ - cd $mrs_path/git/uav_modules && \ - gitman install && \ - $mrs_path/git/uav_modules/installation/install.sh --unattended && \ - $mrs_path/git/uav_modules/installation/set_modules_workspace.sh -g $mrs_path/git -l $mrs_path -n && \ - cd $mrs_path/modules_workspace && \ - catkin config --install && \ - catkin build --limit-status-rate 0.2 --summarize && \ - rm -rf $mrs_path/modules_workspace/build && \ - rm -rf $mrs_path/modules_workspace/devel && \ - rm -rf $mrs_path/git/uav_modules/.gitman && \ - rm -rf /var/lib/apt/lists/* - -CMD ["bash"] diff --git a/install.sh b/install.sh deleted file mode 100755 index dbccfb0..0000000 --- a/install.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -# get the path to this script -MY_PATH=`dirname "$0"` -MY_PATH=`( cd "$MY_PATH" && pwd )` - -cd $MY_PATH - -# shift -OPTIND=1 -MY_WORKSPACE=true -NO_BUILD="" -while getopts "g:l:nm:-:" options; do - if [ "${options}" = "-" ]; then # long option: reformulate OPT and OPTARG - options="${OPTARG%%=*}" # extract long option name - echo "option $options" - OPTARG="${OPTARG#$options}" # extract long option argument (may be empty) - OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=` - fi - case ${options} in - g) - GIT_PATH=${OPTARG} - echo "Parsed GIT_PATH=$GIT_PATH" - ;; - l) - WORKSPACE_LOCATION=${OPTARG} - echo "Parsed WORKSPACE_LOCATION=$WORKSPACE_LOCATION" - ;; - n | no-build) - NO_BUILD=" -n" - echo "NO_BUILD=true" - ;; - m | my-workspace) - [[ ${OPTARG} == "false" ]] && MY_WORKSPACE=false - echo "MY_WORKSPACE=$MY_WORKSPACE" - ;; - esac -done - -sudo apt-get install -y bc - -n_cpu=`nproc --all` -RAM_size=`grep MemTotal /proc/meminfo | awk '{print $2}' | xargs -I {} echo "scale=2; {}/1024^2" | bc -l` -SWAP_size=`grep SwapTotal /proc/meminfo | awk '{print $2}' | xargs -I {} echo "scale=2; {}/1024^2" | bc -l` - -total_available_memory=`echo $RAM_size + $SWAP_size | bc -l` -safe_rate_of_memory=`echo $n_cpu*2.5 | bc -l` - -if (( $(echo "$safe_rate_of_memory > $total_available_memory" |bc -l) )); then - recommended_swap_size=`echo $safe_rate_of_memory - $RAM_size | bc -l` - rounded_recommended_swap_size=`echo "$recommended_swap_size"+1 | bc -l | awk '{print int($1)}'` - echo "" - echo -e "\033[31m----------------------------------------------------------------------------------------------\033[0m" - echo -e "\033[31mInstallation can fail during compilation of the MRS system due to not sufficient RAM+SWAP memory\033[0m" - echo -e "\033[31m We recommend to have roughtly RAM+SWAP >= 2.5*number_of_cpu\033[0m" - echo -e "\033[31m -----------------------------------------------------------\033[0m" - echo -e "\033[31m Your number_of_cpu : $n_cpu\033[0m" - echo -e "\033[31m Your RAM size : $RAM_size GB\033[0m" - echo -e "\033[31m Your SWAP size : $SWAP_size GB\033[0m" - echo -e "\033[31m----------------------------------------------------------------------------------------------\033[0m" - echo -e "\033[31mIf so, please increase SWAP to the recommended size, which is $recommended_swap_size GB\033[0m." - echo -e "\033[31mTo create $rounded_recommended_swap_size GB SWAP, follow these steps:\033[0m" - echo -e "\033[31m-----------------------------------------------------------\033[0m" - echo -e "\033[31msudo swapoff -a\033[0m" - echo -e "\033[31msudo dd if=/dev/zero of=/swapfile bs=1GB count=$rounded_recommended_swap_size\033[0m" - echo -e "\033[31msudo chmod 600 /swapfile\033[0m" - echo -e "\033[31msudo mkswap /swapfile\033[0m" - echo -e "\033[31msudo swapon /swapfile\033[0m" - echo -e "\033[31mgrep SwapTotal /proc/meminfo\033[0m" - echo -e "\033[31m-----------------------------------------------------------\033[0m" - echo "" - echo "Press Enter to continue..." - echo "" - [ -z "$GITHUB_CI" ] && [ ! $DOCKER ] && read -fi - -[ -z "$GIT_PATH" ] && GIT_PATH=$HOME/git -[ -z "$WORKSPACE_LOCATION" ] && WORKSPACE_LOCATION=$HOME - -echo "Installation started WORKSPACE_LOCATION=$WORKSPACE_LOCATION, GIT_PATH=$GIT_PATH" - -## | ----------------------- install ROS ---------------------- | - -bash $MY_PATH/dependencies/ros.sh - -## | --------------------- install gitman --------------------- | - -bash $MY_PATH/dependencies/gitman.sh - -## | ------------------ crate the git folder ------------------ | - -[ ! -e "$GIT_PATH" ] && echo "$0: creating $GIT_PATH" && mkdir -p $GIT_PATH - -## | -------------------- cloning packages -------------------- | - -cd "$GIT_PATH" - -[ ! -e "$GIT_PATH/uav_core" ] && git clone https://github.com/ctu-mrs/uav_core -[ ! -e "$GIT_PATH/simulation" ] && git clone https://github.com/ctu-mrs/simulation -[ ! -e "$GIT_PATH/example_ros_packages" ] && git clone https://github.com/ctu-mrs/example_ros_packages - -## | ------------------- installing uav_core ------------------ | - -echo "$0: installing uav_core" -$GIT_PATH/uav_core/installation/install.sh - -## | ------------------ installing simulation ----------------- | - -echo "$0: installing simulation" -$GIT_PATH/simulation/installation/install.sh - -## | ------------------- setup mrs_workspace ------------------ | - -$MY_PATH/scripts/set_mrs_workspace.sh -l $WORKSPACE_LOCATION -g $GIT_PATH $NO_BUILD - -## | --------------------- setup workspace -------------------- | - -$MY_WORKSPACE && $MY_PATH/scripts/set_my_workspace.sh -l $WORKSPACE_LOCATION -g $GIT_PATH $NO_BUILD - -## | ------- add workspaces to ROS_WORKSPACES in .bashrc ------ | - -num=`cat ~/.bashrc | grep "ROS_WORKSPACES" | wc -l` -if [ "$num" -lt "1" ]; then - - # set bashrc - echo " -export ROS_WORKSPACES=\"$WORKSPACE_LOCATION/mrs_workspace $WORKSPACE_LOCATION/workspace\"" >> ~/.bashrc - -fi diff --git a/ros_packages/mrs_uav_system/CMakeLists.txt b/ros_packages/mrs_uav_system/CMakeLists.txt new file mode 100644 index 0000000..a52e6eb --- /dev/null +++ b/ros_packages/mrs_uav_system/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.5) +project(mrs_uav_system) + +find_package(catkin REQUIRED) + +catkin_metapackage() diff --git a/ros_packages/mrs_uav_system/package.xml b/ros_packages/mrs_uav_system/package.xml new file mode 100644 index 0000000..2b41266 --- /dev/null +++ b/ros_packages/mrs_uav_system/package.xml @@ -0,0 +1,23 @@ + + + + mrs_uav_system + 1.0.0 + The MRS UAV System metapackage + + Tomas Baca + Tomas Baca + + BSD 3-Clause + + catkin + + mrs_uav_core + mrs_uav_modules + python-is-python3 + + + + + + diff --git a/ros_packages/mrs_uav_system_full/CMakeLists.txt b/ros_packages/mrs_uav_system_full/CMakeLists.txt new file mode 100644 index 0000000..cd3c706 --- /dev/null +++ b/ros_packages/mrs_uav_system_full/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.5) +project(mrs_uav_system_full) + +find_package(catkin REQUIRED) + +catkin_metapackage() + diff --git a/ros_packages/mrs_uav_system_full/package.xml b/ros_packages/mrs_uav_system_full/package.xml new file mode 100644 index 0000000..f708161 --- /dev/null +++ b/ros_packages/mrs_uav_system_full/package.xml @@ -0,0 +1,31 @@ + + + + mrs_uav_system_full + 1.0.0 + The MRS UAV System Full metapackage + + Tomas Baca + Tomas Baca + + BSD 3-Clause + + catkin + + mrs_uav_core + mrs_uav_gazebo_simulation + mrs_uav_coppelia_simulation + mrs_uav_deployment + mrs_uav_modules + mrs_octomap_mapping_planning + + mrs_uav_px4_api + mrs_uav_dji_tello_api + + python-is-python3 + + + + + + diff --git a/scripts/mrs_certificate.sh b/scripts/mrs_certificate.sh deleted file mode 100755 index 74d0295..0000000 --- a/scripts/mrs_certificate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# author: Robert Penicka - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -echo "Installing mrs.felk.cvut.cz certificate in order to enable https requests" -CERT_LOCATION=/tmp/mrs.crt - -echo -n | openssl s_client -connect mrs.felk.cvut.cz:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $CERT_LOCATION -sudo cp $CERT_LOCATION /usr/local/share/ca-certificates/ -sudo update-ca-certificates diff --git a/scripts/set_mrs_workspace.sh b/scripts/set_mrs_workspace.sh deleted file mode 100755 index 5b0a9ad..0000000 --- a/scripts/set_mrs_workspace.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -distro=`lsb_release -r | awk '{ print $2 }'` -[ "$distro" = "18.04" ] && ROS_DISTRO="melodic" -[ "$distro" = "20.04" ] && ROS_DISTRO="noetic" - -debian=`lsb_release -d | grep -i debian | wc -l` -[[ "$debian" -ge "1" ]] && ROS_DISTRO="noetic" && echo we are on DEBIAN - -# shift -OPTIND=1 -NO_BUILD=false -while getopts "g:l:n" options; do - case ${options} in - g) - GIT_PATH=${OPTARG} - echo "Parsed GIT_PATH=$GIT_PATH" - ;; - l) - WORKSPACE_LOCATION=${OPTARG} - echo "Parsed WORKSPACE_LOCATION=$WORKSPACE_LOCATION" - ;; - n) - NO_BUILD=true - echo "NO_BUILD=true" - ;; - esac -done - -[ -z "$WORKSPACE_LOCATION" ] && WORKSPACE_LOCATION="$HOME" -[ -z "$GIT_PATH" ] && GIT_PATH="$HOME/git" - -echo "Setting up workspace: WORKSPACE_LOCATION=$WORKSPACE_LOCATION, GIT_PATH=$GIT_PATH" - -# get the path to this script -APP_PATH=`dirname "$0"` -APP_PATH=`( cd "$APP_PATH" && pwd )` - -WORKSPACE_NAME=mrs_workspace -WORKSPACE_PATH=$WORKSPACE_LOCATION/$WORKSPACE_NAME - -echo "$0: creating $WORKSPACE_PATH/src" -mkdir -p $WORKSPACE_PATH/src - -cd $WORKSPACE_PATH -source /opt/ros/$ROS_DISTRO/setup.bash -command catkin init - -echo "$0: setting up build profiles" -command catkin config --profile debug --cmake-args -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17 -Og' -DCMAKE_C_FLAGS='-Og' -command catkin config --profile release --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17' -command catkin config --profile reldeb --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17' - -# build profile for normal installation -[ -z "$GITHUB_CI" ] && command catkin profile set reldeb - -# build profile for github actions -[ ! -z "$GITHUB_CI" ] && command catkin profile set debug - -command catkin config --extend /opt/ros/$ROS_DISTRO - -# link mrs repositories to the workspace -cd src -ln -sf $GIT_PATH/uav_core -ln -sf $GIT_PATH/simulation - -cd $WORKSPACE_PATH - -if ! $NO_BUILD; then - [ -z "$GITHUB_CI" ] && command catkin build mavros -c --mem-limit 75% - [ ! -z "$GITHUB_CI" ] && command catkin build mavros --limit-status-rate 0.2 --summarize - [ -z "$GITHUB_CI" ] && command catkin build mavlink_sitl_gazebo -c --mem-limit 75% - [ ! -z "$GITHUB_CI" ] && command catkin build mavlink_sitl_gazebo --limit-status-rate 0.2 --summarize - [ -z "$GITHUB_CI" ] && command catkin build mrs_gazebo_common_resources -c --mem-limit 75% - [ ! -z "$GITHUB_CI" ] && command catkin build mrs_gazebo_common_resources --limit-status-rate 0.2 --summarize - [ -z "$GITHUB_CI" ] && command catkin build -c --mem-limit 75% - [ ! -z "$GITHUB_CI" ] && command catkin build --limit-status-rate 0.2 --summarize -fi - -# blackilst our tf2 fork on melodic -if [[ "$ROS_DISTRO" == "melodic" ]]; then - - echo "Blacklisting custom tf2 due to being on melodic" - - cd $WORKSPACE_PATH - catkin config --blacklist "geometry2 test_tf2 tf2 tf2_bullet tf2_eigen tf2_geometry_msgs tf2_kdl tf2_msgs tf2_py tf2_ros tf2_sensor_msgs tf2_tools" - -fi - -num=`cat ~/.bashrc | grep "$WORKSPACE_PATH" | wc -l` -if [ "$num" -lt "1" ]; then - - # set bashrc - echo " -source $WORKSPACE_PATH/devel/setup.bash" >> ~/.bashrc - -fi diff --git a/scripts/set_my_workspace.sh b/scripts/set_my_workspace.sh deleted file mode 100755 index cb42cea..0000000 --- a/scripts/set_my_workspace.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -set -e - -trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG -trap 'echo "$0: \"${last_command}\" command failed with exit code $?"' ERR - -distro=`lsb_release -r | awk '{ print $2 }'` -[ "$distro" = "18.04" ] && ROS_DISTRO="melodic" -[ "$distro" = "20.04" ] && ROS_DISTRO="noetic" - -debian=`lsb_release -d | grep -i debian | wc -l` -[[ "$debian" -eq "1" ]] && ROS_DISTRO="noetic" - -# shift -OPTIND=1 -NO_BUILD=false -while getopts "g:l:n" options; do - case ${options} in - g) - GIT_PATH=${OPTARG} - echo "Parsed GIT_PATH=$GIT_PATH" - ;; - l) - WORKSPACE_LOCATION=${OPTARG} - echo "Parsed WORKSPACE_LOCATION=$WORKSPACE_LOCATION" - ;; - n) - NO_BUILD=true - echo "NO_BUILD=true" - ;; - esac -done - -[ -z "$WORKSPACE_LOCATION" ] && WORKSPACE_LOCATION="$HOME" -[ -z "$GIT_PATH" ] && GIT_PATH="$HOME/git" - -# get the path to this script -APP_PATH=`dirname "$0"` -APP_PATH=`( cd "$APP_PATH" && pwd )` - -WORKSPACE_NAME=workspace -WORKSPACE_PATH=$WORKSPACE_LOCATION/$WORKSPACE_NAME -MRS_WORKSPACE=$WORKSPACE_LOCATION/mrs_workspace - -# create the folder structure -mkdir -p $WORKSPACE_PATH/src - -cd $WORKSPACE_PATH -command catkin init - -echo "$0: setting up build profiles" -command catkin config --profile debug --cmake-args -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17 -Og' -DCMAKE_C_FLAGS='-Og' -command catkin profile set debug -command catkin config --extend $MRS_WORKSPACE/devel - -command catkin config --profile release --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17' -command catkin profile set release -command catkin config --extend $MRS_WORKSPACE/devel - -command catkin config --profile reldeb --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_FLAGS='-std=c++17' -command catkin profile set reldeb -command catkin config --extend $MRS_WORKSPACE/devel - -# build profile for normal installation -[ -z "$GITHUB_CI" ] && command catkin profile set reldeb - -# build profile for github actions -[ ! -z "$GITHUB_CI" ] && command catkin profile set debug - -echo "$0: cloning example packages" -cd $GIT_PATH -[ ! -e example_ros_packages ] && git clone https://github.com/ctu-mrs/example_ros_packages -cd example_ros_packages -gitman install - -echo "$0: linking example packages to $WORKSPACE_LOCATION/workspace" -cd $WORKSPACE_PATH/src -ln -sf $GIT_PATH/example_ros_packages - -echo "$0: building $WORKSPACE_PATH" -cd $WORKSPACE_PATH - -if ! $NO_BUILD; then - [ -z "$GITHUB_CI" ] && command catkin build - [ ! -z "$GITHUB_CI" ] && command catkin build --limit-status-rate 0.2 --summarize -fi - -num=`cat ~/.bashrc | grep "$WORKSPACE_PATH" | wc -l` -if [ "$num" -lt "1" ]; then - - # set bashrc - echo " -source $WORKSPACE_PATH/devel/setup.bash" >> ~/.bashrc - -fi