Done. Done. Here is what I have learned. Compasses are great, just great --I am using a HMC6352 (because of a kind LMR brotha) and it simply puts out good clean data with very little flutter. HOWEVER... I have quickly discovered that these compasses do not like magnets --or to the point, they like them way too much! I had to remove my big-ass speakers from the room as the the big magnets on the woofers were throwing things off. With them removed and a quick calibration routine I am getting solid numbers each time. This leads to the second issue I had --My drive system is not quite as accurate as the compass numbers are. As many people know, Walter uses 2 DeWalt drill motors for locomotion through a chain-drive. The chains are not taught, nor should they be and this leaves a little slop in terms of what the encoders counted vs. how much the wheels actually turned. --I can loose or gain up to 4 counts when the motors stop and start --this can be almost 5% if you work it out. In addition, my encoders read actual marks on the wheels, not the motors so the count is done after the final gearing instead of counting the turns of the motors which would be a much more refined count. I have a total of 48 marks on the wheels which equals 96 edges or white/black "changes" so if I need to make a very small change, say one or two compass degrees, it can be sorta hard. Never the less, I have fudged everything, added "rechecks" to the code, and all-for-all I have a working proof of concept.
The video should explain it all.
https://www.youtube.com/watch?v=O21hYDNfNt4