/uwb_init

UWB anchors initialization procedure C++ Library and ROS1 wrapper

Primary LanguageC++

UWB initialization library ROS wrapper

A ROS1 workspace to use the UWB initialization library explained in the paper UVIO: An UWB-Aided Visual-Inertial Odometry Framework with Bias-Compensated Anchors Initialization (https://arxiv.org/abs/2308.00513).

Maintainers: Giulio Delama and Alessandro Fornasier

Credit

This code was written by the Control of Networked System (CNS), University of Klagenfurt, Klagenfurt, Austria.

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 the corresponding academic paper and consult the LICENSE file for a detailed explanation.

@inproceedings{Delama2023,
   author       = {Delama, Giulio and Shamsfakhr, Farhad and Weiss, Stephan and Fontanelli, Daniele and Fornasier, Alessandro},
   booktitle    = {2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
   title        = {UVIO: An UWB-Aided Visual-Inertial Odometry Framework with Bias-Compensated Anchors Initialization},
   year         = {2023},
  organization  = {IEEE}
}

Getting Started

The main folder constains the C++ library and its ROS wrapper.

Requirements

These software components are needed on your platform to run the ROS node.

Prerequisites

  1. Create a catkin workspace and install catkin_tools
    mkdir -p catkin_ws/src && cd catkin_ws
    sudo apt update && sudo apt install -y python3-catkin-tools
    catkin init
    catkin config --extend /opt/ros/$(rosversion -d) --cmake-args -DCMAKE_BUILD_TYPE=Release -j4 -l4
    
  2. Clone the required ROS packeges to your workspace
    cd src
    git clone git@gitlab.aau.at:aau-cns/ros_pkgs/mdek_uwb_driver.git
    git clone git@gitlab.aau.at:aau-cns/ros_pkgs/amaze_mission_sequencer.git
    git clone git@gitlab.aau.at:aau-cns/ros_pkgs/uwb_init_cpp.git
    

Build

  1. Compile using catkin build:
    cd catkin_ws/src && catkin build uwb_init_ros
    
  2. (not required) The C++ stand-alone library can also be builded and installed with:
    cd uwb_init_lib
    mkdir build && cd build
    cmake ../
    cmake --build .
    sudo cmake --install .
    
    
    

Usage

The objective is to initialize a set of unknown UWB anchors. To understand the motivation and the detailed initialization procedure please refer to the academic paper.

The rosnode can be launched with the provided launchfile by running

roslaunch uwb_init_ros uwb_init.launch

The initialization can be performed by calling the following ros services:

  1. Start collecting measurements (poses and UWB ranges)
rosservice call uwb_init_ros/start "{}"
  1. Initialize UWB anchors (after first flight)
rosservice call uwb_init_ros/initialize "{}"
  1. (optional) Compute optimal waypoints
rosservice call uwb_init_ros/compute_wps "{}"
  1. (optional) Perform a flight through the waypoints (start collecting data with 1. before flying) and refine previous initialization
rosservice call uwb_init_ros/refine "{}"

Launch Parameters

The provided launchfile and node allows the setting of the following parameters. Each of these parameters can either be set in the launchfile, set through other launchfiles by using the <include> and <arg> tags, or set through the command line with roslaunch uwb_init_ros uwb_init.launch <PARAMETER>:=<VALUE>.

ROS Topics and Services

ROS parameter description default value
estimated_pose_topic name of the pose topic used for anchor initialization /uvio/poseimu
uwb_range_topic name of the uwb topic used for anchor initialization /uwb_driver_node/uwb
uwb_anchors_topic name of the topic used to publish the anchors after initialization ~uwb_anchors
waypoints_topic name of topic used to publish the generated optimal waypoints ~wps

Reporting Issues

In case of issues, feature requests, or other questions please open a New Issue or contact the authors via email.

Authors

  • Giulio Delama (email)
  • Alessandro Fornasier (email)
  • Martin Scheiber (email)