Skip to content

ctu-mrs/mrs_uav_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

339 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ROS2 MRS UAV system

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.

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 metapackages Contents Repository Package
MRS UAV System UAV Core & UAV Modules mrs_uav_system ros-jazzy-mrs-uav-system
MRS UAV System - Full All of the bellow mrs_uav_system ros-jazzy-mrs-uav-system-full
Optional Modules & metapackages Repository Package
UAV Core mrs_uav_core ros-jazzy-mrs-uav-core
UAV Modules mrs_uav_modules ros-jazzy-mrs-uav-modules
Octomap Mapping+Planning mrs_octomap_mapping_planning ros-jazzy-mrs-octomap-mapping-planning
OpenVINS Core mrs_open_vins_core ros-jazzy-mrs-open-vins-core
PointLIO Core mrs_point_lio_core ros-jazzy-mrs-point-lio-core
Precise Landing TODO TODO
ALOAM Core TODO (?, probably not) TODO
LIO-SAM Core TODO (?, probably not) TODO
Hector Core TODO (?, probably not) TODO
Simulators Repository Package
MRS Multirotor Simulator mrs_multirotor_simulator ros-jazzy-mrs-multirotor-simulator
FlightForge Simulator mrs_uav_flightforge_simulator ros-jazzy-mrs-uav-flightforge-simulator
Gazebo Simulator mrs_uav_gazebo_simulation ros-jazzy-mrs-uav-gazebo-simulator
Coppelia Simulator TODO TODO
Hardware API plugins Repository Package
PX4 API mrs_uav_px4_api ros-jazzy-mrs-uav-px4-api
DJI Tello API mrs_uav_dji_tello_api ros-jazzy-mrs-uav-dji-tello-api

Example packages

Examples Repository
Core examples mrs_core_examples
Computer Vision examples mrs_computer_vision_examples
Gazebo Custom Drone example TODO

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

Stable Testing Unstable
stable-ppa2-build Deploy unstable-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.

Stable Unstable
MRS ROS Packages stable_mrs_dockers unstable_mrs_dockers
Thirdparty ROS packages stable_thirdparty_dockers unstable_thirdparty_dockers

Testing

Stable Release candidate Unstable Test coverage
test_stable build_testing_test_release test_unstable testing-ppa2-build

x86-64/AMD64

Stable Release Candidate Unstable
MRS ROS Packages stable-mrs-amd64 build_testing_test_release unstable-mrs-amd64
Thirdparty ROS packages stable-thirdparty-amd64 testing--thirdparty-amd64 unstable-thirdparty-amd64
Non-ROS packages stable-nonbloom-amd64 testing--nonbloom-amd64 unstable-nonbloom-amd64

AARCH64/ARM64

Stable Unstable
MRS ROS Packages stable-mrs-arm64 unstable-mrs-arm64
Thirdparty ROS packages stable-thirdparty-arm64 unstable-thirdparty-arm64
Non-ROS packages stable-nonbloom-arm64 unstable-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.

Contributors