DWM1001 Rotation

Hi there,

I’m starting to get into position tracking with UWB and I have on question. Is it possible to get the rotation of the tag, or only its position?



Position only with a DWM1001.

For orientation you need multiple antennas.
If you were to use DWM1003 - the decawave phase difference of arrival module, or something similar then you can in theory calculate rotation about one axis.
For rotation in multiple directions you’d need a more complex setup with more antennas, at that point it would normally be easier to just use gyros and accelerometers to calculate the rotation.

For a single antenna tag, UWB can only provide position. A multi antenna tag would be cumbersome and power hungry, so they generally don’t exist, and it isn’t trivial to convert multiple antennas to orientation in any case.

To provide orientation (which is what I think you meant by rotation), you can use an inertial sensor and some code. This requires a 9 axis inertial sensing unit, such as the Invensense (now TDK) MPU-9250 that we have on our DWTAG.


This provides 3 axis accel, gyro, and mag sensing and has a built in motion processor which outputs quaternions, a mathematical encoding of orientation without numerical gimbal lock. Quaternions can be converted to other forms of orientation representation, such as pitch, roll, heading angles.

Pitch and roll are relative to the gravity vector which is easily done and handled by the MPU motion processor. Heading is more tricky. The two best ways to reference heading are using the mag sensors, which requires calibration but will still be somewhat affected by nearby iron, or using past motion from UWB position, if your tracked object is a vehicle or some other more rigid system.

The 3 axis gyro stabilizes the system during dynamic movements and the long term averaging of the gravity vector and magnetic vector provide correction for the gyro drift. The gyro drift has been quite good in our experience, drifting only a handful of degrees in several minutes.when free running.

Our tags can be programmed to send quaternions and magnetic data out via UWB pings. This data then gets delivered to the user application. Once setup, the user application gets both location and orientation, all the data timestamped to a common time line.

Using the MPU-9250 does increase power consumption. The gyros, in particular, use significant current, about 3 mA. If your need for orientation is intermittent, you can duty cycle the inertial system to save power.

Note that the DWM1001 module has no gyro or mag sensors, only accel, so it can’t do orientation in a dynamic system. When the tag is static, not moving, the 3 axis accel can give you pitch and roll to the gravity vector, but no heading. Once the tag moves, there’s no gyro stabilization, so the accel sensors don’t accurately reflect the gravity vector any more.

I imagine it would be possible to build a DWM1001 carrier board that adds an inertial sensor capable of orientation. It will take some added code to make this all work, of course, so a bit of a project.

PS: The MPU-9250 is NRND (not recommended for new designs). The replacement is ICM-20948. The new part seems to be pretty much identical in performance with the exception that IO voltage is limited to 1.8 volts, which causes some headaches on 3.3 volt systems. Other 9 axis sensors are available by other vendors, of course, though most don’t have the built in motion processor that TDK provides.

Mike Ciholas, President, Ciholas, Inc
3700 Bell Road, Newburgh, IN 47630 USA
+1 812 962 9408