[GIS] How to improve positioning of images taken with GPS and Gyro info

arcmapgpsopenstreetmappython

I'm sort of 'recreating' google street view with MIT right now.

We have a car with a camera on top and we're driving at 10mph down a road. As we drive we're shooting pictures at 30fps and each photo is tagged with a timestamp. I can interpolate between images and GPS route so I can tell you the "estimated" position at which every image was taken.

However, we have some GPS errors, especially in downtown areas with multipath, etc. To take a first stab at this, we bought a better GPS unit from Trimble the Aardvark GPS + DR which is a decent GPS unit as well as a Gyro. We also tied in the wheel speed pulse to the unit so it can estimate the position of the car even if GPS drops out for a second or two. Over time though, drift occurs and it can tell us that we're 10-15 meters off the road until we get a decent GPS fix again.

We've done some basic metrics for the position, filtering out positions that have a faster than expected speed, given the previous points, and that can give me a decent guess at what parts of the route are bad.

That said, is there any way I can improve things further? I was going to do some map matching but I wonder if I should only do that in areas I decide are "bad" or if map matching is good for everything.

The real purpose of this is to be able to type in an address and pull up all images of that address. Right now we're close, but not close enough.

P.S.: Our current stack is Python, Google Maps and OSM mostly.

Best Answer

Ideally you would post process the GPS against Rinex and other POS (position data including Inertial Measurement Unit and Distance Measurement Information) data - this will refine the GPS accuracy. Where satellite reception drops out the gyro or IMU (inertial measurement unit) steps in to apply 'dead reckoning'. We use something called POSpac that takes the GPS, Rinex, IMU and DMI (distance measurement instrument) information to best position our GPS data, which we can then synchronise with the images.

Related Question