Roll your own NMEA parser or use an open source GPS parser?

Adam Davis picture Adam Davis · Feb 25, 2009 · Viewed 9.3k times · Source

I do a lot of location aware computing, often incorporating GPS. I have my own little simple NMEA parser that doesn't do anything special - just transforms the GPS specific sentences into usable numbers, flags, and so forth.

However, there is a lot of active development done on projects such as GPSD and Gypsy. If GPS were a simple matter, the projects would have finished long ago and simply gone into maintenance mode.

  • What do they know/do that I don't know about, and therefore my code doesn't account for?

Answer

Adam Davis picture Adam Davis · Feb 25, 2009

From an excellent article by the GPSD lead:

  • NMEA standard doesn't provide a full TPV (time, position, velocity) tuple with error, geoid and magnetic variation, etc
  • Since different values are in different sentences, and there's no defined order you can't easily know which velocity goes with which position report
  • Some values are not given in full (ie, year is two digits on the more common and avilable sentences)
  • No standardized way to determine vendor, model, firmware
  • No standardized way to change settings (communications speed, sentences reported, samples per second, etc)
  • Incompatible binary protocols for advanced usage and faster reporting
  • Due to interesting race conditions for USB to serial bridges and bluetooth to serial bridges, changing the speed is a very tricky problem

-Adam