Zumo Robotics


These series of system control and programming projects were for a senior-level engineering class. In-class knowledge and theory were put to the test with hands-on application and class-wide competitions.
Each project revolved around an autonomous, Arduino controlled robot. I designed and implemented a finite state machine for each competition. I derived transfer functions and plant models. I used block diagram algebra to find characteristic equations. I implemented PID control and calculated gain values using Matlab to achieve the desired system response.
Open Loop Zumo Control




The purpose of this project was to develop and implement an open-loop control system to guide a semi-autonomous Zumo robot during a simulated emergency. The guidelines are very simple. The robot must travel a given distance with a given mass in a given time. The use of rotary encoders was prohibited so a mechanical model must be used to estimate a voltage input needed to achieve the desired results.
​
Method Overview
-
Design and implement a Finite State Machine in Arduino
-
Develop a mechanical model and transfer function using a bottom-up approach
-
Analyze recorded data to determine unknown parameters
-
Develop MatLab code to calculate necessary voltage input for a given time,
applied mass, and distance.
​
Closed Loop Zumo Control




The objective of this project was to design a path-following robot that can complete several tasks. In order to complete these tasks successfully, angle, position, and velocity controllers were designed and implemented using Arduino.
​
Method Overview
-
Design and implement a finite state machine in Arduino
-
Record data and derive linear and angular velocity transfer functions using a top-down approach in MatLab
-
Integrate velocity transfer functions to find a linear and angular position transfer function.
-
Calculate PID controller gain values to achieve desired 1st and 2nd order responses.
-
Test and troubleshoot.
Line Following Control




Project 3 involves designing several controllers and a finite state machine to allow a Zumo robot to navigate a course using line following sensors and avoid obstacles when necessary. The finite state machine and controllers were implemented in Arduino. The design process began with data acquisition to derive plant models and with initial controller design. This was followed by finite state machine implementation and eventually controller tuning, validation, and redesign.