DW3000 transmission distance

What is the maximum possible transmission distance of dw3000?

What channel? Do you need the answer in meters or feet…

Maximum possible distance is probably not a useful measure. If you are designing a system then you really want to know the maximum reliable distance.
Unfortunately it’s not so easy to say and will depend on the environment, your hardware and how you have the transmitter set up.

Channel 9, In meters

For channel 9, it is about 30-50 meters

hi,清研迅科,what about ch5?

It should be a little longer for the lower frequency.

But it depends a huge amount on antenna type, radio settings, height of antennas above the ground, physical environment…

so by using 4 anchors, and any number of tags, can you have the precise position every 30-50 mts2?
and if you want more distance, just add 4 more tags every 30-50 mts2?, Am I right or am I wrong?

Yes, by adding more anchors you can add more covered area. But there are limits to this.
The underlying technology should in theory allow you to extend it to cover any area you wanted. The limitation comes from the way anchor and tag IDs are allocated and how time is allocated and shared between devices. There will always be a trade offs between size, flexibility, update rate and complexity.
If you write your own system completely from scratch you can decide what these are, if you use an out of the box solution then you are limited by the choices they made.

We have a DW1000 based system installed that covers an area approximately 700m by 40m. It uses a reasonably large number of anchors :slight_smile:

2 Likes

Hi Andy,
How many anchors are used in the area 700mx40m you mentioned?
How may tags could be covered in 1 tags in your application roughly?

Thanks a lot for your feedback.

I think we ended up with just under 60.

How may tags could be covered in 1 tags in your application roughly?

I’m not sure what you’re asking here. We support up to 200 anchors although it would be a simple change to get that up to 245-250 if needed.
Each tag can use up to 12 anchors to calculate its position. These are picked based on the tag location with no restrictions on overlap, all tags can use the same anchors or they can all use a different set.
We only support up to 5 (8 anchor mode) or 3 (12 anchor mode) tags.

Output is position and velocity at 100 Hz per tag, calculated on the tag and output with a latency of 60ms worst case. Most of the time the position error is in the 2-3 cm region.
We deliberately limited tag count in order to improve the accuracy and update rate.

1 Like

@AndyA
Thanks a lot for giving me feedback.

How may tags could be covered in 1 tags in your application roughly?

Sorry for the typo.
How many tags could be covered in 1 anchor in your application roughly.

Output is position and velocity at 100 Hz per tag, calculated on the tag and output with a latency of 60ms worst case.

For example, in your case, velocity at 100 Hz per tag, output with a latency of 60ms worst case, and no restrictions on overlap.
How many tags could be read for each anchor / 1 second ?

Each tag can use up to 12 anchors to calculate its position.

Let’s say, if I use PDoA instead of ToF. Will I need another anchor to correct the tag position?
I am not sure the reason here to use 12 anchors to calculate a tag position.

How many tags could be covered in 1 anchor in your application roughly.

We only support up to 5 tags. There are no restrictions on which anchors a tag uses so 5 tags could use the same anchor.

How many tags could be read for each anchor / 1 second ?

It’s a DS-TWR system with measurements initiated by the tag. The anchors are passive until they receive a messages addressed to them from a tag. So the tags read the anchors rather than the anchors reading the tags.
We support up to 2400 range measurements per second split over 1-5 tags and 8 or 12 anchors. So each anchor could take part in up to 300 ranges per second (2400 / 8).

Just to clarify: the anchors have no network or other connections, they are a small box attached to a battery that’s placed in a known location. Easy and fast setup was a key requirement, the only thing either the tags or anchors need supplied is power. Two people can cover a few thousand square meters with an error of less than 10 cm in under 30 minutes from arriving on site and the system running. Calibrations to improve the accuracy and get the errors down to 2-3 cm maybe take another 30 minutes.

Let’s say, if I use PDoA instead of ToF. Will I need another anchor to correct the tag position?

I think you’re getting mixed up, TDoA will require an additional anchor since you have an additional unknown (the transmit time). PDoA is always used in addition to ToF rather than in place of it. It can be added to a TWR or a TDoA system and gives you additional information, in theory it reduces the number of anchors needed since you are getting more information per anchor.
You could in theory use just PDoA and triangulate rather than trilaterate the position, this would require the same number of anchors as TWR ToF. Getting 3D rather than 2D position would be tricky since you’d need to vary the angles of the antennas without losing too much signal due to polarisation changes.
However no one that I of know of does this. The PDoA is noisier than the time measurements and so you’d be building a more complex system to get a less accurate result. And any PDoA system would also be capable of calculating ToF so why wouldn’t you use that information.

I am not sure the reason here to use 12 anchors to calculate a tag position.

Technically you only need 3 for position. We also calculate speed and heading, by using more anchors we can calculate this on a per position basis rather than using change in position between points. This gives a lower noise solution, I checked.
So that gives us a minimum of 5, but you get dropouts and signal blockages resulting in occasional significant and obvious range errors on one anchor. By using more than the minimum you add robustness and make the solution more reliable.

So why 12 rather than 6?
Every measurement will have an error. This will be a combination of bias and random error. The bias you can calibrate out. The random error you need to live with. But the nice thing about random errors is that they average to zero, if they don’t then that is a bias not a random error. So if you measure more ranges than you need and find the best fit solution to all the data then your errors average out and you get a more accurate solution.
Yes this is more complex but processing power is cheap these days. And it’s not that complex, we can still run 100Hz output on a single core ARM M series processor with clock cycles to spare.

1 Like

Does the anchors connect to other wireless network, eg: BT or WiFi, to collect the data ?

Thanks a lot for everyone that provides any suggestion and share the experiences.

We support up to 2400 range measurements per second split over 1-5 tags and 8 or 12 anchors. So each anchor could take part in up to 300 ranges per second (2400 / 8).

I am a little confused here. The following is the anchor layout for 1800m^2 and it takes 6 anchors to cover lots tags.
But from your case, it seems like an anchor have limit to cover tags range measurements number. Do I miss anything here?
Distribution

The PDoA is noisier than the time measurements and so you’d be building a more complex system to get a less accurate result. And any PDoA system would also be capable of calculating ToF so why wouldn’t you use that information.

The following output results were what I got if I set to pdoa_mode 3.
Does r_m represent to range which is calculated from tof?
From its output, how to tell which parameters are from ToF and I could switch to ToF range if PDoA is not correct.

JS0089{"TWR": {"a16":"10AB","R":150,"T":5035,"D":64,"P":67,"P'":57,"Xcm":22,"Ycm":60,"Pdiffnm":6101257,"O":554,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 132

JS0089{"TWR": {"a16":"10AB","R":151,"T":5004,"D":61,"P":53,"P'":66,"Xcm":20,"Ycm":58,"Pdiffnm":5850636,"O":548,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 63
tofi= 135

JS0089{"TWR": {"a16":"10AB","R":152,"T":4974,"D":63,"P":42,"P'":42,"Xcm":14,"Ycm":61,"Pdiffnm":4106218,"O":545,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 60
tofi= 128

JS0089{"TWR": {"a16":"10AB","R":153,"T":5065,"D":60,"P":54,"P'":65,"Xcm":19,"Ycm":56,"Pdiffnm":5896202,"O":545,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 64
tofi= 137

JS0089{"TWR": {"a16":"10AB","R":154,"T":5035,"D":64,"P":53,"P'":55,"Xcm":19,"Ycm":61,"Pdiffnm":5325173,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 63
tofi= 135

JS0089{"TWR": {"a16":"10AB","R":155,"T":5004,"D":63,"P":41,"P'":66,"Xcm":18,"Ycm":60,"Pdiffnm":5232611,"O":545,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 63
tofi= 135

JS0089{"TWR": {"a16":"10AB","R":156,"T":5004,"D":63,"P":47,"P'":48,"Xcm":16,"Ycm":61,"Pdiffnm":4596077,"O":545,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 62
tofi= 133

JS0089{"TWR": {"a16":"10AB","R":157,"T":5035,"D":62,"P":49,"P'":60,"Xcm":18,"Ycm":59,"Pdiffnm":5353653,"O":545,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 63
tofi= 136

JS0089{"TWR": {"a16":"10AB","R":158,"T":5004,"D":63,"P":48,"P'":50,"Xcm":17,"Ycm":61,"Pdiffnm":4778351,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 63
tofi= 136

JS0089{"TWR": {"a16":"10AB","R":159,"T":5035,"D":63,"P":50,"P'":62,"Xcm":19,"Ycm":60,"Pdiffnm":5498906,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 132

JS0089{"TWR": {"a16":"10AB","R":160,"T":5035,"D":61,"P":54,"P'":51,"Xcm":17,"Ycm":59,"Pdiffnm":5104449,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 59
tofi= 127

JS0089{"TWR": {"a16":"10AB","R":161,"T":5035,"D":59,"P":43,"P'":54,"Xcm":15,"Ycm":57,"Pdiffnm":4721389,"O":551,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 132

JS0089{"TWR": {"a16":"10AB","R":162,"T":5004,"D":61,"P":51,"P'":62,"Xcm":19,"Ycm":58,"Pdiffnm":5544472,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 60
tofi= 128

JS0089{"TWR": {"a16":"10AB","R":163,"T":5035,"D":60,"P":60,"P'":61,"Xcm":19,"Ycm":56,"Pdiffnm":5948894,"O":548,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 64
tofi= 137

JS0089{"TWR": {"a16":"10AB","R":164,"T":5004,"D":64,"P":50,"P'":48,"Xcm":17,"Ycm":61,"Pdiffnm":4815373,"O":554,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 64
tofi= 138

JS0089{"TWR": {"a16":"10AB","R":165,"T":5035,"D":64,"P":65,"P'":45,"Xcm":19,"Ycm":61,"Pdiffnm":5369317,"O":527,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 66
tofi= 142

JS0089{"TWR": {"a16":"10AB","R":166,"T":5004,"D":66,"P":62,"P'":54,"Xcm":21,"Ycm":63,"Pdiffnm":5691148,"O":554,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 131

JS0089{"TWR": {"a16":"10AB","R":167,"T":5004,"D":61,"P":56,"P'":68,"Xcm":20,"Ycm":57,"Pdiffnm":6106954,"O":551,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 132

JS0089{"TWR": {"a16":"10AB","R":168,"T":5004,"D":61,"P":71,"P'":49,"Xcm":20,"Ycm":58,"Pdiffnm":5921835,"O":548,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 61
tofi= 132

JS0089{"TWR": {"a16":"10AB","R":169,"T":5065,"D":61,"P":50,"P'":56,"Xcm":17,"Ycm":59,"Pdiffnm":5152867,"O":548,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 64
tofi= 138

JS0089{"TWR": {"a16":"10AB","R":170,"T":5004,"D":64,"P":56,"P'":57,"Xcm":20,"Ycm":61,"Pdiffnm":5572955,"O":554,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 60
tofi= 129

JS0089{"TWR": {"a16":"10AB","R":171,"T":5035,"D":60,"P":64,"P'":44,"Xcm":17,"Ycm":57,"Pdiffnm":5295268,"O":557,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 60
tofi= 130

JS0089{"TWR": {"a16":"10AB","R":172,"T":5035,"D":60,"P":47,"P'":51,"Xcm":16,"Ycm":58,"Pdiffnm":4815370,"O":539,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 62
tofi= 133

JS0089{"TWR": {"a16":"10AB","R":173,"T":5035,"D":62,"P":63,"P'":56,"Xcm":20,"Ycm":58,"Pdiffnm":5844939,"O":569,"V":49152,"X":0,"Y":0,"Z":1900}}
r_m = 62
tofi= 134

No. They take power and reply to requests from tags. That’s it. All calculations are done on the tag.

1 Like

The following is the anchor layout for 1800m^2 and it takes 6 anchors to cover lots tags.
But from your case, it seems like an anchor have limit to cover tags range measurements number. Do I miss anything here?

Maybe. The system I am talking about is 100% custom built for our application. There isn’t a single line of Qorvo/Decawave code anywhere in it. If you are using a standard off the shelf system the capabilities and limitations will be very different. We specifically designed it to only support 5 tags. Adding this limit allows us to get a high update rate and not require any other radios.

Does r_m represent to range which is calculated from tof?
From its output, how to tell which parameters are from ToF and I could switch to ToF range if PDoA is not correct.

I can’t be much help when it comes to understanding the outputs of a system that I’ve never run.

1 Like

Thanks a lot indeed !!

@YCHIOT-CHINA
In your designed system, the distance @channel9 is 30~50 meter.
Is it designed by using PDoA (2 antennas) or non AoA (1 antenna with ToF)?
The chip you used back then is DW3120 for both anchor and tag?

Below table is the distance I measured by using EVB, but I am unable to get the 30~50 meter if I use EVB @channel9. Odd…