revisited after 20 years! by Michael E. Holden
This is a project I did in 2002 to make an autonomous car with a single GPS sensor. No compass or IMU, and it turned out that the GPS of the day only sent updates of position, speed, and heading every 2 seconds or so. The solution was to do dead-reckoning, with an approximate turn-rate based on steering servo position and GPS speed, to keep an updated heading estimate. Rather than blend the dynamic model with the GPS sensor (e.g. a Kalman filter), I just used GPS as it came in and integrated the dynamics between fixes, which kept the math simple. There was no manual RC control option, it was only autonomous.
I built 3 different cars with this autopilot, and two different boats.
I published a paper with ASEE at the 2004 conference and it was later included in the Computers in Education Journal in 2005:
- Holden, M. “Low-Cost Autonomous Vehicles Using Just GPS”, American Society of Engineering Education general conference, Salt Lake City, Utah, June 2004
- Holden, M. “Low-Cost Autonomous Vehicles Using Just GPS”, Computers in Education Journal, American Society of Engineering, Vol XV, No. 3, July-September 2005
Here is the paper.
Historically it was before the arduino, so while it used an 8-bit Atmel processor similar to the arduino Uno, the code was written using the codevision C compiler without the help of the libraries you could easily find today for NMEA 0183 and servo signals, for example. Much of the code is the user interface; using 4 buttons and a 2 line text display, you could set waypoints by walking to them, you could edit the waypoints, edit the autopilot parameters, and it could also download a route from the handheld GPS using the NMEA 0183 protocol.
I would like to update the code for modern hardware, I think it could be useful for waypoint navigation of simple ground and water vehicles in the same way that dhremflight is for drone stabilization projects. But that project is for the future!
Here is a video (taken using a videotape camcorder and digitized at the SFSU library!) Note the lag in speed control when it hits the sidewalk- due to the slow GPS update it undershoots then overshoots. Also you can see it is following its track in the grass reliably. The paper has more data.
Bonus: I found the user’s manual! Note that all contact info is outdated.