jonathanrjpereira / DWM1001-Real-Time-Localization-System

Anchor/Tag Configuration using Decawave DWM1000 UWB radios | Indoor Localization
GNU General Public License v3.0
39 stars 9 forks source link
anchor decawave dw1000 dwm1000 indoor-positioning localization nrf52832 rtls tag uwb

Banner

Features

This project implements the following features:

System Configuration

Anchor Configuration

Encryption, Bluetooth and GPIO LEDs are all enabled. Firmware updates and Bridge role are disabled on the anchors.

Enable Initator Role

set_a_cfg.initiator = 1

To initialise the RTLS network at least one of the anchors must be configured as an “initiator”. The initiator anchor will start and control the network and allow other anchors to join and form a network.

UWB Mode

set_a_cfg.common.uwb_mode = DWM_UWB_MODE_ACTIVE

Set the Anchor UWB Operation mode to Active.

Tag Configuration

Encryption, Bluetooth and GPIO LEDs are all enabled. Firmware updates and Low-power mode are disabled for the tag.

Update Rate Mode

set_t_cfg.stnry_en = 0

The stationary detection is disabled. This means that the tag operates in the normal update rate mode i.e. it will update distance/position values even when stationary.

If stationary detection is enabled, the tag will need to be constantly moving (to trigger the IMU) in order to update the distance/location values.

Measurement Mode

set_t_cfg.meas_mode = DWM_MEAS_MODE_TWR

Two Way Ranging (TWR) is used to measure the anchor-tag distance.

Internal Location Engine

set_t_cfg.loc_engine_en = 1

Although the Internal Location Engine is enabled, the tag's location is computed by the custom trilateration algorithm (Python script) which uses the anchor-tag distance data that is sent via UART.

Optional - One can simply use the Internal Location Engine to calculate the tag location.

UWB Mode

set_t_cfg.common.uwb_mode = DWM_UWB_MODE_ACTIVE

Set the Tag UWB Operation mode to Active.

List of Anchors in the Network

When a node is configured as an anchor, it prints over UART the following data about the surrounding anchors within the same network:

Tag Location

Real-Time Visualization

Multithreading We use the Python threading module alongwith Matplotlib animation functionality in order to speed up the real-time visualization of the tag location.

Floorplan Overlay A 1x scaled image of the floorplan / room layout can be overlayed below the anchor/tag node locations in order to provide additional spatial context.

Test Scenario