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.

  • 2
    Idea - get really good fixes at major intersections, and then interpolate some lines. Then you can eliminate any positions too far off those lines.
    – L_Holcombe
    Oct 23, 2012 at 22:59
  • I agree with @L_Holcombe, though it might not be at all intersections. At a minimum, every time you stop gives you an opportunity to not only firm up the return to the GPS unit, since you are at a fixed location, but you could also post-process those locations to further improve the locational accuracy. Also, if you know of an existing street layer that you might interpolate based on, that could save you a lot of time. Oct 24, 2012 at 0:29

3 Answers 3


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.


Do you have another receiver? You could try combining your Aardvark's inertial navigation with with DGPS (differential GPS). The integration with DGPS should provide an external source which can periodically correct the errors. You might need some sort of Kalman filter to combine the data.

You might want to get in touch with your Department of Earth Atmospheric and Planetary Sciences. They have a this GPS tool called GAMIT/GLOBK for analyzing GPS measurements which may or may not be helpful in your case. Either way, they should be able to help. Please do post anything you'll learn from them about this problem :)


You may want to consider Photo-Inertial Metrology technology from RealityCap. The software runs on a smartphone and can track device motion with 1-5cm resolution. It gives you relative motion only, but this can be combined with GPS to solve your problem. For instance, if you have only intermittent GPS signal (urban area, tree cover) RealityCap's software can track the device very accurately between GPS readings. See this video for a demonstration. Full disclosure: I am one of the founders.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.