Micro-GPS: High-Precision Localization Using Ground Texture (2018)
microgps.cs.princeton.edu
microgps.cs.princeton.edu
This reminds me of visual odometry from a backup camera, there where a bunch of papers on that subject about a decade ago. I don't know if it was ever used in practice, I suspect dead reckoning from accelerometers and gyros combined with map data is good enough in tunnels and other short term GPS denied environments.
The advantage of a photo survey is that you can do it with the bot hardware (as in fact they do here; they dragged it around but I don't see why you couldn't do random-walk to cover an area), so setup cost should be relatively constrained. Computationally you're not exactly breaking the bank either - it's running at 4fps on an Nvidia Jetson TX1, which I suspect is overkill.
Also if you pick up a mouse and place it at a different spot on a surface, the mouse won't be able to register what happened.
Whereas this research project actually accomplishes that, you place your camera anywhere on a previously scanned/mapped surface, the software will instantaneously tell where you are.
So the difference: a mouse only tracks movement by relative changes. This project maps a texture onto a globally known map and calculates an absolute location.
FAA was investing heavily into this iirc, https://en.wikipedia.org/wiki/Local-area_augmentation_system
Here they used an optical flow sensor for obstacle avoidance in a canyon. The closer to one side you got the faster the terrain would pass by the sensor. Allowing the UAV to self correct.
See the last two pages: https://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=...
Interesting approach. I wonder how large the map data is per square meter/foot?
for large scale 3d navigation, this approach is what we do, use a rough GPS location to cut down the search area. This was because we were using a stateless system. Its much more efficient to have a "rough localizer" to find that first fix, the optimise map loading based on current precise position and likely heading.
On this system smaller system, once you have found your initial position (which will at worse require you to go through the entire DB once) you can keep most things on disk and selectively load your active area (the maximum possible travel time + load time + fudge factor.)
Compared to doing this for photos of buildings its simpler, as you know what direction the camera is pointing. This means instead of having to reconstruct a 3d point cloud, you can just keep a 2d image and have done with it. So at worst you'll need to keep an image of the entire area you want to position against on disk.
But, you shouldn't need to keep it all in ram. as you're not flying, you can make the assumption that you're never going to jump from one corner of the place to another. So you can have you current location and an area big enough to buffer against SSD access.
update
They have photographed the floor, and pre-computed a map by extracting SIFT descriptors, which from memory are 128*32bits. They throw most of these descriptors away and keep only ~50 per "image". To answer your question directly, an entire warehouse would probably be less than 1 gigabyte.
I’d have to consider the pros and cons of this and BLE 5.1/5.2 that adds a location awareness feature to the very inexpensive wireless standard.
The obvious con is you need to scan the floor.
This would be an optical mouse that moves the cursor even if you lift it up and put down somewhere else.