3D Robotics
Our alpha ArduPilot code has an okay GPS parser, but like all of them based on ASCII NMEA sentences, it's slow and doesn't handle errors (corrupted data) very well. We've now done a lot better. Here's Jordi's new Arduino GPS parser, which will be in the next version of the ArduPilot code and has the following features: --Reads the data in Sirf 3 binary mode, not ASCII NMEA sentences. --Autoconfigures your GPS module to go into binary mode. --Parses the GPS data and stores it in variables, including conversion to decimal degrees for gps data, and other stuff such as GPS status, lat, lon, MSL altitude, heading, speed over ground, and climb rate... --Super fast decoding and transmission at 57600 bps... --100% Checksum verification.. --Status LED, connected directly to the GPS fix status.. --More or less commented ;-) You can download the code and run and test it now, or integrate it into your own projects. Lots more cool improvements coming to the ArduPilot code, including better navigation routines and interrupt-driven RC channel reading. We've still got some work to do on the boards (the current one has got a problem with noise and current fluctuations when we're moving the servos, so we've got to add some diodes and capacitors), but we're getting there. Still on track for a September release, one way or another.
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • I am getting the same message.  Anyone have any ideas?


  • Could you please check the file? No matter what I do I have "Access Denied" error. It would be great to have access to this tool.

    Thank you


  • 3D Robotics
    We did use it for a while, and it had the additional advantage of smaller code size, buy at a coat of being locked to a single model of GPS. So we returned to NMEA parsing, which is universal, and tried to make it effecient enough to work at any speed with a small code size and minimal processor overhead.

    If you want our binary mode code you can search here and find the post with the code.
  • Is this binary parser going to be ever used in ArduPilot code?
    Its disadvantage is that GPS also needs to receive data over serial (not only send it), so
    1) configuring the GPS may interfere with other use of serial OUT (e.g. for telemetry/logging)
    2) you need 4 wires to connect the GPS, not 3 as discussed here
  • 3D Robotics
    @Peter. Less processor overhead is the main reason. We're trying to save as many cycles as we can, and ASCII parsing takes time.
  • Seems to me that using SiRF binary protocol does not offer much over NMEA, the check sum of the binary message is 15 bits vs 8 bits for NMEA message check sum (and is not a CRC), although because the NMEA message is all ASCII this is another check. NMEA has similar start and end characters.

    Why is the increased speed needed (57600) an advantage? You get enough NMEA messages from a GPS at 4800 bps to tell where you are with 1 second updates.

    Ths SiRF binary protocol locks you into SiRF gps's, all binary protocols are different, Garmin, Motorola, UBlox Trimble etc, why not stick to NMEA which most gps's output?
  • 3D Robotics

    I'm afraid I don't know. We don't have one of those to test.
  • Hi Chris,
    Do you know if the U-blox LEA-5H will work with the Sirf 3 binary mode parser in the ArdunoPilot code, it seems to me it's got
    it's own Binary Protocol.
  • 3D Robotics
    Sorry dincer, we're working hard to make these boards as reliable as possible before we offer them for sale. In the meantime you can always run the code on a decimila or proto board.
  • thx Chris,
    we appreciate your and jordi's efforts very much... i was hoping to make the first working member board... sigh... all my components are ready and waiting for the board this week to arrive. i was anxious to solder it at once and test the pre-alpha code... yours is bad news for me... :(
This reply was deleted.