Indoor localization for autonomous robots, using ESP32_UWB (DW1000) modules

Hi, All:

I think it is safe to say that everyone wants their robot to know where it is and where it is headed, without human input. Companies like Pozyx offer systems to do this. They work well, and are even Arduino-compatible, but are prohibitively expensive for hobbyists.

Several years ago, Decawave announced inexpensive ($20), ultra wide band 3-6 GHz transceiver modules capable of indoor ranging with +/- 10 cm accuracy, but they are very complex devices and are difficult to program.

Although a DW1000 Arduino library has been developed, to date, I’ve seen only one ranging example suitable for hobby applications, and none that are capable of true indoor localization, i.e. accurately and unambiguously determining the (x, y) or (x, y, z) position of a tag.

Recently, Makerfabs began offering a small ESP32 bluetooth/WiFi development board with a clone or close relative of the DW1000 module:

Four of these form the minimum setup required to do true 2D indoor localization on the scale of a large room (five or more are better: four anchors and a tag can accurately report a robot’s position in 2D or 3D). So, a few weeks ago, I sent off for five ESP32_UWB modules. I am delighted with their build quality and ease of use.

I’ve done the work required to demonstrate a complete system for indoor localization and tracking. I demonstrate that it is capable of localizing a tag to +/- 10 cm accuracy, anywhere in a large (say, 10m x 10m) room and possibly quite a bit larger.

I don’t have a video demonstrating the operation, but all the important details, including source code, test code and test results are posted on my Github site:

There is plenty of work to do, so I look forward to seeing efforts to repeat the work and welcome comments and suggestions. I would also welcome efforts to advance the technology from the application code perspective.

1 Like

Watched the video. Is it somehow better than the traditional gyros (like MPU-6050) that we use? Does it provide better accuracy?