RTLS increase update rate

Hi,
I’m performing RTLS with DW1000 by using asymmetric DS-TWR scheme with 1 tag and 6 anchors, and I have to increase update rate. Leaving out specific details, I noticed the main issue causes slowdown of the system is the rapidity of re-enabling tag RX. I reduced preamble length and increased data rate according to the manual but nothing useful happens or even communication fails. I increased SPI rate as much as possible but also here communication fails if rate is too high. Moreover, double buffering might be active. I’m using a micro 168MHz cortex M3. Any insight to help me?

I know a TDOA solution might help me in achieve this, but unfortunately now I cannot apply this solution.

I fear C library I’m using is not so suitable/readable for solving my problem. Some suggestion about a good C library allowing high performance, especially high update rate?

Thank you in advance

It is possible to run TWR to a single tag at 1 kHz using a 100 MHz M3. I did that by keeping packets size to a minimum, 6.8 Mbps data and a preamble length of 64.
I never needed to use the double buffering. My SPI bus was stable up to 18 MHz so I ran it at 15.

The code for this was however all written from scratch.
The base driver is here https://os.mbed.com/users/AndyA/code/DW1000/ that version is a little old, we used mbed as a base platform for the initial proof of concept but moved away from it for the final product. That said I think the only change from that to the final product other than platform related differences was I fixed a bug which stopped the decawave sfd from working. I can probably dig that change out and update the library if needed.

I’m afraid I can’t share the actual ranging protocol, that’s a little too commercial. But it was fairly textbook, send packet, read tx timestamp. Receive packet, read rx timestamp. Do some maths on the differences in the times to get a range. Apply compensations for temperature, antenna delay and receive signal strength.

1 Like

Hi AndyA,
I’m searching on literature something called “simultaneous/concurrent ranging”, that allows to piggyback more frames in just a single one. Do you think it might be a good solution?

It shouldn’t hurt, it makes the system more efficient than making individual range measurements one at a time.

Hi,
by reducing suitably the RX buffer of tag and optimizing some parameters like those you described, and by spacing anchors suitably it might be possible to achieve ranging even without make time scheduling for anchors?