I wish i had found this a couple of months ago!
I could write this now. I went down pretty much the same path (pun intended) except I have a little more granularity in turning. I have functions for turnLeft and bearLeft for example. One thing I have found is that you can get really good relative accuracy with 2 of the same GPS units and even pretty cheap ones. My favorite now is the Pharos GPS-500 that came with Streets 2008. You can get them (currently) from a seller through Amazon for under $20 delivered in the US and you can find Streets software on eBay with the unit for less than that quite often. You have to crack open the plastic case and there are TTL leads right there. I will post a picture below of the GPS-360, which has the same pinout, wired up to an FTDI. With a little Googling, that will give you the pinout I am too lazy to document.
Anyway, with the GPS-500 under an open sky, I can get an exact hit, sort of. It will immediately get within 6’ and then when sitting still it will get just enough “chatter” to mill about and will hit the exact spot I want it to.
My main purpose for this (which I can’t get too specific about due to an NDA) is a USV and affected by wind, waves and current. One thing you have to do due to those conditions is switch to getting the course from the GPS instead of the bearing from the compass. I had to use a tilt compensated compass also.
I also have a wireless link in mine so I can keep updating it. The target may move, or I may override and drop into “traditional RC” mode.
I hope to get this working on a land based toy in the next few days to work on another wrinkle. I have a remote control for it that is also an Arduino. It has a GPS and compass in addition to a joystick. That means I can tell which way I am pointing the RC box and how far away it is. Any lights coming on?
I am also working on obstacle avoidance and rerouting. That is painful.
Hopefully one day soon the guys I am working with will get the product I mostly work on to market and I can show it off. In the mean time, I can reveal non proprietary technology. I will post my AGV toy in a few days (I hope). I only have to create the turning and driving functions for the vehicle I am getting (an ESC/Servo type, just like my main project, so it is mostly tweaking PWM values) and the brown truck is supposed to drop the toy off tomorrow.
Here is the promised picture of a GPS-360. If you get a GPS-360 or GPS-500, you crack open the plastic case and solder on the pins or just solder wires. Look up the FTDI pinout and you can tell what is what. It will spit NMEA at 4800 baud. You will like the 500 better for small robots. Both are great in motion but the 360 bounces in a wider (still small) area when still.