• Stars
    star
    268
  • Rank 153,144 (Top 4 %)
  • Language
    Shell
  • License
    BSD 3-Clause "New...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The entry point to the MRS UAV system.

Multi-robot Systems Group UAV system

logos

thumbnail

The Multi-robot Systems Group is a robotics lab at the Czech Technical University in Prague. We mostly work with multi-rotor helicopters, and for them specifically, we develop this control, estimation, and simulation platform. 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.

Meta-repositories

These meta-repositories aggregate related packages.

Component 20.04 Description
mrs_uav_system Build Status Integrates uav_core and simulation
uav_core Build Status The minimum needed to fly a drone
simulation Build Status Simulation resources
uav_modules Build Status Optional UAV modules, drivers and utils
octomap_mapping_planning Build Status Octomap Mapping & Planning for UAVs
linux-setup Build Status Tomas's Linux configuration

System properties

The platform is

  • built using Robot Operating System Noetic,
  • meant to be executed entirely onboard,
  • can be deployed on any multi-rotor vehicle, given it is equipped with a PX4-compatible flight controller,
  • for both indoor and outdoor,
  • supports multi-robot experiments using Nimbro network communication.
  • provides both: agile flying and robust control.

Documentation

The primary source of documentation is here: https://ctu-mrs.github.io/. However, the website only scratches a 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.

The system follows a description presented in the article doi.org/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

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.

Model Simulation Real UAV
DJI f330
DJI f450
Holybro x500
DJI f550
Tarot t650
NAKI II

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 MRS System-depended optional plugins and resources Build Status
Example ROS packages MRS ROS examples Build Status
Nimbro network ROS communication layer for multiple independent machines Build Status
MRS optic flow GPU-accelerated optic flow alorithm for UAV odometry Build Status
Hector SLAM 2D Laser-based LIDAR SLAM, how to
Hector SLAM - MRS fork + Nodeleted, how to Build Status
MRS Serial serial line interface to ROS, communicates using the BACA protocol Build Status
UVDAR mutual localization of UAVs using Ultra-Violet LED blinkers Build Status
UVDAR gazebo plugin Gazebo plugin for UVDAR Build Status
trajectory loader Loading UAV trajectories from CSV files Build Status
Bluefox2 MV Bluefox2 driver, MRS fork Build Status
Object detection Object detection by color segmentation Build Status
MRS utils Development utils Build Status
OctomapTools Octomap visualization and manipulation
MBZIRC 2020 - Wall Building System for automatic wall-building for MBZIRC 2020 Build Status
Summer School 2019 Summer School 2019 task - MTSP planning Build Status
Summer School 2020 Summer School 2020 task - UVDAR leader-follower Build Status
Summer School 2022 Summer School 2022 task - Multirobotic inspection and monitoring Build Status

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:

Installation

Singularity and Docker

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.

Our Singularity images are built almost completely from Docker images. The following link points to our Docker HUB organization.

Native installation (not recommended)

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 for working with the MRS system!

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, simulation, example_ros_packages into ~/git,
  • install more dependencies such as tmux and tmuxinator
  • create our ros workspace (guide) in ~/mrs_workspace for the uav_core and simulation,
  • create a ros workspace in ~/workspace for examples (guide),
  • link our packages to the workspaces (guide),
  • compile the workspaces,
  • add configuration lines into your ~/.bashrc.

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:

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

"I already have ROS and just want to peek in"

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 repository integrates our UAV control system. Please follow its README for further instructions on how to install its particular dependencies.

The 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.

"I want the Linux environment people from MRS works with"

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, for more information. Installation is not obligatory and the MRS UAV system will work without it.

Paste following code into your terminal and press enter

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

For help with using the system, you can also refer to the MRS Cheatsheet.

Running the simulation

If you have successfully installed the system, you can continue with starting the simulation.

More Repositories

1

RMS

Code for RA-L paper "RMS: Redundancy-Minimizing Point Cloud Sampling for Real-Time Pose Estimation"
C++
92
star
2

ros2_examples

Examples for individual ROS2 functionalities inc. Subscribers, Publishers, Timers, Services, Parameters. ...
C++
61
star
3

uav_core

The main integrator of MRS UAV packages in ROS, part of the "mrs_uav_system".
Python
51
star
4

simulation

The OLD Gazebo Simulation repository.
Shell
48
star
5

mrs_uav_controllers

Tracking controllers for UAVs in ROS, part of the "uav_core" package.
C++
36
star
6

mrs_uav_trackers

UAV reference trackers in ROS, part of the "uav_core" package.
C++
27
star
7

summer-school-2022

2022 IEEE RAS Summer School on Multi-Robot Systems
Python
24
star
8

summer-school-2024

2024 IEEE RAS Summer School on Multi-Robot Systems
Python
22
star
9

spheremap

C++
22
star
10

mrs_singularity

Singularity definitions, scripts and resources for the MRS UAV System.
Shell
21
star
11

space_filling_forest_star

Space-Filling Forest* for milti-goal path planning
C++
17
star
12

mrs_uav_odometry

UAV sensor fusion in ROS, part of the "uav_core" package.
C++
17
star
13

EnergyAwareMCPP

Energy-aware Multi-UAV Coverage Mission Planning with Optimal Speed of Flight
C++
16
star
14

mrs_cheatsheet

Cheatsheet for the "mrs_uav_system", ROS, Linux, Tmux, Vim and more.
TeX
15
star
15

mtsp_planning_task

A path-planning task for the summer school based on the Multiple Traveling Salesman Problem (MTSP)
Python
14
star
16

mrs_uav_gazebo_simulation

Metapackage for the MRS UAV Gazebo simulation pipeline.
Jinja
14
star
17

mrs_gazebo_common_resources

Resources for Gazebo/ROS simulator, part of the "simulation" package.
C++
13
star
18

CTopPRM

CTopPRM
C++
13
star
19

slam_datasets

Datasets for laser-based SLAM running on-board UAVs.
Python
12
star
20

summer-school-2023

2023 IEEE RAS Summer School on Multi-Robot Systems
Python
12
star
21

mrs_octomap_mapping_planning

Metapackage containing MRS Octomap-based 3D mapper and planner.
Shell
11
star
22

pacnav

This repository contains the TMUX scripts to run the Gazebo simulations and real-world experiments for the paper entitled "PACNav: A Communication and External Localization Free Collective Swarm of UAVs"
C++
11
star
23

mrs_simulation

The ROS part of the "simulation" package.
Jinja
10
star
24

mrs_octomap_planner

Octomap-based planner for UAVs.
C++
9
star
25

uvdar_core

UVDAR is a system for mutual UAV localization using Ultra-Violet LED blinkers. This package contains the core software for using it onboard of MAVs (drones)
C++
8
star
26

mrs_uav_managers

High-level UAV managers in ROS, part of the "uav_core" package.
C++
7
star
27

aerialcore_simulation

Gazebo models and worlds for Aerial-Core project.
C++
6
star
28

mrs_computer_vision_examples

Example ROS package for computer vision, part of the "mrs_uav_system".
C++
6
star
29

ouster

Modified Ouster lidar driver. Changed to nodelet structure.
C++
6
star
30

leader_follower_task

Seminar task for the MRS Summer school 2020. The goal is to develop a controller for a follower drone in order to keep up with an evading leader drone.
Shell
5
star
31

uvdar_leader_follower

Part of the leader_follower_task. All your coding and changes should happen in this package
C++
5
star
32

object_detect

A ROS node for detection of colorful objects using LUT segmentation.
C++
5
star
33

mrs_multirotor_simulator

Minimalistic ROS node for simulating quadrotor dynamics, part of the "mrs_uav_core" package.
C++
5
star
34

mrs_uav_status

TUI status & control bar for UAVs in ROS, part of the "uav_core" package.
C++
5
star
35

mrs_lib

UAV C++ libraries, mostly ROS-related, part of the "mrs_uav_core" package.
C++
5
star
36

uav_localize

Implementation of a multi-target tracking and filtering and multi-source fusion algorithm.
Python
4
star
37

uav_detect

Marker-less UAV detection project.
4
star
38

mrs_serial

A serial line interface to ROS. Communicates using the BACA protocol.
C++
4
star
39

mrs_rviz_plugins

Custom RVIZ plugins. Part of the "mrs_uav_core".
C++
4
star
40

example_ros_uav

Example ROS package that showcases the work with the "mrs_uav_system".
C++
4
star
41

mrs_bumper

Aggregator of sensor data for robot obstacle bumper. Part of the "uav_core" package.
C++
3
star
42

mrs_msgs

MRS ROS messages, part of the "uav_core" package.
CMake
3
star
43

mrs_vins_imu_filter

Filtering of IMU data to be used in VINS algorithms
C++
3
star
44

mrs_octomap_tools

Tools for OctoMap visualization and manipulation.
C++
3
star
45

mrs_core_examples

Integrates other example packages. Part of the "mrs_uav_system".
C++
3
star
46

coop_uav_dataset

Heterogeneous UAV dataset
Shell
3
star
47

mbzirc_2020_wall_building

Mission control, Visual detection, Estimation, Mapping and Planning for the wall building challenge of the MBZIRC 2020 competition.
JavaScript
3
star
48

subt_ign_resources

Model and world files for ignition Gazebo related to the DARPA SubT Virtual Challenge
Shell
3
star
49

mrs_uav_core

ROS metapackage for UAV control, state estimation, trajectory generation and tracking.
Shell
3
star
50

mrs_uav_unreal_simulation

C++
3
star
51

uvdar_gazebo_plugin

Gazebo plugin for emulating the output of UV-sensitive cameras with fisheye lenses
C++
2
star
52

mrs_gazebo_extras_resources

Resources for Gazebo/ROS simulator that depends on packages (e.g., mrs_msgs, mrs_lib) inside of the MRS system. This is additional part to the "simulation" package.
C++
2
star
53

repredictor

Implementation of the re-prediction algorithm for fusion of variably delayed data.
C++
2
star
54

mrs_uav_state_estimators

UAV state estimators in ROS, part of the "mrs_uav_core" package.
C++
2
star
55

difec-ron

Distributed formation-enforcing control for UAVs robust to observation noise in relative pose measurements
C++
2
star
56

mrs_optic_flow

Optic flow for UAV odometry in ROS.
C++
2
star
57

thesis_template

Bachelor's / Master's / Doctoral Thesis LaTeX template.
TeX
2
star
58

vision_datasets

Python
2
star
59

mrs_pcl_tools

Package grouping smaller nodes for processing, filtering, and general online/offline work with pointclouds.
C++
2
star
60

summer_school_supervisor

A supervisor node for the leader-follower summer school task. Makes sure, that commands produced by the Follower node are reasonable.
C++
2
star
61

bluefox3_ros

a ROS driver for the mvBlueFOX3 cameras
Shell
2
star
62

mrs_utils

C++
1
star
63

mrs_hw_uvdar

Hardware for UVDAR.
C++
1
star
64

px4_interface

Interface between PX4 and the MRS UAV System.
Shell
1
star
65

ctu-mrs.github.io

CTU MRS system Github pages.
Shell
1
star
66

Mid360_simulation_plugin

Our MRS version of the Livox Mid360 Gazebo plugin.
C++
1
star
67

color_picker

A semi-autonomous tool for picking a color in HSV and LAB spectrum for color segmentation and detection based on the ROS RQT plugin.
Python
1
star
68

mrs_uav_coppelia_simulation

Coppelia simulation metapackage.
Python
1
star
69

ppa-stable

Personal Package Archive (PPA) for MRS deb packages.
Shell
1
star
70

uav_modules

The OLD UAV Modules.
Shell
1
star
71

image_labeling_utils

C++
1
star
72

vns-prm-pop

Implementation of Variable Neighborhood Search with asymptotically optimal sampling-based Probabilistic Roadmap for the Physical Orienteering Problem - a problem of planning collision-free trajectory for e.g. a drone that visits predefined target locations in an environment with obstacles
C
1
star
73

mrs_uav_hw_api

Abstraction layer between the MRS UAV System and a UAV flight controller, part of the "mrs_uav_core" package.
C++
1
star
74

darpa_subt_cnn_training

Python
1
star
75

mrs_manipulator

CMake
1
star
76

mrs_open_vins_estimator_plugin

State estimation plugin based on corrections from the open-vins algorithm. Can be loaded by EstimationManager to be used for state estimation in the control feedback loop.
CMake
1
star
77

sketch4latex

A clone / fork of the Sketch for Latex tool by Eugene Ressler
C
1
star
78

mrs_mavros_interface

An interface to Mavros, part of the "uav_core" package.
C++
1
star
79

CMCP_wall_building_planner

Cooperative Masonry Construction Planner for Wall Building with UAVs
C++
1
star
80

uvdar_multirobot_simulator

Simple tool to work with klaxalk's multi-uav simulator. It produces approximate 3D pose estimation of drones in the format and noise properties approximating the UVDAR system.
C++
1
star
81

buildfarm_coredumps

1
star
82

vns_dopn

Variable Neighborhood Search for the Dubins Orienteering Problem with Neighborhoods
C++
1
star
83

mrs_subt_planning_lib

C++
1
star