The art of the possible for UWB app dev

Looking to better understand the art of the possible with these UWB modules, like the DWM1001C. I suppose I’m asking is Multiuser Simultaneous Two-Way Ranging possible?

My idea is to build a mobile app that connects to my own UWB module via bluetooth and my UWB module then will automatically connect to any new same type UWB module(s) that comes within my range. My UWB module I hope can simultaneously connect and locate all other same type UWB module(s) within my range and provide that data back to my mobile app via bluetooth to have those other UWB module(s) precise location(s). Please let me know if more clarity is needed on the setup and the idea value unlock.

Is something like this possible with the proposed setup, what challenges might I face, and what are some potential limitations with my core focus here?

So you want:

  1. a master UWB module that connects to a display device in some way (in this case bluetooth to a phone).
  2. That UWB module automatically detects other UWB modules in range and
  3. provides the other modules locations back to the display device.
  4. I assume this information is then updated at some rate until the detected device is out of range.
  5. Can do this with multiple other devices simultaneously.

1 is simple.
2 is fairly easy, there is a trade off between speed of detection and power consumption but that beyond that nothing too challenging there.

4 & 5 - both possible. There is a trade off between update rate and maximum number of devices. Higher numbers imply higher power requirements. But within limits this is possible.

The big issue is item 3 in the list. Calculating the position.
Measuring the range for each new tag to your master tag is easy. Their positions are hard.

Normal position calculation requires measuring the range from a tag to multiple fixed anchors. You can then calculate the position based on those ranges. If nothing is fixed then how do you calculate a location?
You can certainly measure how far any additional tags are from your master tag. But that doesn’t give you any locations, just ranges.
You can request the other tags to measure the ranges between themselves and forward you the results. In theory this mesh approach should work, with enough tags and enough range measurements you can calculate everyone’s location relative to the master tag.

However there are a number of issues
a) firstly this requires a minimum number of tags within range of each other.
b) too many tags and the number of measurements rapidly grows unmanageable
c) You can’t determine orientation, the whole solution could be rotated any amount around your master tag.
d) your solution could be mirror image of truth.
e) for most real world situations it simply isn’t possible to get meaningful heights from this data. If you assume a 2D fixed height solution then any height variations will introduce position errors.
f) Collecting lots of measurements takes time, if things move during this time then the results will be wrong.

I have tried using this mesh positioning approach in the past to survey in anchor locations. By giving it approximate locations (+/- 10 meters) and the heading from device 1 to device 2 as a starting point I could ensure the orientation was correct and not mirrored. Since things were static I didn’t have to worry about motion. I had a known fixed number of devices and simply give it however long it needed to run without worrying about update rate. Doing this with clear lines of sight I could could get the X/Y location for each anchor to within 5 cm of truth. But it was slow and took a fair amount of CPU power and averaging to get to that point. I didn’t consider it practical for anything other than that very controlled and static situation. And even then we have since moved away from this method as simply not being worth the effort.