ROS2 MRS UAV system

March 3, 2026 ยท View on GitHub

logos

thumbnail

The Multi-robot Systems Group is a robotics lab at the Czech Technical University in Prague. We specialize in multi-rotor helicopters, and for them specifically, we develop this control, estimation, and simulation system. We think real-world and replicable experiments should support excellent research and science in robotics. Thus, our platform is built to allow safe real-world experimental validation of approaches in planning, control, estimation, computer vision, tracking, and more.

ROS2

Do you want to monitor the state of transition to ROS2 in real time? Check the following diagram:

System properties

The system is

  • built on the Robot Operating System Jazzy,
  • meant to be executed entirely onboard on a companion computer,
  • can control underactuated multirotor helicopters,
  • contains control, state estimation, mapping, and planning pipelines.

Documentation

The primary documentation source is here: https://ctu-mrs.github.io/. 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). Maintaining up-to-date documentation for such an audience is hard work since we mostly develop 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 control and estimation system are described 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).

Installation

Native installation

  1. Install the Robot Operating System (Jazzy):
curl https://ctu-mrs.github.io/ppa2-stable/add_ros_ppa.sh | bash
sudo apt install ros-jazzy-desktop-full ros-dev-tools
  1. Configure your ROS environment according to https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html#setup-environment

  2. Add the stable PPA into your apt-get repository:

curl https://ctu-mrs.github.io/ppa2-stable/add_ppa.sh | bash
  • >>> Special instructions for the MRS System developers <<<
    • Instead of the stable PPA, you can add the unstable PPA, for which the packages are build immediatelly after being pushed to ros2.
    • If you have both PPAs, the unstable has a priority.
    • Beware! The unstable PPA might be internally inconsistent, buggy and dangerous!

    • If you use the shell additions described here, you should not manually source ROS or your workspaces.
    • You should normally use zenoh as the RMW implementation.
  1. Install the MRS UAV System:
sudo apt install ros-jazzy-mrs-uav-system-full
  1. Start the example MRS simulation session:
cd /opt/ros/jazzy/share/mrs_multirotor_simulator/tmux/mrs_one_drone
./start.sh

System components

Main metapackagesContentsRepositoryPackage
MRS UAV SystemUAV Core & UAV Modulesmrs_uav_systemros-jazzy-mrs-uav-system
MRS UAV System - FullAll of the bellowmrs_uav_systemros-jazzy-mrs-uav-system-full
Optional Modules & metapackagesRepositoryPackage
UAV Coremrs_uav_coreros-jazzy-mrs-uav-core
UAV Modulesmrs_uav_modulesros-jazzy-mrs-uav-modules
Octomap Mapping+Planningmrs_octomap_mapping_planningros-jazzy-mrs-octomap-mapping-planning
OpenVINS Coremrs_open_vins_coreros-jazzy-mrs-open-vins-core
PointLIO Coremrs_point_lio_coreros-jazzy-mrs-point-lio-core
Precise LandingTODOTODO
ALOAM CoreTODO (?, probably not)TODO
LIO-SAM CoreTODO (?, probably not)TODO
Hector CoreTODO (?, probably not)TODO
SimulatorsRepositoryPackage
MRS Multirotor Simulatormrs_multirotor_simulatorros-jazzy-mrs-multirotor-simulator
FlightForge Simulatormrs_uav_flightforge_simulatorros-jazzy-mrs-uav-flightforge-simulator
Gazebo Simulatormrs_uav_gazebo_simulationros-jazzy-mrs-uav-gazebo-simulator
Coppelia SimulatorTODOTODO
Hardware API pluginsRepositoryPackage
PX4 APImrs_uav_px4_apiros-jazzy-mrs-uav-px4-api
DJI Tello APImrs_uav_dji_tello_apiros-jazzy-mrs-uav-dji-tello-api

Example packages

ExamplesRepository
Core examplesmrs_core_examples
Computer Vision examplesmrs_computer_vision_examples
Gazebo Custom Drone exampleTODO

Build status (Buildfarm)

We utilize acceptance tests to determine the releasaiblity of the system and to release the system automatically. The stable version of our system should be installable and working allways regardless of the state of the tests and red flags below.

Docker - stable/unstable rolling release

Download from Dockerhub: ctumrs/mrs_uav_system

The multiarch (AMD and ARM64) docker image contains the ros-jazzy-mrs-uav-system-full ROS package and, with that, all the MRS dependencies.

ROS2 Build status (in development)(Buildfarm2)

PPAs

StableTestingUnstable
stable-ppa2-buildDeployunstable-ppa2-build

Docker pipelines

Any package within the system have the option to generate a docker image. These are typically thirdparty package with complex dependencies that can not be easily satisfied through the apt installation system. Additionally, the mrs-uav-system package generates a docker image with the full system.

StableUnstable
MRS ROS Packagesstable_mrs_dockersunstable_mrs_dockers
Thirdparty ROS packagesstable_thirdparty_dockersunstable_thirdparty_dockers

Testing

StableRelease candidateUnstableTest coverage
test_stablebuild_testing_test_releasetest_unstabletesting-ppa2-build

x86-64/AMD64

StableRelease CandidateUnstable
MRS ROS Packagesstable-mrs-amd64build_testing_test_releaseunstable-mrs-amd64
Thirdparty ROS packagesstable-thirdparty-amd64testing--thirdparty-amd64unstable-thirdparty-amd64
Non-ROS packagesstable-nonbloom-amd64testing--nonbloom-amd64unstable-nonbloom-amd64

AARCH64/ARM64

StableUnstable
MRS ROS Packagesstable-mrs-arm64unstable-mrs-arm64
Thirdparty ROS packagesstable-thirdparty-arm64unstable-thirdparty-arm64
Non-ROS packagesstable-nonbloom-arm64unstable-nonbloom-arm64

Disclaimer

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.