Combining Multiple Anchors around area, and then 2 Tags on Robot


I currently have working 4 DW1000s with each connected to an ESP32, 3 anchors and 1 tag. The all work well to discover the location of the tag using a main gateway anchor.

I have another 4 DW1000 that I would like to add to the system. So I was wondering if anyone has figured out a way to use the following configuration.

On my rectangular robot I would like to place 2 DW1000 tags (both with their own ID sent in message), one on each diametric corner - two in total.

I then would have 6 DW1000 configured as anchors all sending requests to ping the tags and find where both tags are. The reason for so many anchors is to make sure the robot has coverage in each room, the anchors dont seem capable of going through walls very well. So as the robot moves around, the anchors come into and out of range, meaning at any one time there may be none or more anchors within range. For when there are less than 3, just for now at least, I can just ignore the location acquisition and switch to image recognition etc. for location. Or is there a way to get the location of a tag with only 2 anchors ?

The idea is that all anchors ping the 2 tags on the robot, and that a central system (without any DW1000), receives the distances between the anchors to the 2 tags, and the distance of each tag is sent to the robot. A main location processor will probably be a MCU with an FPU (floating point), on the robot as well eventually.

Some questions

  1. Do the DW1000s handle traffic collisions etc. Or will sending all these messages unsynchronized cause any corruption/errors ? If I do have to synchronize ie send one message at a time from each anchor, is there a good way to do this ?

  2. If I get data from more than 3 anchors what’s the best (most accurate/least errors), way to process the location if I only need the data from 3 ? Do I pick the 3 nearest anchors and ignore the rest, or can I use data from more than 3 anchors to get a more accurate location ?

If anyone has created/used a system like this can they discuss it, and perhaps tell of any pitfalls I might encounter.

  1. Yes you do need to worry about collisions. Some form of TDMA is generally your best solution.

  2. A least squares optimisation works well, it will degrade gracefully from as many anchors as you can give it down to 3.
    If you constrain the solution to 2D only then it may be possible to run down to 2 anchors. For least squares you use the previous solution as a starting point so as long as you 1) start with 3 or more anchors and 2) when using 2 don’t pass close to being in line with the two anchors you should be able to maintain a solution. The accuracy will be worse but it’ll be better than nothing.

Obviously my preferred solution would be that you buy our system (message me if that’s an option and I’ll send you details) but we do charge a fair amount for it. We give 100Hz position and velocity output with inertial integration. Up to 5 tags are supported at a time.

We handle the time sharing by having the tag run the ranging process not the anchors, that reduces the number of devices that need to worry about the time. The location is then calculated on the tag which eliminates the need for a separate computer and data link back to the mobile device. This method also gives us a low and more deterministic latency in the position output.
When using multiple tags they are each assigned a time window, they listen in on the other tags transmissions to work out where the system is in its cycle and synchronise themselves that way. This eliminates the need for a master time source.

We use up to 12 anchors at a time to give a more accurate position, which 12 out of up to 200 are used is based on the current tag location. Passing through a doorway you get a slight wobble in position as it switches anchors from one room to the other but it’s normally only a few cm which the inertial integration takes care of.

Basic tips:
Yes, time synchronise things.
Use as many anchors as you can but have a way of knowing which ones to use at any given time so you don’t try to use ones that are obscured.
Set up accuracy and geometry is critical to good operation. All the anchors on one side of the tag or having their locations wrong will ruin your accuracy.
If you are traveling at anything above a slow walking speed then watch out for how old your measurements are. If each range is measured at a different time and you’re moving then you position will be wrong. How wrong will depend on speed and your measurement speed.
You want to measure as fast as possible, a lot of the small errors average out, the occasional large error is obvious if you have enough data. If you can run an averaging system with outlier detection & rejection on each anchors range then your final position will be far lower noise. Of course simple averaging will cause other issues if you’re moving at any significant speed but that’s another issue which I can’t share our solution to.

1 Like