We have a custom board for TWR ranging with DW1000 and we require an accuracy of 10cm for our localization system. According to our understanding, we will have to do antenna delay calibration to achieve this accuracy level. We have refered to APS014. Is it possible to use (TREK1000) as a reference device with known delay to calibrate the rest of our devices using the method specified in Section 2.3.2 of APS014 ?
I can’t think of any reason why that wouldn’t work as long as you are confident in the calibration of the TREK1000.
After calibrating two of your new units that way I would verify that you get the expected value measuring between those two units.
Personally when unsure I much prefer setting up 3 units in a triangle and calibrating all 3 at once. It avoids the assumption that any of them are correct. But it does require a lot more space.
@AndyA Do you have example code that I could reference in order to set up 3 units in a triangle and calibrating all 3 at once.?
Sorry, no firmware I can share, it’s all our own code for a commercial product.
All you need in terms of unit firmware is the ability to range between any pair of radios. The rest is just calculations that you can do on a PC. The decawave application notes give details of the maths.
On my system I did add an extra command I called RemoteRangeRequest, this allowed unit A to send a request to unit B that it measures its range to unit C a fixed number of times and then return the average result to unit A. By implementing that I can collect calibration information from any number of units while only connecting directly to one (assuming thigs are in range obviously).
@AndyA I have a few additional questions related to RemoteRangeRequest:
- Did you use the PANS API to implement this functionality?
- How did you send the request from one node to another? Did you use the PANS API to send a message from one node to another?
- Once unit B receives the request from unit A, does unit B stop acting as a responder and switch to an initiator?
Questions related to PANS API:
dwm_loc_get: Get last distances to the anchors (tag is currently ranging to) and the associated position.
- Does this mean that in order to use this function, the node needs to be configured as a Tag?
- Can I use this function on a Tag to only return the distance measurements to specific Anchor within it’s range?
By “It’s all our own code” I mean it’s not PANS, the protocol and packet structure is entirely custom and there isn’t a single line of decawave sample code anywhere in the project.
So to answer your questions:
- Via a UWB packet with the appropriate structure as defined by our protocol
- Yes. Every node in the system is able to both initiate and respond to requests. The only difference between tags and anchors in our code base is that a tag in normal operating mode initiates ranges, an anchor doesn’t.
- No idea, I have never used PANS.
To answer your next question, why did we do it that way rather than use PANS? So that I can get 2400 two way range measurements per second.
Hi Andy. You mentioned that you can get 2400 two-way ranging measurements per second. Is this for one node or for a bunch of nodes? Also, I understand you didn’t use PANS, but are you not using DecaDriver API either? Thanks in advance.
That is a single tag to multiple anchors. We currently run either 8 anchors at 300 Hz or 12 at 200 Hz depending on the use case.
An older version of our protocol ran 800 Hz point to point, if I applied some of the tricks we used for the updated system I could probably get that up to around 1500 Hz.
No decawave code anywhere in the system, the device driver and all of the protocol layers were written from scratch.