Posted by Holt Cutler on November 3, 2009 at 7:50am
I'm working with a group that is equipping an RC airplane to fly autonomously. It is our first attempt, so there are a few things we do not have a good concept of yet.At the moment, we are focusing on integrating our GPS component and enabling communication with our microcontroller. We have found some good pieces of code to read the NMEA sentences, but we do not understand Checksum.Why is checksum necessary, and what is the checksum number (i.e. "*28") telling us? Any other advice on getting started with NMEA 0183 would also be appreciatedHolt
You need to be a member of diydrones to add comments!
If your GPS module has a binary mode you can avoid NMEA entirely and make your life a lot easier, as we do with ArduPilot and the EM406 and uBlox binary modes. BTW, what features in the existing open source (or commercial) autopilots were missing for you, such that you decided to roll your own? It's a non-trivial task, as you've already found....
Think of all the conditioning in the autopilot code you would need to make sure that the GPS data is valid. If your GPS had a bad value (which happens) your code may react in a way that was not intended since you probably weren't expecting it to happen during development. The checksum is a simple way to avoid all the conditions in your code. Like Jason said, its just a simple sum to determine if the output is the same on both sides.
The checksum means the vAlues have been read correctly from your GPS. The modual sums them and you sum them and then you compare the sum. A bad gps value could cause an error in your nav equations sending your plane into the ground.
Replies