Enhancing DWM1001-DEV Module Performance with an Omnidirectional Antenna

Hi.
I’m currently starting to work on a project using 6 DWM1001-DEV modules as anchors, 1 as tag (added on a drone) and another one as a gateway. Basically I want to implement two methods of localization (TDoA / SDS-TWR) and compare the results with each other. Therefore, I wonder if I can add an external omnidirectional antenna to the board and if it would improve the performance of the system.

I have developed algorithms for each method and would appreciate feedback from experts to refine my work. If anyone is willing to review my algorithms and provide their insights, I would be very grateful.

TDoA:

  1. Tag Broadcasting: The tag periodically broadcasts a synchronization message, containing a unique identifier and a timestamp.
  2. Anchor Reception: Multiple anchor nodes receive the synchronization message and record their respective timestamps.
  3. TDoA Calculation: Each anchor calculates the time difference (TDoA) between its timestamp and the tag’s timestamp.
  4. TDoA Transmission: Each anchor transmits its calculated TDoA measurement to the tag.
  5. Localization Computation: The tag receives the TDoA measurements from all participating anchors and utilizes them to estimate its position using a multilateration algorithm such as the following one (which uses a system of non-linear equations, where each represent a hyperboloid in 3D, the intersection of these hyperboloids will result in the possible coordinates of the tag):

Where Xr, Yr, Zr are the coordinates of the tag and (x1,y1,z1) are the coordinates of each anchor. Is this solution feasible or should I change it to another multilateration method?

SDS-TWR:

Now about the Symmetric-Double-Sided TWR, I’m not really sure about this one because of the 3 messages approach. Since I want the position to be computed on the tags, this approach (3 msgs) would start with the tag sending a sync message to the anchor, which then responds back with an acknowledgment to the tag. Then the tag would send a final message back to the anchor. This aditional message would allow for compensation of clock drifts and other timing errors, enabling higher accuracy according to some articles.

The problem is that one of the requirements is the tag knowing it’s own position, which then it would feedback to the drone. I guess the only way would be sending another message back to the tag, but at what cost in computation? The number of messages being 1+3n, where n is the number of anchors. Basically I wonder if this a feasable solution also, or if it would be better to try and implement the conventional TWR for comparison.

Thanks in advance for the help.