cliansang / uwb-tracking-ros

This repo demonstrates the tracking scenario for UWB Localization in ROS using the Decawave's TREK1000 (EVK1000 Evaluation Kits) and MDEK 1001 (DWM1001-DEV boards).
MIT License
33 stars 9 forks source link
decawave dwm1001 mdek1001 ros ros-noetic trek1000 ultra-wideband uwb uwb-localization uwb-positioning uwb-tracking

ROS Interface for the UWB Tracking Demos of Decawave's MDEK1001 and TREK1000 Kits

This repo extends the ROS interfaces for the Ultra-Wideband (UWB) Real Time Locatin System (RTLS) demo of Decawave's MDEK1001 Dev-boards provided by TIERS and Mub @20chix for the purpose of tracking and visualizing multiple tags in ROS environment. Additionally, we added the Kalman filter on top of the previous works to smoothen the positioning data from the UWB device before sending them as ROS topics. Moreover, we provide the ROS interface for the UWB tracking demo based on TREK1000/EVK1000 Dev-boards, which we wrote it from scratch, in this repo. The code has been tested under Ubuntu 20.04 LTS with ROS Noetic Ninjemys distribution. It should be noted that this is a work-in-progress research repo and some parts are still in developing states.

This project has been originated as a supplementary sub-project for CITrack in Cognitronics and Sensor Systems Research Group, CITEC, Bielefeld University.

Updates as of 23.10.2024

For the ROS2 use case of this repository, please refer to this link, provided and tested by Lauritz. For any further inquiries about ROS2, please address them on that repository.

Setups and Installation

DWM1001/MDEK1001 Setup

TREK1000/EVK1000 Setup

Installation

Clone this repo into your catkin workspace and install the dependencies if required

rosdep install --from-paths src --ignore-src -r -y
pip install pyserial
pip install numpy

Build the workspace:

cd ~/<your_catkin_workspace>
catkin_make 

Then, run the respetive launch file.

roslaunch <your_ros_package>/ <your_launch_file>

For instance, run the following launch file for the DWM1001 multiple tags tracking scenario:

roslaunch uwb_tracking_ros uwb_tracking_dwm1001.launch

Getting Started

For DWM1001/MDEK1001

Follow the steps in Decawave's DRTLS Guide to setup a Real Time Location System (RTLS) system with at least 3 anchors and 1 active node using DWM1001-dev board ( in our case, we use MDEK1001 hardware setup). An android phone or a tablet is required to set-up the RTLS using DRTLS andriod app.

The UWB node can be set-up as an anchor, a tag, and listener modes. This repo requires the listener node (or) gateway node to be attached into the PC or remote machine where ROS is running. The task of the listener node is echoing the positioning data of tags that it has heard. Only position data (x, y, z) of the tags in 3D are able to process via listener node (i.e., the ranging data are not available). To set-up the node as a listener, simply switch the dedicated UWB node to a 'passive' mode in the Decawave's RTLS app.

The update rate of the tag's position can be adjusted within the Decawave's app. However, we recommend setting the update rate to 10 Hz (100 ms).

The following is a sample visualization screenshot of two tags on rviz in 3D rviz_uwb_sample

For TREK1000/EVK1000

Follow the set-up instructions given for TREK1000 by Decawave. Then, connect the coordinator node (i.e., Anchor 0 in TREK1000) into your machine where ROS is availalbe via USB port. Run the launch file related to TREK1000 from this repo and process further as your requirments. It should be noted that the tag node can also be connected into the your machine. In this case, the scenario will be for navigation or self-navigation purpose where the positioning data is available to the moving tag.