DOI: 10.5281/zenodo.13768604
title: AAU_Multi_Agent_UVDAR_Dataset

description: AAU_Multi_Agent_UVDAR_Dataset

## Introduction 

The aim of the dataset is to collect relative position measurements (with the origin in the body of the vehicle) between a set of UAVs with precise groundtruthing through a motion capture system for evaluations.

This dataset was recorded in the [Dronehall](https://www.aau.at/en/research/research-profile/the-drone-hall-at-the-university-of-klagenfurt/) of the University Klagenfurt, with three autonomous [F450](https://github.com/ctu-mrs/mrs_uav_system?tab=readme-ov-file#unmanned-aerial-vehicles) unmanned aerial vehicles (UAVs) from [Multi-robot Systems (MRS) group](http://mrs.felk.cvut.cz/) of the [Czech Technical University in Prague](https://www.cvut.cz/en).

The UAVs were equipped with the [UVDAR system](https://github.com/ctu-mrs/uvdar_core), a planar scanning LIDAR sensor (RPLIDAR A3), a laser range finder (Garmin LidarLite V3) and a Pixhawk 6C flight controller.The UVDAR system is a visual mutual relative localization (position and orientation) system for cooperating micro-scale UAVs based on ultraviolet-sensitive cameras and blinking ultraviolet markers.Note: the UVDAR system was configured to provide relative position information only, thus the estimated orientation is wrong and set to identity! To assess the measurements obtained from the UVDAR system, a [relative pose evaluation python package] was implemented.

To evaluate the measurments recorded, execute the [eval.sh](./tools/eval.sh) script in the `tools` folder, which creates a folder `eval` in the root of that directory with various plots and statistics for each sequence listed below. Note that the package needs to be installed first, see below. 

A hybrid dataset with a synthetic Gaussian measurement noise for the UVDAR measurement can be generated with the [add_noise.sh](./tools/add_noise.sh) script.

Each sequence contains the recored bag file in the root, the ground truth pose of the UAVs in a CSV file, and image of the 3D trajectory and a subfolder `hybrid` (syntehthic UVDAR measurmeents with a standard deviation of 0.3 m for the position and 0.1 rad for the orientation). Different synthetic datasets can be generated on demand by running [add_synthetic_meas](./tools/add_synthetic_meas.sh) in the `tools` folder. 

## Setup

```pip install --upgrade  cnspy-relative-pose-evaluation```

## Sequences

| Name                      | #  | Notes                                                                                                                      | Trajectory length [m] | D [s] | UAVs         |
|---------------------------|----|----------------------------------------------------------------------------------------------------------------------------|-----------------------|-------|--------------|
| static_test               | 3  | Agents standing still on the ground. Agents were facing each other                                                         | {4.3, 0.65, 0.31}     | 86    | {10, 11, 12} |
| one_takesoff_two_onground | 3  | Agents on the ground, one hovering and later manually controlled                                                           | {0.33, 21.5, 3.5}     | 222   | {10, 11, 12} |
| two_takeoff_land          | 2  | Agents (10+12) hovering, one lands earlier (battery low)                                                                   | {4.7, 3.6} m          | 89    | {10, 12}     |
| two_yaxis_looped          | 2  | Agents (10+12) were facing each other, they hovered for a while, and started moving in their y-axis. One landed mid flight | {27.1, 16.3}          | 25    | {10, 12}     |
| two_yaxis_looped2         | 2  | Agents (10+12) were facing each other and started moving in their y-axis.                                                  | {26.4, 17.7}          | 149   | {10, 12}     |
| two_octagon               | 2  | Agents were facing each other and performed a octagon                                                                      | {44.3, 41.6}          | 171   | {10, 11}     |
| two_spiral_2to3m          | 2  | Spiral from 2m to 3m (one loop), drones facing each other                                                                  | {45.6, 42.4}          | 158   | {10, 11}     |
| two_spiral_2to4m          | 2  | Spirals from 2m to 4m (two loops), drones facing each other, one drone landed mid flight.                                  | {33.8, 45.7}          | 188   | {10, 11}     |
| two_octagon_one90deg      | 2  | Agents were facing each other 90 deg shifted and performed an octagon                                                      | {40, 36.7}            | 154   | {10, 11}     |
| two_loiter_one90deg       | 2  | Agents facing each other at 2m height, while loitering                                                                     | {37.1, 35.3}          | 197   | {10, 11}     |
| two_yaxis_one_hovers      | 3  | Two agents along y-axis, one hovers, one landed mid flight                                                                 | {19.9, 14.5, 7.3}     | 133   | {10, 11, 12} |
| two_spiral_one_hovers     | 3  | Two agents facing each other and spiraled from 2m to 4m (2 loops), one hovers                                              | {64.1, 62.4, 18.6}    | 216   | {10, 11, 12} |
| loiter_spiral_yaxis       | 3  | One spirals from 2m to 4m,  one loiters, one along the y-axis (landed mid flight)                                          | {55.7, 55.1, 20.1}    | 219   | {10, 11, 12} |

 ## Contained topics:

```topics:      /uav10/data_handler/uvdar_fcu           775 msgs    : mrs_msgs/PoseWithCovarianceArrayStamped             /uav10/hector_mapping/slam_out_pose    1103 msgs    : geometry_msgs/PoseStamped                           /uav10/hw_api/distance_sensor          7332 msgs    : sensor_msgs/Range                                   /uav10/mavros/extended_state             86 msgs    : mavros_msgs/ExtendedState                           /uav10/mavros/imu/data_raw             8635 msgs    : sensor_msgs/Imu                                     /uav10/mavros/imu/mag                  7452 msgs    : sensor_msgs/MagneticField                           /uav10/mavros/imu/static_pressure      1605 msgs    : sensor_msgs/FluidPressure                           /uav10/mavros/state                    8629 msgs    : mavros_msgs/State                                   /uav10/vrpn_client/raw_pose           10396 msgs    : geometry_msgs/PoseStamped                           /uav11/data_handler/uvdar_fcu           728 msgs    : mrs_msgs/PoseWithCovarianceArrayStamped             /uav11/hector_mapping/slam_out_pose    1109 msgs    : geometry_msgs/PoseStamped                           /uav11/hw_api/distance_sensor          7331 msgs    : sensor_msgs/Range                                   /uav11/mavros/extended_state             86 msgs    : mavros_msgs/ExtendedState                           /uav11/mavros/imu/data_raw             8642 msgs    : sensor_msgs/Imu                                     /uav11/mavros/imu/mag                  7510 msgs    : sensor_msgs/MagneticField                           /uav11/mavros/imu/static_pressure      1606 msgs    : sensor_msgs/FluidPressure                           /uav11/mavros/state                    8642 msgs    : mavros_msgs/State                                   /uav11/vrpn_client/raw_pose           10402 msgs    : geometry_msgs/PoseStamped                           /uav12/data_handler/uvdar_fcu          2180 msgs    : mrs_msgs/PoseWithCovarianceArrayStamped             /uav12/hector_mapping/slam_out_pose    1173 msgs    : geometry_msgs/PoseStamped                           /uav12/hw_api/distance_sensor          7357 msgs    : sensor_msgs/Range                                   /uav12/mavros/extended_state             87 msgs    : mavros_msgs/ExtendedState                           /uav12/mavros/imu/data_raw             8666 msgs    : sensor_msgs/Imu                                     /uav12/mavros/imu/mag                  7479 msgs    : sensor_msgs/MagneticField                           /uav12/mavros/imu/static_pressure      1616 msgs    : sensor_msgs/FluidPressure                           /uav12/mavros/state                    8659 msgs    : mavros_msgs/State                                   /uav12/vrpn_client/raw_pose            1868 msgs    : geometry_msgs/PoseStamped   types:       geometry_msgs/PoseStamped               [d3812c3cbc69362b77dc0b19b345f8f5]             mavros_msgs/ExtendedState               [ae780b1800fe17b917369d21b90058bd]             mavros_msgs/State                       [65cd0a9fff993b062b91e354554ec7e9]             mrs_msgs/PoseWithCovarianceArrayStamped [3dc32bc5b82667712bb3f8fdf00477a4]             sensor_msgs/FluidPressure               [804dc5cea1c5306d6a2eb80b9833befe]             sensor_msgs/Imu                         [6a62c6daae103f4ff57a132d6f95cec2]             sensor_msgs/MagneticField               [2f3b0b43eed0c9501de0fa3ff89a45aa]             sensor_msgs/Range                       [c005c34273dc426c67a020a87bc24148]```

## Credit

This code was written by the maintainer with the [Control of Networked System (CNS)](https://www.aau.at/en/smart-systems-technologies/control-of-networked-systems/), University of Klagenfurt, Klagenfurt, Austria.The dataset was recorded in collaboration with the [Multi-robot Systems (MRS) group](http://mrs.felk.cvut.cz/) of the [Czech Technical University in Prague](https://www.cvut.cz/en).

* [Roland Jung](https://www.aau.at/team/jung-roland/)* [Jiří Horyna ](https://mrs.fel.cvut.cz/members/phdstudents/jiri-horyna)* [Martin Saska](https://mrs.fel.cvut.cz/members/martin-saska)* [Stephan Weiss](https://www.aau.at/team/weiss-stephan-michael/)

## License

This software is made available to the public to use (_source-available_), licensed under the terms of the BSD-2-Clause-License with no commercial use allowed, the full terms of which are made available in the `LICENSE` file. No license in patents is granted.

Usage for academic purposes

If you use this software in an academic research setting, please cite thecorresponding [academic paper] and consult the `LICENSE` file for a detailed explanation.

```latex@inproceedings{jung_uvdarbdataset_2024,   author   = {Roland Jung, Jiri Horyna, Martin Saska, and Stephan Weiss},   journal  = {tbd},   doi      = {tbd},   title    = {tbd},   year     = {2024},}```