GPS Guided Autonomous Rover





Introduction: GPS Guided Autonomous Rover

For a group Project we were required to build a Rover that would follow a predetermined track using GPS coordinates. Extensive details are listed in the report attached at the bottom of the page.

by Josh Berman, Terry Bugai, Kent Salmon and Mayur Chiba

exerpt from the technical report attached:


This document provides the development and implementation of a GPS (Global Positioning System) guided rover. The rover is to compete in a race on a pre-defined track consisting of vertices made up of GPS coordinates. The design is comprised of a perspex base, battery pack, servo motors, Ublox GPS module and an ATMega328 Arduino microcontroller. The microcontroller receives the input from the GPS module in string format through serial communication. This data is then sent through our path finding algorithm and the direction is calculated. The rover runs through the course with minor mishaps. Improvement recommendations include alternate algorithms and additional sensors.





    • Creative Misuse Contest

      Creative Misuse Contest
    • Oil Contest

      Oil Contest
    • Water Contest

      Water Contest

    17 Discussions

    did you use servo for controlling the motion? may i get a proper picture of the robot!

    1 reply

    which software was used to see gps and robot following the path?

    Hello could you please provide the link to the path finding algorithm? Thanks in advance!

    1 reply

    Hello could you please provide the link to the path finding algorithm? Thanks in advance!

    Hello could you please provide the link to the path finding algorithm? Thanks in advance!

    Hello could you please provide the link to the path finding algorithm? Thanks in advance!


    when loading code to arduino did not work because of error message "NMEA gps(GPRMC); //remember to download and include NMEA libry" Im using the new aurduino software version with arduino uno

    also can i used a h bridge motor controller with dc motors because I don not have servo motos


    1 reply

    have you downloaded the NMEA library and added it to the arduino library path?
    Yes you can use an h-bridge with DC motors, the setup and code will be a bit different though: instead of setting the angle of the servo you would just set the output to the motor high, something like : digitalWrite(motorpin,HIGH);
    Heres a nice tutorial to take a look at:

    Hello ! i have been looking at your arduino code for sometime and i cant seem to understand exactly where you put your destination coordinates. There also doesnt seem to any any distance calculating alograthms !!! . Can you please verify if you have attached the correct code . I shall be very thankfull

    1 reply

    The code posted above is just to get the GPS coordinates from the sensor. The path finding algorithm which was first done in Matlab and then converted to 'c' was actually not done by myself as credited earlier and hence I do not have the rights to post it. During testing our final 'c' code mostly consisted of hard coded coordinates anyway as the GPS we used was not accurate enough to position the rover on the small course.

    Thank you bluebean,

    so kind of you to make a quick response....
    but what i was hoping is, if you really point out a Microcontroller which can perform all this gps and obstacle avoiding systems on one side... and also giving a space to upgrade the robot...(like extra motors and sensors something like that)
    if you think it's too much to ask, i am extremely sorry for that... but if you can point out some specs i would be grateful....


    1 reply

    Sure no problem.
    So if i understand you correctly your looking for a type of micro that can be upgradable?

    In this instructable I used an "Arduino Uno" (rev 3) this is very easy to use and easily adaptable. If you want to buy a once off micro for many projects it might be best to go for an Arduino Mega (AT) this has 52 input output pins , 14 of which can be used as PWM outputs for servo motors. If you look at my other instructables, biped or robotic hand, ive used this micro.

    The Arduino platform is easy to use, its coded in 'c' and something like moving a servo can take 1 line of code. Search for a tutorial on google. You can also plug in sensors directly to the input output pins as some are analogue pins and you can measure the change in voltage.

    Just download the Arduino program , install drivers (which should come with the download) , plug in Arduino to the usb port (with a printer usb cable) and upload your 'sketch'.

    The reason I like Arduino is because you can code in 'c' which is easy, as aposed to mips or assembly, there are alot of tutorials on the web and there are many 'shields' which alow you to upgrade it with added features.

    Hope this is the info your after,

    hello there,

    that's a good one you have... but can you please guide me to attach some sensors to avoid obstacles with this one? please make this as a favor...i really need this buddy...

    1 reply

    The simplest form of obstacle avoidance would be to rotate the rover 90 degrees upon sensing an object, you can then add on this to manoeuvre around the object with an algorithm something like "sense object -> rotate left 90 -> drive(2 seconds) -> rotate right 90 -> rotate right 90 -> rotate left 90-> contnue driving..." this will avoid a small object.

    the sensor can be anything from a switch, which triggers the algorithm (you can use an interrupt), so when the rover bumps a wall for example, the switch is triggered.

    A light sensor is another option (something like a photodiode/photoresistor) you would need an amplifier afterwards and maybe a comparator of some sort to know when to trigger the interrupt. you can use the arduino as a comparator.

    A better and more advanced option would be to use a sonar sensor, you can buy one that plugs into the arduino, it has 2 speakers and a microphone as far as i know, it transmits the frequency and measures the rebound whereby measuring the distance of the object. Search for a tutorial on google on how to use it.

    good luck,