We are developing an indoor RTLS using DWM3001CDK modules with the DW3_QM33_SDK 1.1.1. We have TWR ranging working, but our application requires tracking a high and unpredictable number of concurrent tags per area, which requires TDoA rather than TWR.
Our findings so far:
All TDoA roles, ranging modes and structures (UT-Tag, UT-Anchor, DT-Anchor, DT-Tag, OWR UL-TDoA, OWR DL-TDoA) are declared in fira_helper.h, and the symbols are present in the precompiled libraries.
However, the UWB UWBMAC API document (R12.7.0) marks all of these as β[Not supported in QM33 SDK]β.
There is no TDoA example project in the SDK.
Qorvo engineering has stated on the official forum that βthe Qorvo QM33 SDK does not support TDoA use cases.β
Could you please confirm:
Is any TDoA example or reference code available for the DWM3001CDK / DWM3001C β in a newer SDK release, an application note, or on request under NDA?
If TDoA is not available in the QM33 SDK, is there a Qorvo product or kit that does provide working TDoA firmware for the DW3110 / QM33 family (for example QM33120WDK2, which lists DL-TDoA and UL-TDoA on its product page)? If so, which software package provides those modes, and is source code included?
Does any Qorvo-supplied TDoA solution include WIRELESS anchor clock synchronisation? Wired synchronisation is not feasible in our building, so this is a mandatory requirement for us.
If no Qorvo TDoA reference exists, can you confirm that a custom implementation on the raw DW3000 driver (using RX/TX timestamping and clock-offset APIs) is the only supported route, and recommend a design partner with proven UWB TDoA experience?
This directly affects our platform decision, so a clear yes/no on TDoA code availability would be very helpful.
Nothing is available from Qorvo for DWM3001C either publicly or through NDA. We do have a QM33 UT-Tag SDK available through NDA. There is also a plan through NDA to enable customers to use the QPK3000 as a UT-Tag: https://www.qorvo.com/products/p/QPK3000
On the DW3000/QM33 family, as you mentioned, the option is the QM33120WDK2 which was developed by our partner, @leapslabs. Demos possible for this kit can be found in their documentation here: Demos β LEAPS. This software is developed by LEAPS and licensing of the software can be discussed with them. We also have another partner, @mciholas, who have developed a nice solution using our UWB technology. Please review this forum post for more information: CUWB Product Launch - #3 by mciholas
The QM33120WDK2 is doing wireless clock synchronization. I believe the CUWB is doing it over Ethernet but not sure.
As nothing official is provided by Qorvo, creating a custom implementation based on the driver would be your only option. The design partners provided in #2 are 2 of our most capable partners. For additional partners, please see the site here: https://www.qorvo.com/design-hub/design-partners
MultiRange: TWR ranging with up to 15 anchors (user selectable. typically 8) at a time. Tags use ALOHA style scheduling (nominal interval is jittered to avoid lock step collisions). Capacity about 300 locates per second in one radio range bubble. Best for cases when you want the fewest anchors, and works better outside the anchor array boundary than does MultiTime. Tag battery life less due to lots of receiving at the tag. Anchors do not have to be synchronized. Naturally does spatial reuse of radio coverage.
MultiTime: UL-TDoA style location where every anchor that heard the tag is used. Tags are precisely scheduled to avoid collisions. Anchors are precisely synchronized via UWB packets between them, our system can synchronize over very large areas as one cohesive time domain. Capacity is over 3000 locates per second in one radio range, and we do have spatial reuse capability for large areas. Requires higher anchor density over MultiRange, and not as good outside the anchor boundary. Tag battery life excellent due to only having to transmit to be located.
NavMode: DL-TDoA operation where tags listen only and can compute their own location rather than at the backend. Tags are not scheduled and you can have infinite numbers of them. Tag battery life is poor, but the use case is usually being powered from the host that wants the location (robot, drone, etc). Anchors are synchronized via UWB packets between them. NavMode is due for public release by end of year. NavMode is particularly suited to drones since the UWB rules usually prohibit UWB transmission from aircraft (NavMode tags only receive and thatβs okay) and drones can be used by the the thousands.
Anchors are synchronized via UWB packets between them. Ethernet is woefully inadequate to maintain picosecond level timing that UWB needs.
We do use Ethernet timing for slot scheduling if we have two disjoint anchor arrays and we want a tag to seamlessly transition between them. The Ethernet PTP protocol keeps the two anchor arrays only a few microseconds apart and thus the tag slot in one array can also be the same slot in the next array. This provides a clean transition.
Ciholas does do custom UWB system development where you can license and incorporate our technology in your own system. There is no way you can reasonably recreate the performance and accuracy of our system on your own versus licensing it. There are a lot of folks who try since it sounds simple, but the reality is building your own ground up UWB location systems is very difficult when dealing with the real world.