ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Spooky Wi-Fi geolocation node for ROS2. Acts like a GPS when you don't have one

Hi everyone,
I made a spooky ROS2 node that geolocates a device and publishes a NavSatFix when you don’t have a hardware GPS. It requires either “nmcli” or “iwlist” to be installed to do a Wi-Fi scan, can use either the free Mozilla API or paid Google API, and could also potentially be used as a fallback for when you are under a structure and GPS doesn’t work.

Please use free APIs responsibly; it is not intended for high frequency updates.


Very cool Dheera! Does the module also allow learning new, custom wifi maps and using them to locate inside buildings? That could be very useful in many applications, especially multi-floor applications.

This does not allow learning new wifi maps, it just uses the Mozilla/Google API, although Mozilla/Google do learn about new Wi-Fi access points over time, especially Google if you walk around with an mobile phone that sends back GPS+Wi-Fi data automatically.

As for a custom Wi-Fi map, that’s definitely a cool idea, I’ve actually done that many years ago at MIT in dorms that have a ton of access points, and the nice thing about that is that it can work entirely offline as long as the robot has Wi-Fi hardware. I’ll think about re-doing that at some point since that was before ROS and neural net frameworks were popular, which could simplify the implementation a lot.

One idea I have is to take an input ground truth /odom topic, have an output /odom_estimate topic, and then if /odom is publishing, pass it through to /odom_estimate while also continually training a very simple and lightweight network in PyTorch to spit out a location given the /odom and a Wi-Fi scan. If the /odom topic stops publishing, then just evaluate the network on the Wi-Fi scan and publish the /odom_estimate.

On a side note some people at MIT and CMU did centimeter-level localization with Wi-Fi and some kernel/driver hacking to extract time-of-flight information of the Wi-Fi signal: