Coder Social home page Coder Social logo

tiers / uwb-drone-dataset Goto Github PK

View Code? Open in Web Editor NEW
61.0 6.0 23.0 37.74 MB

Ultra-wideband (UWB) Localization for Autonomous UAV Flight in GNSS-denied Environments

CMake 0.04% Python 0.08% C 98.84% Assembly 1.04% Makefile 0.01%
uwb ros localization uav dataset uwb-dataset gnss-denied-environments uwb-localization

uwb-drone-dataset's Introduction

UWB Localization for Autonomous UAV flight

UWB-Based System for UAV Localization in GNSS-Denied Environments: Characterization and Dataset. Jorge Peña Queralta and Carmen Martínez Almansa and Fabrizio Schiano and Dario Floreano and Tomi Westerlund. The paper is available in our website. and also in arXiv. The paper has been accepted to the 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).

If you find the code or data in this repository useful in your research, please cite our paper:

@inproceedings{queralta2020uwb,
    title={UWB-based System for UAV Localization in GNSS-Denied Environments: Characterization and Dataset},
    author={Jorge {Peña Queralta} and Carmen {Martínez Almansa} and Fabrizio Schiano and Dario Floreano and Tomi Westerlund},
    year={2020},
    booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, 
    year={2020},
    volume={},
    number={},
    pages={4521-4528},
    doi={10.1109/IROS45743.2020.9341042}}
}

Introduction

This repository contains a dataset for studying the accuracy of UWB-aided autonomous flight in UAVs, as well as ROS nodes to interface with Decawave's DWM1001 nodes when they are set as Active Tags or Passive Tags. Finally, we also provide firmware for reprogramming the DWM1001 DEV boards in order to obtain fast and accurate autopositioning of anchors.

Compared to previous datasets, this dataset contains:

  • Multiple anchor configurations
  • Study of UWB accuracy when the UAV is both inside and ouside the convex envelope defined by the anchor positions

In addition, in the paper you will find

  • Characterization of the UWB accuracy based on UAV speed, height and distance to the center of mass of the anchor system
  • Description of the different data subsets
  • Analysis of the power conssumption of the DWM1001-DEV board
  • Description of the autopositioning process for anchors (faster and more accurate than the one give by Decawave's DRTLS system)

Repository structure

The repository is divided in three main parts: ROS nodes, firmware for the DWM1001 DEV, and the dataset.

ROS NODES

Contains the dwm1001_interface ROS node that connected to Decawave's UART API. Two executables are available to read data form active or passive tags running Decawave's DRTLS firmware. The node dwm1001_active.py obtains position information of all the anchors in the DRTLS system within range, the distances to them and the tag position. The node dwm1001_passive.py gives the positions of all other active tags in the DRTLS system.

The active tags publishes anchor positions to /dwm1001/anchor/AN*/position, and its own position and distances to anchors to /dwm1001/tag/tag_name/position and /dwm1001/tag/tag_name/to/anchor/AN*/distance, respectively. The _tag_name is given as a parameter.

Please refer to the corresponding subfolder for more details.

Anchor Positioning Firmware

Contains firmware for estimating anchor positions in a fast and accurate manner (~1s and ~10cm error in LOS). The firmware itself only calculates the distances between pairs of anchors (returning the average and standard deviation of multiple measurements, by default 5 measurements are taken). The actual calculation of anchor positions must be done externally.

The firmware contains the source code for the anchor autopositioning described in the manuscript. Each anchor takes the role of initiator once, and calculates its distance with all other anchors one at a time before the next one becomes initiator. The initiator will send a frame, wait for the response from the receiver, and calculate the distance. This is done multiple times, and the average distance and standard deviation are stored. When an anchor is in responder mode, it will be waiting to receive a frame from an initiator and send the corresponding answer. Each distance is effectively calculated twice.

Calibration is necessary in order to have an accurate measurement. It can be done by adjusting the antenna delay which is hardware dependent.

Please refer to the corresponding subfolder for more details.

Dataset

The dataset has been recorded using two different methods, with rosbags being recorded either at the UAV or at a ground station. The first case includes data which has been acquired using an onboard computer on a quadrotor equipped with an active UWB tag and flying autonomously. The second case refers to data from a passive tag connected to a ground station, while the quadrotor is being flown manually. In the second case, a delay exists between the ground truth data given by the motion capture system and the UWB data due to the passive nature of the tag being used for recording the positions.

The autonomous flight tests have been done with an F450 quadrotor equipped with a Pixhawk 2.4 running the PX4 firmware, an Intel Up Board as a companion computer running Ubuntu 16.04 with ROS Kinetic and MAVROS, and a TF Mini Lidar for height estimation.

Please refer to the corresponding subfolder for more details.

Star History

Star History Chart

uwb-drone-dataset's People

Contributors

jopequ avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

uwb-drone-dataset's Issues

Custom Anchor Self-Calibration Algorithm

@jopequ In your paper, you have mentioned that you have written your own custom anchor self-calibration firmware:

However, Decawave’s function to autoposition the anchors has not given good results in our experience. Moreover, the calculation takes around 40 s, which is unassumable in some mobile settings. In order to tackle this issue, we have written our own firmware for the anchors in order to recalculate their position if they move.

which is described as follows:

During the autopositioning process, the first anchor to become an initiator, which is activated via a start command through the UART interface, is considered the origin of coordinates. Then, we assume that some information about the position of the other anchors exists. The minimum information required is to know the order of the anchors over the boundary of their convex envelope in a counter-clockwise direction. We also predefine the x axis to follow the direction of the vector that is defined from the first to the second anchor following the aforementioned order.

Do you have any additional documentation/example code related to your custom anchor self-calibration algorithm?

Testing the autopositioning firmware

Hello, I have some questions to clarify.

First, it need minimum 4 decawave dwm1001 to do the autopositioning? (1 initiator and 3 responders).
Then I need to change the my_flag to true for the initiator with the device_no 1? Then all the responders will corresponding to device no. 2-4?

I realized it is either stuck in entering rsp run or keep printing Transmission # : 4119.

Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.