afxalz / 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)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

UVDAR drivers and processing

Build status Build Status Build Status

Description

This package contains the core signal processing and pose estimation software components of the UVDAR system necessary for running it on a MAV.

  • the UVDAR system is a visual mutual relative localization system for cooperating micro-scale UAVs
  • based on ultraviolet-sensitive cameras and blinking ultraviolet markers
  • can be used both indoors and outdoors without infrastructure
  • robust to a variety of lighting conditions

System requirements

Hardware:

  • One or more calibrated (Using the OCamCalib model) grayscale camera sensors with ultraviolet bandpass filters. In our setup these are:

    • mvBlueFOX MLC200wG cameras
    • Sunnex DSL215 lenses with ~180 degrees of horizontal FOV
    • Midopt BP365-R6 filters with our custom holder between the sensor and the lens
  • Blinking ultraviolet LEDs (395nm) attached to extreme points of the target UAVs. In our setup, these are:

    • ProLight Opto PM2B-1LLE
    • Attached to the ends of the arms of the UAVs, respectively on the top of the UAVs for "beacons"
    • For quadrotors, the markers comprise two LEDs each, rotated 90° from each other in the "yaw" axis of the UAV

Software

For testing in simulation

  • mrs_uav_system - Our ROS-based ecosystem for flying and testing multi-UAV systems
  • uvdar_gazebo_plugin - Emulation library that produces meta-data that is used for generation of synthetic UV LED image stream in simulation

Installation

Install the dependencies. Clone this repository into a ROS workspace as a package. If you are using the mrs_modules meta package (currently only accessable internally to MRS staff, to be released at later date), this repository is already included. Build the package using catkin tools (e.g. catkin build uvdar_core)

Testing

In order to test the system in simulation, install all software dependencies including those designated for testing in simulation (Above) and run one of the two start scripts in the scripts folder:

Note, that both the scripts slow down the simulation below real-time. This is necessary, since if Gazebo slows down automatically due to insufficient processing power, the blinking signals get corrupted. Test the maximum admissible real-time factor for your computer by checking how far you can increase / have to decrease it such that the real-time factor consistently stays at the value it was set to.

Node description

The package comprises multiple ROS nodes (N) and nodelets (n):

  • UVDARDetector - n - detects bright points from the UV camera image. These are used as candidates for UV LED markers

  • UVDARBlinkProcessor - n - Extracts blinking frequencies and image positions of the markers detected previously

  • UVDARPoseCalculator - N - Calculates approximate pose and error covariances of the MAVs carrying the UV LED markers. Note, that this is an example for the specific layouts on quadrotors and hexarotors we use. If you need a different layout, you will also need to write your custom pose calculation

  • UVDARKalman - N - Filters out sets of detected poses with covariances based on positions or the included identities. This filtering occurs in a selected coordinate frame

  • UVDARBluefoxEmulator - n - Generates an image stream similar to the output of our Bluefox cameras with UV bandpass filters (above). This image is currently rudimentary, with background of a constant shade of grey and white circles where the markers appeared. The function of this node depends on our uvdar_gazebo_plugin, with which it needs to communicate

  • MaskGenerator - N - Generates masks for specific camearas on specific MAVs. This is necessary to suppress detections of marers on the given observer, as well as reflection from e.g. its metallic surfaces in front of the camera. The masks can be also generated manually.

  • FrequencySetter - N - Sends commands to our controller boards that set the frequencies of the blinking UV LEDs on the current MAV

Acknowledgements

MRS group

This work would not be possible without the hard work, resources and support from the Multi-Robot Systems (MRS) group from Czech Technical University.

Included libraries

This package contains the following third-party libraries by the respective authors:

  • OCamCalib calibration system by Davide Scaramuzza - only the C++ sources
  • P3P library by Laurent Kneip

About

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)

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 95.0%Language:Shell 1.9%Language:CMake 1.6%Language:C 1.5%