DWM3000 Collison avoidance on low power anchor system

Hi All

We are currently using the DWM3000 modules on our rover and anchor products and have run into some issues when multiple rovers attempt to range to an anchor.

For our system the anchor periodically (~500ms) broadcasts a poll message to start a ranging transaction with all rovers in reception range. The anchor receiver is then turned on for a fixed period of time (this time encompasses a fixed number of timeslots). Rovers then choose a randomly selected timeslot and send a reply to the anchor. The anchor then collects all responses during reception and then broadcasts a final ranging message that anchors use to compute the distance to the anchor. Thus pretty standard three way ranging I believe.

The issue we have found stems from the fact that it appears from testing that when two (or more) rovers attempt to select the same timeslot to send a reply to the initial anchor poll message. What we have observed from testing is that when two rovers select the same timeslot, one of the rovers generally is able to perform a successful ranging transaction, HOWEVER the range computed is often inaccurate. The inaccuracy is sadly not large enough to simply identify and discard due to the slower polling rate but big enough to require significant filtering to smooth out. Therefore gathering enough data points for sufficient smoothing renders the response time of the system near unusable.

The simple conclusion would have been to simply increase the polling rate to have enough samples for smoothing, however this is not feasible as the anchors are battery powered and need to last a set amount of time (thus the 500ms polling time was required).

A collision detection mechanism would be preferred as discarding a measurement taken with a collision present then would work rather well in our case.

A last resort could also be to use a different form of wireless communication (we do have another available) to pre-emptively assign timeslots to rovers. This implementation is something we would actively try to avoid though.

Any thoughts or suggestions would be much appreciated!