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: https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-vasisht.pdf