Autonomous GPS Robot

Coursework | ECE 372A

This was a project I did along with two other team members for an embedded systems course I took in my second semester of Junior year (Spring 2022) at the University of Arizona. Our main goal was to make a robot that can follow a user and/or travel short distances based on GPS coordinates it is given from a mobile phone connected via bluetooth.

We had a number of sensors onboard the robot including a GPS module, accelerometer, magnetometer, bluetooth transmitter and receiver. We also had four DC motors connected to a 12V battery and a motor driver. Everything was mounted on a plastic chassis with screws and hot glue holding the components in place.

Some image

Demo

The two videos above show the two functionalities we built the robot for, one is the ability to follow a connected mobile phone and the other is to go to a specific GPS coordinate. Since it has a built-in magnetometer, it is able turn based on given headings and bearings.

Description

We used an Arduino MEGA as the brains of the system. The robot uses I2C Protocol to communicate with the GPS Module, accelerometer and magnetometer and RS232 to communicate with an external bluetooth device. We wrote an algorithm that takes the robot’s current GPS coordinates, the GPS coordinates of the connected device and uses the onboard magnetometer and accelerometer to determine the current heading, bearing and distance it needs to travel. It turns by compensating speed between the left and right motor pairs and starts to slow down when it knows it is within a certain range of the destination.

Apart from writing the code that powers the navigation, we also had to construct the chassis properly to account for various aspects. The motors needed to be mounted precisely so that the speed would be identical since we a using speed to turn and navigate. The chassis had to be built with light-weight parts and the weight of the individual parts had to be balanced across the base of the robot to divide the stress on all the axles evenly. We tested different batteries and chose a 12V 2200 mAh battery for the high voltage system that powered the motors and a small USB power source for the low voltage system powering the Arduino and all the sensors.

If you want look into the project in greater detail please click on the link to the presentation we created for our performance evaluation as well as the Github link for the Code.

Presentation Code