Embedded Systems Robot

This is the start of a series of posts where I will write about past projects that I have worked on both through school and though my own free time.

I thought I would start with the final project from one of my favorite classes, Embedded Systems.  The structure for the labs in this class was really well done, where each lab gave my group experience working with each element of what would become our final project.

The robot we worked with was an iRobot Create with a custom microcontroller board developed at Iowa State University.  The iRobot was controlled by an ATMEL ATMega128 AVR processor.  The robot was coded by flashing C code to the processor with an AVRISP module.

Throughout the semester we learned how to use the features of the AVR processor to work with various components.  Some examples for our labs included controlling the movement of the roomba, controlling a servo with PWM, reading data from both an ultrasonic & infrared range finder, and communicating with serial over Bluetooth.  Most of our knowledge of the ATMega128 processor’s functions came from reading the processor’s datasheet, while the lectures discussed concepts, like how PWM works.

Completing all of our labs led us to our final project, which was to make the iRobot remotely traverse an obstacle course to park in a specific square area.  Our group was forbidden from looking at the course before the robot was placed in a random spot on the course.  Our only way to navigate the robot was by using the various on-board sensors.  One of the members in our group developed a custom GUI through visual studio that handled displaying the data collected from the robot.  The client interface also allowed us to control the robot with an Xbox 360 controller.  At the bottom of this post is a short video of our robot in action.