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.
These meta-repositories aggregate related packages.
Component | 18.04 | 20.04 | Description |
---|---|---|---|
mrs_uav_system | Integrates uav_core and simulation | ||
uav_core | The minimum needed to fly a drone | ||
simulation | Simulation resources | ||
uav_modules | Optional UAV modules, drivers and utils | ||
octomap_mapping_planning | Octomap Mapping & Planning for UAVs | ||
linux-setup | Tomas's Linux configuration |
The platform is
- built using Robot Operating System (Melodic, 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.
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).
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 |
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 | 18.04 | 20.04 |
---|---|---|---|
MRS Gazebo Extra Resources | MRS System-depended optional plugins and resources | ||
Example ROS packages | MRS ROS examples | ||
Nimbro network | ROS communication layer for multiple independent machines | ||
MRS optic flow | GPU-accelerated optic flow alorithm for UAV odometry | ||
Hector SLAM | 2D Laser-based LIDAR SLAM, how to | ||
Hector SLAM - MRS fork | + Nodeleted, how to | ||
MRS Serial | serial line interface to ROS, communicates using the BACA protocol | ||
UVDAR | mutual localization of UAVs using Ultra-Violet LED blinkers | ||
UVDAR gazebo plugin | Gazebo plugin for UVDAR | ||
trajectory loader | Loading UAV trajectories from CSV files | ||
Bluefox2 | MV Bluefox2 driver, MRS fork | ||
Object detection | Object detection by color segmentation | ||
MRS utils | Development utils | ||
OctomapTools | Octomap visualization and manipulation | ||
MBZIRC 2020 - Wall Building | System for automatic wall-building for MBZIRC 2020 | ||
Summer School 2019 | Summer School 2019 task - MTSP planning | ||
Summer School 2020 | Summer School 2020 task - UVDAR leader-follower |
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:
- March 8, 2022: mrs_lib::Transformer interface updated
- December 09, 2021: not building with --march=native anymore
- December 25, 2020: Updated controller interface, updated thrust curve parametrization
- December 15, 2020: Rework of simulation UAV spawning mechanism, Noetic update
- November 12, 2020: GPS coordinates within Gazebo world need changing
- November 12, 2020: Rangefinder fusion needs enabling in simulation sessions
Singularity images with our system are the preferred way how a normal user should interract with our sustem. Pleaase, 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.
Following options are provided, depending on who you are and what you want to do with the platform. Beware, installing the system into a virtual machine may not be a good idea for you, unless you have a very powerfull computer. Real-time simulations in Gazebo perform very poorly in virtual machines.
In this 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,
- added 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
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.
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.
If you have successfully installed the system, you can continue with starting the simulation.